1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/MC/X86/intel-syntax-x86-64-avx.s
Craig Topper 6411ac4a0d [X86] Remove some intel syntax aliases on (v)cvtpd2(u)dq, (v)cvtpd2ps, (v)cvt(u)qq2ps. Add 'x' and'y' suffix aliases to masked version of the same in att syntax.
The 128/256 bit version of these instructions require an 'x' or 'y' suffix to
disambiguate the memory form in att syntax.

We were allowing the same suffix in intel syntax, but it appears gas does not
do that.

gas does allow the 'x' and 'y' suffix on register and broadcast forms even
though its not needed. We were allowing it on unmasked register form, but not on
masked versions or on masked or unmasked broadcast form.

While there fix some test coverage holes so they can be extended with the 'x'
and 'y' suffix tests.

llvm-svn: 359418
2019-04-29 06:13:41 +00:00

170 lines
6.8 KiB
ArmAsm

// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
// CHECK: vgatherdpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: encoding: [0xc4,0xe2,0xf9,0x92,0x14,0x4f]
vgatherdpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: vgatherqpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: encoding: [0xc4,0xe2,0xf9,0x93,0x14,0x4f]
vgatherqpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: vgatherdpd ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
// CHECK: encoding: [0xc4,0xe2,0xfd,0x92,0x14,0x4f]
vgatherdpd ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
// CHECK: vgatherqpd ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
// CHECK: encoding: [0xc4,0xe2,0xfd,0x93,0x14,0x4f]
vgatherqpd ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
// CHECK: vgatherdps xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x39,0x92,0x14,0x4f]
vgatherdps xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
// CHECK: vgatherqps xmm10, qword ptr [r15 + 2*xmm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x39,0x93,0x14,0x4f]
vgatherqps xmm10, qword ptr [r15 + 2*xmm9], xmm8
// CHECK: vgatherdps ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
// CHECK: encoding: [0xc4,0x02,0x3d,0x92,0x14,0x4f]
vgatherdps ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
// CHECK: vgatherqps xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x3d,0x93,0x14,0x4f]
vgatherqps xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
// CHECK: vpgatherdq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: encoding: [0xc4,0xe2,0xf9,0x90,0x14,0x4f]
vpgatherdq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: vpgatherqq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: encoding: [0xc4,0xe2,0xf9,0x91,0x14,0x4f]
vpgatherqq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
// CHECK: vpgatherdq ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
// CHECK: encoding: [0xc4,0xe2,0xfd,0x90,0x14,0x4f]
vpgatherdq ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
// CHECK: vpgatherqq ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
// CHECK: encoding: [0xc4,0xe2,0xfd,0x91,0x14,0x4f]
vpgatherqq ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
// CHECK: vpgatherdd xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x39,0x90,0x14,0x4f]
vpgatherdd xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
// CHECK: vpgatherqd xmm10, qword ptr [r15 + 2*xmm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x39,0x91,0x14,0x4f]
vpgatherqd xmm10, qword ptr [r15 + 2*xmm9], xmm8
// CHECK: vpgatherdd ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
// CHECK: encoding: [0xc4,0x02,0x3d,0x90,0x14,0x4f]
vpgatherdd ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
// CHECK: vpgatherqd xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
// CHECK: encoding: [0xc4,0x02,0x3d,0x91,0x14,0x4f]
vpgatherqd xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
// CHECK: vcvtpd2ps xmm0, xmm15
// CHECK: encoding: [0xc4,0xc1,0x79,0x5a,0xc7]
vcvtpd2ps xmm0, xmm15
// CHECK: vcvtpd2ps xmm0, xmmword ptr [rax]
// CHECK: encoding: [0xc5,0xf9,0x5a,0x00]
vcvtpd2ps xmm0, xmmword ptr [rax]
// CHECK: vcvtpd2ps xmm0, ymm15
// CHECK: encoding: [0xc4,0xc1,0x7d,0x5a,0xc7]
vcvtpd2ps xmm0, ymm15
// CHECK: vcvtpd2ps xmm0, ymmword ptr [rax]
// CHECK: encoding: [0xc5,0xfd,0x5a,0x00]
vcvtpd2ps xmm0, ymmword ptr [rax]
// CHECK: vcvtpd2dq xmm0, xmm15
// CHECK: encoding: [0xc4,0xc1,0x7b,0xe6,0xc7]
vcvtpd2dq xmm0, xmm15
// CHECK: vcvtpd2dq xmm0, xmmword ptr [rax]
// CHECK: encoding: [0xc5,0xfb,0xe6,0x00]
vcvtpd2dq xmm0, xmmword ptr [rax]
// CHECK: vcvtpd2dq xmm0, ymm15
// CHECK: encoding: [0xc4,0xc1,0x7f,0xe6,0xc7]
vcvtpd2dq xmm0, ymm15
// CHECK: vcvtpd2dq xmm0, ymmword ptr [rax]
// CHECK: encoding: [0xc5,0xff,0xe6,0x00]
vcvtpd2dq xmm0, ymmword ptr [rax]
// CHECK: vcvttpd2dq xmm0, xmm15
// CHECK: encoding: [0xc4,0xc1,0x79,0xe6,0xc7]
vcvttpd2dq xmm0, xmm15
// CHECK: vcvttpd2dq xmm0, xmmword ptr [rax]
// CHECK: encoding: [0xc5,0xf9,0xe6,0x00]
vcvttpd2dq xmm0, xmmword ptr [rax]
// CHECK: vcvttpd2dq xmm0, ymm15
// CHECK: encoding: [0xc4,0xc1,0x7d,0xe6,0xc7]
vcvttpd2dq xmm0, ymm15
// CHECK: vcvttpd2dq xmm0, ymmword ptr [rax]
// CHECK: encoding: [0xc5,0xfd,0xe6,0x00]
vcvttpd2dq xmm0, ymmword ptr [rax]
// CHECK: vpmaddwd xmm1, xmm2, xmm3
// CHECK: encoding: [0xc5,0xe9,0xf5,0xcb]
vpmaddwd xmm1, xmm2, xmm3
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx]
// CHECK: encoding: [0xc5,0xe9,0xf5,0x09]
vpmaddwd xmm1, xmm2, xmmword ptr [rcx]
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rsp - 4]
// CHECK: encoding: [0xc5,0xe9,0xf5,0x4c,0x24,0xfc]
vpmaddwd xmm1, xmm2, xmmword ptr [rsp - 4]
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rsp + 4]
// CHECK: encoding: [0xc5,0xe9,0xf5,0x4c,0x24,0x04]
vpmaddwd xmm1, xmm2, xmmword ptr [rsp + 4]
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 + 268435456]
// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x00,0x00,0x00,0x10]
vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 + 268435456]
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870912]
// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x00,0x00,0x00,0xe0]
vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870912]
// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870910]
// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x02,0x00,0x00,0xe0]
vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870910]
// CHECK: vpmaddwd ymm1, ymm2, ymm3
// CHECK: encoding: [0xc5,0xed,0xf5,0xcb]
vpmaddwd ymm1, ymm2, ymm3
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx]
// CHECK: encoding: [0xc5,0xed,0xf5,0x09]
vpmaddwd ymm1, ymm2, ymmword ptr [rcx]
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rsp - 4]
// CHECK: encoding: [0xc5,0xed,0xf5,0x4c,0x24,0xfc]
vpmaddwd ymm1, ymm2, ymmword ptr [rsp - 4]
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rsp + 4]
// CHECK: encoding: [0xc5,0xed,0xf5,0x4c,0x24,0x04]
vpmaddwd ymm1, ymm2, ymmword ptr [rsp + 4]
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 + 268435456]
// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x00,0x00,0x00,0x10]
vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 + 268435456]
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870912]
// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x00,0x00,0x00,0xe0]
vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870912]
// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870910]
// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x02,0x00,0x00,0xe0]
vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870910]