1//===--- SPU128InstrInfo.td - Cell SPU 128-bit operations -*- tablegen -*--===// 2// 3// Cell SPU 128-bit operations 4// 5//===----------------------------------------------------------------------===// 6 7// zext 32->128: Zero extend 32-bit to 128-bit 8def : Pat<(i128 (zext R32C:$rSrc)), 9 (ROTQMBYIr128_zext_r32 R32C:$rSrc, 12)>; 10 11// zext 64->128: Zero extend 64-bit to 128-bit 12def : Pat<(i128 (zext R64C:$rSrc)), 13 (ROTQMBYIr128_zext_r64 R64C:$rSrc, 8)>; 14 15// zext 16->128: Zero extend 16-bit to 128-bit 16def : Pat<(i128 (zext R16C:$rSrc)), 17 (ROTQMBYIr128_zext_r32 (ANDi16i32 R16C:$rSrc, (ILAr32 0xffff)), 12)>; 18 19// zext 8->128: Zero extend 8-bit to 128-bit 20def : Pat<(i128 (zext R8C:$rSrc)), 21 (ROTQMBYIr128_zext_r32 (ANDIi8i32 R8C:$rSrc, 0xf), 12)>; 22 23// anyext 32->128: Zero extend 32-bit to 128-bit 24def : Pat<(i128 (anyext R32C:$rSrc)), 25 (ROTQMBYIr128_zext_r32 R32C:$rSrc, 12)>; 26 27// anyext 64->128: Zero extend 64-bit to 128-bit 28def : Pat<(i128 (anyext R64C:$rSrc)), 29 (ROTQMBYIr128_zext_r64 R64C:$rSrc, 8)>; 30 31// anyext 16->128: Zero extend 16-bit to 128-bit 32def : Pat<(i128 (anyext R16C:$rSrc)), 33 (ROTQMBYIr128_zext_r32 (ANDi16i32 R16C:$rSrc, (ILAr32 0xffff)), 12)>; 34 35// anyext 8->128: Zero extend 8-bit to 128-bit 36def : Pat<(i128 (anyext R8C:$rSrc)), 37 (ROTQMBYIr128_zext_r32 (ANDIi8i32 R8C:$rSrc, 0xf), 12)>; 38 39// Shift left 40def : Pat<(shl GPRC:$rA, R32C:$rB), 41 (SHLQBYBIr128 (SHLQBIr128 GPRC:$rA, R32C:$rB), R32C:$rB)>; 42