diff --git a/llvm/lib/Target/PowerPC/PPCInstrPrefix.td b/llvm/lib/Target/PowerPC/PPCInstrPrefix.td --- a/llvm/lib/Target/PowerPC/PPCInstrPrefix.td +++ b/llvm/lib/Target/PowerPC/PPCInstrPrefix.td @@ -905,6 +905,38 @@ [(set v2i64:$vD, (int_ppc_altivec_vinsdrx v2i64:$vDi, i64:$rA, i64:$rB))]>, RegConstraint<"$vDi = $vD">, NoEncode<"$vDi">; + def VEXTDUBVLX : VAForm_1a<24, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextdubvlx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDUBVRX : VAForm_1a<25, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextdubvrx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDUHVLX : VAForm_1a<26, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextduhvlx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDUHVRX : VAForm_1a<27, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextduhvrx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDUWVLX : VAForm_1a<28, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextduwvlx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDUWVRX : VAForm_1a<29, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextduwvrx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDDVLX : VAForm_1a<30, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextddvlx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; + def VEXTDDVRX : VAForm_1a<31, (outs vrrc:$vD), + (ins vrrc:$vA, vrrc:$vB, g8rc:$rC), + "vextddvrx $vD, $vA, $vB, $rC", + IIC_VecGeneral, []>; def VPDEPD : VXForm_1<1485, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB), "vpdepd $vD, $vA, $vB", IIC_VecGeneral, [(set v2i64:$vD, diff --git a/llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt b/llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt --- a/llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt +++ b/llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt @@ -330,6 +330,30 @@ # CHECK: vinsdrx 1, 2, 3 0x10 0x22 0x1b 0xcf +# CHECK: vextdubvlx 1, 2, 3, 3 +0x10 0x22 0x18 0xd8 + +# CHECK: vextdubvrx 1, 2, 3, 3 +0x10 0x22 0x18 0xd9 + +# CHECK: vextduhvlx 1, 2, 3, 3 +0x10 0x22 0x18 0xda + +# CHECK: vextduhvrx 1, 2, 3, 3 +0x10 0x22 0x18 0xdb + +# CHECK: vextduwvlx 1, 2, 3, 3 +0x10 0x22 0x18 0xdc + +# CHECK: vextduwvrx 1, 2, 3, 3 +0x10 0x22 0x18 0xdd + +# CHECK: vextddvlx 1, 2, 3, 3 +0x10 0x22 0x18 0xde + +# CHECK: vextddvrx 1, 2, 3, 3 +0x10 0x22 0x18 0xdf + # CHECK: lxvrbx 32, 1, 2 0x7c 0x01 0x10 0x1b diff --git a/llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s b/llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s --- a/llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s +++ b/llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s @@ -456,6 +456,30 @@ # CHECK-BE: vinsdrx 1, 2, 3 # encoding: [0x10,0x22,0x1b,0xcf] # CHECK-LE: vinsdrx 1, 2, 3 # encoding: [0xcf,0x1b,0x22,0x10] vinsdrx 1, 2, 3 +# CHECK-BE: vextdubvlx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xd8] +# CHECK-LE: vextdubvlx 1, 2, 3, 3 # encoding: [0xd8,0x18,0x22,0x10] + vextdubvlx 1, 2, 3, 3 +# CHECK-BE: vextdubvrx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xd9] +# CHECK-LE: vextdubvrx 1, 2, 3, 3 # encoding: [0xd9,0x18,0x22,0x10] + vextdubvrx 1, 2, 3, 3 +# CHECK-BE: vextduhvlx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xda] +# CHECK-LE: vextduhvlx 1, 2, 3, 3 # encoding: [0xda,0x18,0x22,0x10] + vextduhvlx 1, 2, 3, 3 +# CHECK-BE: vextduhvrx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xdb] +# CHECK-LE: vextduhvrx 1, 2, 3, 3 # encoding: [0xdb,0x18,0x22,0x10] + vextduhvrx 1, 2, 3, 3 +# CHECK-BE: vextduwvlx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xdc] +# CHECK-LE: vextduwvlx 1, 2, 3, 3 # encoding: [0xdc,0x18,0x22,0x10] + vextduwvlx 1, 2, 3, 3 +# CHECK-BE: vextduwvrx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xdd] +# CHECK-LE: vextduwvrx 1, 2, 3, 3 # encoding: [0xdd,0x18,0x22,0x10] + vextduwvrx 1, 2, 3, 3 +# CHECK-BE: vextddvlx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xde] +# CHECK-LE: vextddvlx 1, 2, 3, 3 # encoding: [0xde,0x18,0x22,0x10] + vextddvlx 1, 2, 3, 3 +# CHECK-BE: vextddvrx 1, 2, 3, 3 # encoding: [0x10,0x22,0x18,0xdf] +# CHECK-LE: vextddvrx 1, 2, 3, 3 # encoding: [0xdf,0x18,0x22,0x10] + vextddvrx 1, 2, 3, 3 # CHECK-BE: lxvrbx 32, 1, 2 # encoding: [0x7c,0x01,0x10,0x1b] # CHECK-LE: lxvrbx 32, 1, 2 # encoding: [0x1b,0x10,0x01,0x7c] lxvrbx 32, 1, 2