blob: 2788101d5a66b2ee54ac07b809308027795c8caa [file] [log] [blame]
Tony Linthicumb4b54152011-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 Pande81e900d2012-05-11 19:39:13 +000015 (i64
16 (COMBINE_rr
17 (HEXAGON_M2_maci
18 (HEXAGON_M2_maci
19 (i32
20 (EXTRACT_SUBREG
21 (i64
22 (MPYU64 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1),
23 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
34 (MPYU64 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_loreg)),
35 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2),
36 subreg_loreg)))), subreg_loreg))))>;
Tony Linthicumb4b54152011-12-12 21:14:40 +000037
38
39