blob: 4c28b28337f43efa9a64c258c1ba79e0ba1398ff [file] [log] [blame]
Tony Linthicum1213a7a2011-12-12 21:14:40 +00001//===-- HexagonIntrinsicsDerived.td - Derived intrinsics ---*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Multiply 64-bit and use lower result
11//
12// Optimized with intrinisics accumulates
13//
14def : Pat <(mul DoubleRegs:$src1, DoubleRegs:$src2),
Sirish Pande83ccb6c2012-05-11 19:39:13 +000015 (i64
Colin LeMahieub580d7d2014-12-09 19:23:45 +000016 (A2_combinew
Colin LeMahieu19ed07c2015-01-28 18:29:11 +000017 (M2_maci
18 (M2_maci
Sirish Pande83ccb6c2012-05-11 19:39:13 +000019 (i32
20 (EXTRACT_SUBREG
21 (i64
Colin LeMahieud9b23502014-12-16 16:10:01 +000022 (M2_dpmpyuu_s0 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1),
Sirish Pande83ccb6c2012-05-11 19:39:13 +000023 subreg_loreg)),
24 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2),
25 subreg_loreg)))),
26 subreg_hireg)),
27 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_loreg)),
28 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), subreg_hireg))),
29 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), subreg_loreg)),
30 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_hireg))),
31 (i32
32 (EXTRACT_SUBREG
33 (i64
Colin LeMahieud9b23502014-12-16 16:10:01 +000034 (M2_dpmpyuu_s0
35 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_loreg)),
Sirish Pande83ccb6c2012-05-11 19:39:13 +000036 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2),
37 subreg_loreg)))), subreg_loreg))))>;
Tony Linthicum1213a7a2011-12-12 21:14:40 +000038
39
40