CellSPU:
[oota-llvm.git] / lib / Target / CellSPU / SPU128InstrInfo.td
1 //===--- SPU128InstrInfo.td - Cell SPU 128-bit operations -*- tablegen -*--===//
2 //
3 //                     Cell SPU 128-bit operations
4 //
5 // Primary author: Scott Michel (scottm@aero.org)
6 //===----------------------------------------------------------------------===//
7                                   
8 // zext 32->128: Zero extend 32-bit to 128-bit
9 def : Pat<(i128 (zext R32C:$rSrc)),
10           (ROTQMBYIr128_zext_r32 R32C:$rSrc, 12)>;
11
12 // zext 64->128: Zero extend 64-bit to 128-bit
13 def : Pat<(i128 (zext R64C:$rSrc)),
14           (ROTQMBYIr128_zext_r64 R64C:$rSrc, 8)>;
15
16 // zext 16->128: Zero extend 16-bit to 128-bit
17 def : Pat<(i128 (zext R16C:$rSrc)),
18           (ROTQMBYIr128_zext_r32 (ANDi16i32 R16C:$rSrc, (ILAr32 0xffff)), 12)>;
19
20 // zext 8->128: Zero extend 8-bit to 128-bit
21 def : Pat<(i128 (zext R8C:$rSrc)),
22           (ROTQMBYIr128_zext_r32 (ANDIi8i32 R8C:$rSrc, 0xf), 12)>;