diff options
author | Asaf Badouh <asaf.badouh@intel.com> | 2015-11-05 08:45:06 +0000 |
---|---|---|
committer | Asaf Badouh <asaf.badouh@intel.com> | 2015-11-05 08:45:06 +0000 |
commit | 7fdabf0a3543c35f74ed42e503624224d3db86d3 (patch) | |
tree | 442b7bced50613852161b24d8b12d65d7f9c30dc /llvm/test | |
parent | 9e959ac397bc1a7319b7e06bc4762fc9ca2d0e92 (diff) | |
download | bcm5719-llvm-7fdabf0a3543c35f74ed42e503624224d3db86d3.tar.gz bcm5719-llvm-7fdabf0a3543c35f74ed42e503624224d3db86d3.zip |
[X86][AVX512] add comi with Sae
add builtin_ia32_vcomisd and builtin_ia32_vcomisd
Differential Revision: http://reviews.llvm.org/D14331
llvm-svn: 252153
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-intrinsics.ll | 75 | ||||
-rw-r--r-- | llvm/test/MC/X86/avx512-encodings.s | 127 |
2 files changed, 202 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-intrinsics.ll b/llvm/test/CodeGen/X86/avx512-intrinsics.ll index 6ce1da55aa4..923ad4d069f 100644 --- a/llvm/test/CodeGen/X86/avx512-intrinsics.ll +++ b/llvm/test/CodeGen/X86/avx512-intrinsics.ll @@ -4676,3 +4676,78 @@ define <8 x i64>@test_int_x86_avx512_maskz_pternlog_q_512(<8 x i64> %x0, <8 x i6 ret <8 x i64> %res2 } +define i32 @test_x86_avx512_comi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_comi_sd_eq_sae +; CHECK: vcomisd {sae}, %xmm1, %xmm0 +; CHECK-NEXT: sete %al + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 8) + ret i32 %res +} + +define i32 @test_x86_avx512_ucomi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq_sae +; CHECK: vucomisd {sae}, %xmm1, %xmm0 +; CHECK-NEXT: sete %al + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 8) + ret i32 %res +} + +define i32 @test_x86_avx512_comi_sd_eq(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_comi_sd_eq +; CHECK: vcomisd %xmm1, %xmm0 +; CHECK-NEXT: sete %al + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 4) + ret i32 %res +} + +define i32 @test_x86_avx512_ucomi_sd_eq(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq +; CHECK: vucomisd %xmm1, %xmm0 +; CHECK-NEXT: sete %al + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 4) + ret i32 %res +} + +define i32 @test_x86_avx512_comi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_comi_sd_lt_sae +; CHECK: vcomisd {sae}, %xmm1, %xmm0 +; CHECK-NEXT: sbbl %eax, %eax + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 8) + ret i32 %res +} + +define i32 @test_x86_avx512_ucomi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt_sae +; CHECK: vucomisd {sae}, %xmm1, %xmm0 +; CHECK-NEXT: sbbl %eax, %eax + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 8) + ret i32 %res +} + +define i32 @test_x86_avx512_comi_sd_lt(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_comi_sd_lt +; CHECK: vcomisd %xmm1, %xmm0 +; CHECK-NEXT: sbbl %eax, %eax + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 4) + ret i32 %res +} + +define i32 @test_x86_avx512_ucomi_sd_lt(<2 x double> %a0, <2 x double> %a1) { +; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt +; CHECK: vucomisd %xmm1, %xmm0 +; CHECK-NEXT: sbbl %eax, %eax + %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 4) + ret i32 %res +} + +declare i32 @llvm.x86.avx512.vcomi.sd(<2 x double>, <2 x double>, i32, i32) + +define i32 @test_x86_avx512_ucomi_ss_lt(<4 x float> %a0, <4 x float> %a1) { +; CHECK-LABEL: test_x86_avx512_ucomi_ss_lt +; CHECK: vucomiss %xmm1, %xmm0 +; CHECK-NEXT: sbbl %eax, %eax + %res = call i32 @llvm.x86.avx512.vcomi.ss(<4 x float> %a0, <4 x float> %a1, i32 9, i32 4) + ret i32 %res +} + +declare i32 @llvm.x86.avx512.vcomi.ss(<4 x float>, <4 x float>, i32, i32) diff --git a/llvm/test/MC/X86/avx512-encodings.s b/llvm/test/MC/X86/avx512-encodings.s index dc0ee7e671b..98ec9ff297c 100644 --- a/llvm/test/MC/X86/avx512-encodings.s +++ b/llvm/test/MC/X86/avx512-encodings.s @@ -18297,3 +18297,130 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: encoding: [0xc5,0xf9,0x7e,0xaa,0xfc,0xfd,0xff,0xff] vmovd %xmm5, -516(%rdx) +// CHECK: vcomisd %xmm21, %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2f,0xfd] + vcomisd %xmm21, %xmm23 + +// CHECK: vcomisd {sae}, %xmm21, %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfd,0x18,0x2f,0xfd] + vcomisd {sae}, %xmm21, %xmm23 + +// CHECK: vcomisd (%rcx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x39] + vcomisd (%rcx), %xmm23 + +// CHECK: vcomisd 291(%rax,%r14,8), %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2f,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcomisd 291(%rax,%r14,8), %xmm23 + +// CHECK: vcomisd 1016(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x7a,0x7f] + vcomisd 1016(%rdx), %xmm23 + +// CHECK: vcomisd 1024(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0xba,0x00,0x04,0x00,0x00] + vcomisd 1024(%rdx), %xmm23 + +// CHECK: vcomisd -1024(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x7a,0x80] + vcomisd -1024(%rdx), %xmm23 + +// CHECK: vcomisd -1032(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0xba,0xf8,0xfb,0xff,0xff] + vcomisd -1032(%rdx), %xmm23 + +// CHECK: vcomiss %xmm28, %xmm14 +// CHECK: encoding: [0x62,0x11,0x7c,0x08,0x2f,0xf4] + vcomiss %xmm28, %xmm14 + +// CHECK: vcomiss {sae}, %xmm28, %xmm14 +// CHECK: encoding: [0x62,0x11,0x7c,0x18,0x2f,0xf4] + vcomiss {sae}, %xmm28, %xmm14 + +// CHECK: vcomiss (%rcx), %xmm14 +// CHECK: encoding: [0xc5,0x78,0x2f,0x31] + vcomiss (%rcx), %xmm14 + +// CHECK: vcomiss 291(%rax,%r14,8), %xmm14 +// CHECK: encoding: [0xc4,0x21,0x78,0x2f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcomiss 291(%rax,%r14,8), %xmm14 + +// CHECK: vcomiss 508(%rdx), %xmm14 +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0xfc,0x01,0x00,0x00] + vcomiss 508(%rdx), %xmm14 + +// CHECK: vcomiss 512(%rdx), %xmm14 +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0x00,0x02,0x00,0x00] + vcomiss 512(%rdx), %xmm14 + +// CHECK: vcomiss -512(%rdx), %xmm14 +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0x00,0xfe,0xff,0xff] + vcomiss -512(%rdx), %xmm14 + +// CHECK: vcomiss -516(%rdx), %xmm14 +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0xfc,0xfd,0xff,0xff] + vcomiss -516(%rdx), %xmm14 + +// CHECK: vucomisd %xmm10, %xmm11 +// CHECK: encoding: [0xc4,0x41,0x79,0x2e,0xda] + vucomisd %xmm10, %xmm11 + +// CHECK: vucomisd {sae}, %xmm10, %xmm11 +// CHECK: encoding: [0x62,0x51,0xfd,0x18,0x2e,0xda] + vucomisd {sae}, %xmm10, %xmm11 + +// CHECK: vucomisd (%rcx), %xmm11 +// CHECK: encoding: [0xc5,0x79,0x2e,0x19] + vucomisd (%rcx), %xmm11 + +// CHECK: vucomisd 291(%rax,%r14,8), %xmm11 +// CHECK: encoding: [0xc4,0x21,0x79,0x2e,0x9c,0xf0,0x23,0x01,0x00,0x00] + vucomisd 291(%rax,%r14,8), %xmm11 + +// CHECK: vucomisd 1016(%rdx), %xmm11 +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0xf8,0x03,0x00,0x00] + vucomisd 1016(%rdx), %xmm11 + +// CHECK: vucomisd 1024(%rdx), %xmm11 +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0x00,0x04,0x00,0x00] + vucomisd 1024(%rdx), %xmm11 + +// CHECK: vucomisd -1024(%rdx), %xmm11 +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0x00,0xfc,0xff,0xff] + vucomisd -1024(%rdx), %xmm11 + +// CHECK: vucomisd -1032(%rdx), %xmm11 +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0xf8,0xfb,0xff,0xff] + vucomisd -1032(%rdx), %xmm11 + +// CHECK: vucomiss %xmm11, %xmm22 +// CHECK: encoding: [0x62,0xc1,0x7c,0x08,0x2e,0xf3] + vucomiss %xmm11, %xmm22 + +// CHECK: vucomiss {sae}, %xmm11, %xmm22 +// CHECK: encoding: [0x62,0xc1,0x7c,0x18,0x2e,0xf3] + vucomiss {sae}, %xmm11, %xmm22 + +// CHECK: vucomiss (%rcx), %xmm22 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x31] + vucomiss (%rcx), %xmm22 + +// CHECK: vucomiss 291(%rax,%r14,8), %xmm22 +// CHECK: encoding: [0x62,0xa1,0x7c,0x08,0x2e,0xb4,0xf0,0x23,0x01,0x00,0x00] + vucomiss 291(%rax,%r14,8), %xmm22 + +// CHECK: vucomiss 508(%rdx), %xmm22 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x72,0x7f] + vucomiss 508(%rdx), %xmm22 + +// CHECK: vucomiss 512(%rdx), %xmm22 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0xb2,0x00,0x02,0x00,0x00] + vucomiss 512(%rdx), %xmm22 + +// CHECK: vucomiss -512(%rdx), %xmm22 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x72,0x80] + vucomiss -512(%rdx), %xmm22 + +// CHECK: vucomiss -516(%rdx), %xmm22 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0xb2,0xfc,0xfd,0xff,0xff] + vucomiss -516(%rdx), %xmm22 |