[PATCH] Fixing Intel format of the vshufpd instruction

Craig Topper craig.topper at gmail.com
Thu Sep 26 09:03:55 PDT 2013


LGTM.

On Thursday, September 26, 2013, Yunzhong Gao wrote:

> ygao added you to the CC list for the revision "Fixing Intel format of the
> vshufpd instruction".
>
> Hi,
> 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?
>
> Thanks,
> - Gao
>
> http://llvm-reviews.chandlerc.com/D1759
>
> Files:
>   lib/Target/X86/X86InstrSSE.td
>   test/MC/Disassembler/X86/intel-syntax.txt
>   test/MC/X86/intel-syntax.s
>
> 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
>


-- 
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130926/4858e4ea/attachment.html>


More information about the llvm-commits mailing list