diff options
author | Craig Topper <craig.topper@gmail.com> | 2013-01-06 20:39:29 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2013-01-06 20:39:29 +0000 |
commit | f564a9389da68266f44314fe38ab399fd2211134 (patch) | |
tree | a45d4cbded5f756f85763884ebf09a8bf11449b7 /test/MC/X86/x86-32-avx.s | |
parent | 700843ec2c4cb4aa442377809c6ebb3ae3030c61 (diff) | |
download | external_llvm-f564a9389da68266f44314fe38ab399fd2211134.zip external_llvm-f564a9389da68266f44314fe38ab399fd2211134.tar.gz external_llvm-f564a9389da68266f44314fe38ab399fd2211134.tar.bz2 |
Fix suffix handling for parsing and printing of cvtsi2ss, cvtsi2sd, cvtss2si, cvttss2si, cvtsd2si, and cvttsd2si to match gas behavior.
cvtsi2* should parse with an 'l' or 'q' suffix or no suffix at all. No suffix should be treated the same as 'l' suffix. Printing should always print a suffix. Previously we didn't parse or print an 'l' suffix.
cvtt*2si/cvt*2si should parse with an 'l' or 'q' suffix or not suffix at all. No suffix should use the destination register size to choose encoding. Printing should not print a suffix.
Original 'l' suffix issue with cvtsi2* pointed out by Michael Kuperstein.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171668 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/X86/x86-32-avx.s')
-rw-r--r-- | test/MC/X86/x86-32-avx.s | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/test/MC/X86/x86-32-avx.s b/test/MC/X86/x86-32-avx.s index 586f3fe..ec4abdb 100644 --- a/test/MC/X86/x86-32-avx.s +++ b/test/MC/X86/x86-32-avx.s @@ -655,14 +655,22 @@ // CHECK: encoding: [0xc5,0xfa,0x2c,0x01] vcvttss2si (%ecx), %eax -// CHECK: vcvtsi2ss (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2ssl (%eax), %xmm1, %xmm2 // CHECK: encoding: [0xc5,0xf2,0x2a,0x10] vcvtsi2ss (%eax), %xmm1, %xmm2 -// CHECK: vcvtsi2ss (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2ssl (%eax), %xmm1, %xmm2 // CHECK: encoding: [0xc5,0xf2,0x2a,0x10] vcvtsi2ss (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2ssl (%eax), %xmm1, %xmm2 +// CHECK: encoding: [0xc5,0xf2,0x2a,0x10] + vcvtsi2ssl (%eax), %xmm1, %xmm2 + +// CHECK: vcvtsi2ssl (%eax), %xmm1, %xmm2 +// CHECK: encoding: [0xc5,0xf2,0x2a,0x10] + vcvtsi2ssl (%eax), %xmm1, %xmm2 + // CHECK: vcvttsd2si %xmm1, %eax // CHECK: encoding: [0xc5,0xfb,0x2c,0xc1] vcvttsd2si %xmm1, %eax @@ -671,14 +679,22 @@ // CHECK: encoding: [0xc5,0xfb,0x2c,0x01] vcvttsd2si (%ecx), %eax -// CHECK: vcvtsi2sd (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2sdl (%eax), %xmm1, %xmm2 // CHECK: encoding: [0xc5,0xf3,0x2a,0x10] vcvtsi2sd (%eax), %xmm1, %xmm2 -// CHECK: vcvtsi2sd (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2sdl (%eax), %xmm1, %xmm2 // CHECK: encoding: [0xc5,0xf3,0x2a,0x10] vcvtsi2sd (%eax), %xmm1, %xmm2 +// CHECK: vcvtsi2sdl (%eax), %xmm1, %xmm2 +// CHECK: encoding: [0xc5,0xf3,0x2a,0x10] + vcvtsi2sdl (%eax), %xmm1, %xmm2 + +// CHECK: vcvtsi2sdl (%eax), %xmm1, %xmm2 +// CHECK: encoding: [0xc5,0xf3,0x2a,0x10] + vcvtsi2sdl (%eax), %xmm1, %xmm2 + // CHECK: vmovaps (%eax), %xmm2 // CHECK: encoding: [0xc5,0xf8,0x28,0x10] vmovaps (%eax), %xmm2 @@ -767,14 +783,22 @@ // CHECK: encoding: [0xc5,0xe8,0x12,0xd9] vmovhlps %xmm1, %xmm2, %xmm3 -// CHECK: vcvtss2sil %xmm1, %eax +// CHECK: vcvtss2si %xmm1, %eax // CHECK: encoding: [0xc5,0xfa,0x2d,0xc1] vcvtss2si %xmm1, %eax -// CHECK: vcvtss2sil (%eax), %ebx +// CHECK: vcvtss2si (%eax), %ebx // CHECK: encoding: [0xc5,0xfa,0x2d,0x18] vcvtss2si (%eax), %ebx +// CHECK: vcvtss2si %xmm1, %eax +// CHECK: encoding: [0xc5,0xfa,0x2d,0xc1] + vcvtss2sil %xmm1, %eax + +// CHECK: vcvtss2si (%eax), %ebx +// CHECK: encoding: [0xc5,0xfa,0x2d,0x18] + vcvtss2sil (%eax), %ebx + // CHECK: vcvtdq2ps %xmm5, %xmm6 // CHECK: encoding: [0xc5,0xf8,0x5b,0xf5] vcvtdq2ps %xmm5, %xmm6 @@ -3103,19 +3127,35 @@ // CHECK: encoding: [0xc5,0xf8,0x77] vzeroupper -// CHECK: vcvtsd2sil %xmm4, %ecx +// CHECK: vcvtsd2si %xmm4, %ecx // CHECK: encoding: [0xc5,0xfb,0x2d,0xcc] vcvtsd2sil %xmm4, %ecx -// CHECK: vcvtsd2sil (%ecx), %ecx +// CHECK: vcvtsd2si (%ecx), %ecx // CHECK: encoding: [0xc5,0xfb,0x2d,0x09] vcvtsd2sil (%ecx), %ecx -// CHECK: vcvtsi2sd (%ebp), %xmm0, %xmm7 +// CHECK: vcvtsd2si %xmm4, %ecx +// CHECK: encoding: [0xc5,0xfb,0x2d,0xcc] + vcvtsd2si %xmm4, %ecx + +// CHECK: vcvtsd2si (%ecx), %ecx +// CHECK: encoding: [0xc5,0xfb,0x2d,0x09] + vcvtsd2si (%ecx), %ecx + +// CHECK: vcvtsi2sdl (%ebp), %xmm0, %xmm7 +// CHECK: encoding: [0xc5,0xfb,0x2a,0x7d,0x00] + vcvtsi2sdl (%ebp), %xmm0, %xmm7 + +// CHECK: vcvtsi2sdl (%esp), %xmm0, %xmm7 +// CHECK: encoding: [0xc5,0xfb,0x2a,0x3c,0x24] + vcvtsi2sdl (%esp), %xmm0, %xmm7 + +// CHECK: vcvtsi2sdl (%ebp), %xmm0, %xmm7 // CHECK: encoding: [0xc5,0xfb,0x2a,0x7d,0x00] vcvtsi2sd (%ebp), %xmm0, %xmm7 -// CHECK: vcvtsi2sd (%esp), %xmm0, %xmm7 +// CHECK: vcvtsi2sdl (%esp), %xmm0, %xmm7 // CHECK: encoding: [0xc5,0xfb,0x2a,0x3c,0x24] vcvtsi2sd (%esp), %xmm0, %xmm7 |