[PATCH] Fixing Intel format of the vshufpd instruction

Yunzhong Gao Yunzhong_Gao at playstation.sony.com
Thu Sep 26 08:23:40 PDT 2013

ygao added you to the CC list for the revision "Fixing Intel format of the vshufpd instruction".

I noticed that the Intel format of the vshufpd instruction is incorrect.

For example,
$ echo "vshufpd XMM0, XMM0, XMM0, 1" | llvm-mc -x86-asm-syntax=intel
  error: invalid operand for instruction
  vshufpd XMM0, XMM0, XMM0, 1

This seems to be caused by a typo in the tablegen entry for this instruction.

In lib/Target/X86/X86InstrSSE.td:
  "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src2, $src2, $src3}", 
should be
  "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",

Can someone take a look whether this patch is good to go in?

- Gao



Index: lib/Target/X86/X86InstrSSE.td
--- lib/Target/X86/X86InstrSSE.td
+++ lib/Target/X86/X86InstrSSE.td
@@ -2524,10 +2524,10 @@
            "shufps\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
            memopv8f32, SSEPackedSingle>, TB, VEX_4V, VEX_L;
 defm VSHUFPD  : sse12_shuffle<VR128, f128mem, v2f64,
-           "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src2, $src2, $src3}",
+           "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
            memopv2f64, SSEPackedDouble>, TB, OpSize, VEX_4V;
 defm VSHUFPDY : sse12_shuffle<VR256, f256mem, v4f64,
-           "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src2, $src2, $src3}",
+           "shufpd\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
            memopv4f64, SSEPackedDouble>, TB, OpSize, VEX_4V, VEX_L;
 let Constraints = "$src1 = $dst" in {
Index: test/MC/Disassembler/X86/intel-syntax.txt
--- test/MC/Disassembler/X86/intel-syntax.txt
+++ test/MC/Disassembler/X86/intel-syntax.txt
@@ -105,6 +105,9 @@
 # CHECK: retf
 0x66 0xcb
+# CHECK: vshufpd xmm0, xmm1, xmm2, 1
+0xc5 0xf1 0xc6 0xc2 0x01
 # CHECK: vpgatherqq ymm2, qword ptr [rdi + 2*ymm1], ymm0
 0xc4 0xe2 0xfd 0x91 0x14 0x4f
Index: test/MC/X86/intel-syntax.s
--- test/MC/X86/intel-syntax.s
+++ test/MC/X86/intel-syntax.s
@@ -69,6 +69,8 @@
     mov QWORD PTR FS:320, RAX
 // CHECK: movq %rax, %fs:20(%rbx)
     mov QWORD PTR FS:20[rbx], RAX
+// CHECK: vshufpd $1, %xmm2, %xmm1, %xmm0
+    vshufpd XMM0, XMM1, XMM2, 1
 // CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1
     vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8
 // CHECK: movsd	-8, %xmm5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1759.1.patch
Type: text/x-patch
Size: 1828 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130926/bc99225a/attachment.bin>

More information about the llvm-commits mailing list