diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td | 34 | 
1 files changed, 22 insertions, 12 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td b/llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td index 68eaf68480e..2788101d5a6 100644 --- a/llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td +++ b/llvm/lib/Target/Hexagon/HexagonIntrinsicsDerived.td @@ -12,18 +12,28 @@  // Optimized with intrinisics accumulates  //  def : Pat <(mul DoubleRegs:$src1, DoubleRegs:$src2), -      (COMBINE_rr -                  (Hexagon_M2_maci -                           (Hexagon_M2_maci (EXTRACT_SUBREG  (MPYU64 (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg), -                                                           (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg)), -                                       subreg_hireg), -                                       (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg), -                                       (EXTRACT_SUBREG DoubleRegs:$src2, subreg_hireg)), -                            (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg), -                            (EXTRACT_SUBREG DoubleRegs:$src1, subreg_hireg)), -                    (EXTRACT_SUBREG  (MPYU64 (EXTRACT_SUBREG DoubleRegs:$src1, subreg_loreg), -                                      (EXTRACT_SUBREG DoubleRegs:$src2, subreg_loreg)), -                     subreg_loreg))>; +      (i64 +       (COMBINE_rr +        (HEXAGON_M2_maci +         (HEXAGON_M2_maci +          (i32 +           (EXTRACT_SUBREG +            (i64 +             (MPYU64 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), +                                          subreg_loreg)), +                     (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), +                                          subreg_loreg)))), +            subreg_hireg)), +          (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_loreg)), +          (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), subreg_hireg))), +         (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), subreg_loreg)), +         (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_hireg))), +        (i32 +         (EXTRACT_SUBREG +          (i64 +           (MPYU64 (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src1), subreg_loreg)), +                   (i32 (EXTRACT_SUBREG (i64 DoubleRegs:$src2), +                                        subreg_loreg)))), subreg_loreg))))>;  | 

