HexagonIntrinsicsDerived.td revision 234285
1254721Semaste//===-- HexagonIntrinsicsDerived.td - Derived intrinsics ---*- tablegen -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste//
10254721Semaste// Multiply 64-bit and use lower result
11254721Semaste//
12263363Semaste// Optimized with intrinisics accumulates
13263363Semaste//
14263363Semastedef : Pat <(mul DoubleRegs:$src1, DoubleRegs:$src2),
15263363Semaste      (COMBINE_rr
16254721Semaste                  (Hexagon_M2_maci
17254721Semaste                           (Hexagon_M2_maci (EXTRACT_SUBREG  (MPYU64 (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg),
18254721Semaste                                                           (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg)),
19254721Semaste                                       subreg_hireg),
20254721Semaste                                       (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg),
21254721Semaste                                       (EXTRACT_SUBREG DoubleRegs:$src2, subreg_hireg)),
22254721Semaste                            (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg),
23254721Semaste                            (EXTRACT_SUBREG DoubleRegs:$src1, subreg_hireg)),
24254721Semaste                    (EXTRACT_SUBREG  (MPYU64 (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg),
25254721Semaste                                      (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg)),
26254721Semaste                     subreg_loreg))>;
27254721Semaste
28254721Semaste
29254721Semaste
30254721Semaste