diff options
Diffstat (limited to 'llvm/lib/Target/CellSPU/SPUMathInstr.td')
| -rw-r--r-- | llvm/lib/Target/CellSPU/SPUMathInstr.td | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUMathInstr.td b/llvm/lib/Target/CellSPU/SPUMathInstr.td index ed7129e3329..7205593b040 100644 --- a/llvm/lib/Target/CellSPU/SPUMathInstr.td +++ b/llvm/lib/Target/CellSPU/SPUMathInstr.td @@ -39,7 +39,7 @@ def : Pat<(mul (v8i16 VECREG:$rA), (v8i16 VECREG:$rB)), (FSMBIv8i16 0xcccc))>; //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ -// v4i32, i32 multiply instruction sequence: +// v4i32, v2i32, i32 multiply instruction sequence: //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ def MPYv4i32: @@ -49,6 +49,14 @@ def MPYv4i32: (v4i32 (MPYHv4i32 VECREG:$rB, VECREG:$rA)))), (v4i32 (MPYUv4i32 VECREG:$rA, VECREG:$rB)))>; +def MPYv2i32: + Pat<(mul (v2i32 VECREG:$rA), (v2i32 VECREG:$rB)), + (Av2i32 + (v2i32 (Av2i32 (v2i32 (MPYHv2i32 VECREG:$rA, VECREG:$rB)), + (v2i32 (MPYHv2i32 VECREG:$rB, VECREG:$rA)))), + (v2i32 (MPYUv2i32 VECREG:$rA, VECREG:$rB)))>; + + def MPYi32: Pat<(mul R32C:$rA, R32C:$rB), (Ar32 |

