[llvm] r261417 - [X86] Add some missing reversed forms of XOP instructions.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 19 22:20:18 PST 2016
Author: ctopper
Date: Sat Feb 20 00:20:17 2016
New Revision: 261417
URL: http://llvm.org/viewvc/llvm-project?rev=261417&view=rev
Log:
[X86] Add some missing reversed forms of XOP instructions.
Modified:
llvm/trunk/lib/Target/X86/X86InstrXOP.td
llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt
Modified: llvm/trunk/lib/Target/X86/X86InstrXOP.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrXOP.td?rev=261417&r1=261416&r2=261417&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrXOP.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrXOP.td Sat Feb 20 00:20:17 2016
@@ -246,6 +246,13 @@ multiclass xop4op<bits<8> opc, string Op
(Int VR128:$src1, (bitconvert (loadv2i64 addr:$src2)),
VR128:$src3))]>,
XOP_4V, VEX_I8IMM;
+ // For disassembler
+ let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
+ def rr_REV : IXOPi8<opc, MRMSrcReg, (outs VR128:$dst),
+ (ins VR128:$src1, VR128:$src2, VR128:$src3),
+ !strconcat(OpcodeStr,
+ "\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
+ []>, XOP_4V, VEX_I8IMM, VEX_W, MemOp4;
}
let ExeDomain = SSEPackedInt in {
@@ -276,6 +283,13 @@ multiclass xop4op256<bits<8> opc, string
(Int VR256:$src1, (bitconvert (loadv4i64 addr:$src2)),
VR256:$src3))]>,
XOP_4V, VEX_I8IMM, VEX_L;
+ // For disassembler
+ let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
+ def rrY_REV : IXOPi8<opc, MRMSrcReg, (outs VR256:$dst),
+ (ins VR256:$src1, VR256:$src2, VR256:$src3),
+ !strconcat(OpcodeStr,
+ "\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
+ []>, XOP_4V, VEX_I8IMM, VEX_W, MemOp4, VEX_L;
}
let ExeDomain = SSEPackedInt in
@@ -312,6 +326,14 @@ multiclass xop5op<bits<8> opc, string Op
"\t{$src4, $src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3, $src4}"),
[(set VR128:$dst,
(Int128 VR128:$src1, (ld_128 addr:$src2), VR128:$src3, imm:$src4))]>;
+ // For disassembler
+ let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
+ def rr_REV : IXOP5<opc, MRMSrcReg, (outs VR128:$dst),
+ (ins VR128:$src1, VR128:$src2, VR128:$src3, u8imm:$src4),
+ !strconcat(OpcodeStr,
+ "\t{$src4, $src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3, $src4}"),
+ []>, VEX_W, MemOp4;
+
def rrY : IXOP5<opc, MRMSrcReg, (outs VR256:$dst),
(ins VR256:$src1, VR256:$src2, VR256:$src3, u8imm:$src4),
!strconcat(OpcodeStr,
@@ -332,6 +354,13 @@ multiclass xop5op<bits<8> opc, string Op
[(set VR256:$dst,
(Int256 VR256:$src1, (ld_256 addr:$src2), VR256:$src3, imm:$src4))]>,
VEX_L;
+ // For disassembler
+ let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
+ def rrY_REV : IXOP5<opc, MRMSrcReg, (outs VR256:$dst),
+ (ins VR256:$src1, VR256:$src2, VR256:$src3, u8imm:$src4),
+ !strconcat(OpcodeStr,
+ "\t{$src4, $src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3, $src4}"),
+ []>, VEX_W, MemOp4, VEX_L;
}
let ExeDomain = SSEPackedDouble in
Modified: llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt?rev=261417&r1=261416&r2=261417&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt (original)
+++ llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt Sat Feb 20 00:20:17 2016
@@ -905,12 +905,21 @@
# CHECK: vpcmov %ymm1, %ymm2, %ymm3, %ymm4
0x8f 0xe8 0x64 0xa2 0xe2 0x10
+# CHECK: vpcmov %ymm2, %ymm1, %ymm3, %ymm4
+0x8f 0xe8 0xe4 0xa2 0xe2 0x10
+
# CHECK: vpcmov (%rax), %ymm2, %ymm3, %ymm4
0x8f 0xe8 0xe4 0xa2 0x20 0x20
# CHECK: vpcmov %ymm1, (%rax), %ymm3, %ymm4
0x8f 0xe8 0x64 0xa2 0x20 0x10
+# CHECK: vpermil2pd $0, %xmm3, %xmm2, %xmm1, %xmm0
+0xc4 0xe3 0x71 0x49 0xc2 0x30
+
+# CHECK: vpermil2pd $0, %xmm2, %xmm3, %xmm1, %xmm0
+0xc4 0xe3 0xf1 0x49 0xc2 0x30
+
# CHECK: vpcomeqb %xmm6, %xmm4, %xmm2
0x8f 0xe8 0x58 0xcc 0xd6 0x04
More information about the llvm-commits
mailing list