From ad5d223cb54a06a53f78964afb17a15d4977ab0a Mon Sep 17 00:00:00 2001 From: Robert Khasanov Date: Tue, 14 Oct 2014 15:13:56 +0000 Subject: [PATCH] [AVX512] Extended avx512_binop_rm to DQ/VL subsets. Added encoding tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219686 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrAVX512.td | 2 + test/MC/X86/x86-64-avx512dq.s | 58 +++++++++++++++- test/MC/X86/x86-64-avx512dq_vl.s | 113 +++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 test/MC/X86/x86-64-avx512dq_vl.s diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 00b00aa75a1..630571bffa8 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -2697,6 +2697,8 @@ defm VPMULLD : avx512_binop_rm_vl_d<0x40, "vpmull", mul, SSE_INTALU_ITINS_P, HasAVX512, 1>, T8PD; defm VPMULLW : avx512_binop_rm_vl_w<0xD5, "vpmull", mul, SSE_INTALU_ITINS_P, HasBWI, 1>; +defm VPMULLQ : avx512_binop_rm_vl_q<0x40, "vpmull", mul, + SSE_INTALU_ITINS_P, HasDQI, 1>, T8PD; defm VPMULDQZ : avx512_binop_rm2<0x28, "vpmuldq", v8i64, v16i32, VK8WM, VR512, memopv8i64, i512mem, loadi64, i64mem, "{1to8}", diff --git a/test/MC/X86/x86-64-avx512dq.s b/test/MC/X86/x86-64-avx512dq.s index 23fa66c922f..aac176517bf 100644 --- a/test/MC/X86/x86-64-avx512dq.s +++ b/test/MC/X86/x86-64-avx512dq.s @@ -1,4 +1,60 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx --show-encoding %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512dq --show-encoding %s | FileCheck %s + +// CHECK: vpmullq %zmm18, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xa2,0xbd,0x40,0x40,0xd2] + vpmullq %zmm18, %zmm24, %zmm18 + +// CHECK: vpmullq %zmm18, %zmm24, %zmm18 {%k2} +// CHECK: encoding: [0x62,0xa2,0xbd,0x42,0x40,0xd2] + vpmullq %zmm18, %zmm24, %zmm18 {%k2} + +// CHECK: vpmullq %zmm18, %zmm24, %zmm18 {%k2} {z} +// CHECK: encoding: [0x62,0xa2,0xbd,0xc2,0x40,0xd2] + vpmullq %zmm18, %zmm24, %zmm18 {%k2} {z} + +// CHECK: vpmullq (%rcx), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x40,0x40,0x11] + vpmullq (%rcx), %zmm24, %zmm18 + +// CHECK: vpmullq 291(%rax,%r14,8), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xa2,0xbd,0x40,0x40,0x94,0xf0,0x23,0x01,0x00,0x00] + vpmullq 291(%rax,%r14,8), %zmm24, %zmm18 + +// CHECK: vpmullq (%rcx){1to8}, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x50,0x40,0x11] + vpmullq (%rcx){1to8}, %zmm24, %zmm18 + +// CHECK: vpmullq 8128(%rdx), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x40,0x40,0x52,0x7f] + vpmullq 8128(%rdx), %zmm24, %zmm18 + +// CHECK: vpmullq 8192(%rdx), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x40,0x40,0x92,0x00,0x20,0x00,0x00] + vpmullq 8192(%rdx), %zmm24, %zmm18 + +// CHECK: vpmullq -8192(%rdx), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x40,0x40,0x52,0x80] + vpmullq -8192(%rdx), %zmm24, %zmm18 + +// CHECK: vpmullq -8256(%rdx), %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x40,0x40,0x92,0xc0,0xdf,0xff,0xff] + vpmullq -8256(%rdx), %zmm24, %zmm18 + +// CHECK: vpmullq 1016(%rdx){1to8}, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x50,0x40,0x52,0x7f] + vpmullq 1016(%rdx){1to8}, %zmm24, %zmm18 + +// CHECK: vpmullq 1024(%rdx){1to8}, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x50,0x40,0x92,0x00,0x04,0x00,0x00] + vpmullq 1024(%rdx){1to8}, %zmm24, %zmm18 + +// CHECK: vpmullq -1024(%rdx){1to8}, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x50,0x40,0x52,0x80] + vpmullq -1024(%rdx){1to8}, %zmm24, %zmm18 + +// CHECK: vpmullq -1032(%rdx){1to8}, %zmm24, %zmm18 +// CHECK: encoding: [0x62,0xe2,0xbd,0x50,0x40,0x92,0xf8,0xfb,0xff,0xff] + vpmullq -1032(%rdx){1to8}, %zmm24, %zmm18 // CHECK: kandb %k6, %k5, %k2 // CHECK: encoding: [0xc5,0xd5,0x41,0xd6] diff --git a/test/MC/X86/x86-64-avx512dq_vl.s b/test/MC/X86/x86-64-avx512dq_vl.s new file mode 100644 index 00000000000..38aab78be2c --- /dev/null +++ b/test/MC/X86/x86-64-avx512dq_vl.s @@ -0,0 +1,113 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512dq -mattr=+avx512vl --show-encoding %s | FileCheck %s + +// CHECK: vpmullq %xmm22, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x22,0xf5,0x00,0x40,0xd6] + vpmullq %xmm22, %xmm17, %xmm26 + +// CHECK: vpmullq %xmm22, %xmm17, %xmm26 {%k6} +// CHECK: encoding: [0x62,0x22,0xf5,0x06,0x40,0xd6] + vpmullq %xmm22, %xmm17, %xmm26 {%k6} + +// CHECK: vpmullq %xmm22, %xmm17, %xmm26 {%k6} {z} +// CHECK: encoding: [0x62,0x22,0xf5,0x86,0x40,0xd6] + vpmullq %xmm22, %xmm17, %xmm26 {%k6} {z} + +// CHECK: vpmullq (%rcx), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x40,0x11] + vpmullq (%rcx), %xmm17, %xmm26 + +// CHECK: vpmullq 291(%rax,%r14,8), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x22,0xf5,0x00,0x40,0x94,0xf0,0x23,0x01,0x00,0x00] + vpmullq 291(%rax,%r14,8), %xmm17, %xmm26 + +// CHECK: vpmullq (%rcx){1to2}, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x40,0x11] + vpmullq (%rcx){1to2}, %xmm17, %xmm26 + +// CHECK: vpmullq 2032(%rdx), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x40,0x52,0x7f] + vpmullq 2032(%rdx), %xmm17, %xmm26 + +// CHECK: vpmullq 2048(%rdx), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x40,0x92,0x00,0x08,0x00,0x00] + vpmullq 2048(%rdx), %xmm17, %xmm26 + +// CHECK: vpmullq -2048(%rdx), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x40,0x52,0x80] + vpmullq -2048(%rdx), %xmm17, %xmm26 + +// CHECK: vpmullq -2064(%rdx), %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x40,0x92,0xf0,0xf7,0xff,0xff] + vpmullq -2064(%rdx), %xmm17, %xmm26 + +// CHECK: vpmullq 1016(%rdx){1to2}, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x40,0x52,0x7f] + vpmullq 1016(%rdx){1to2}, %xmm17, %xmm26 + +// CHECK: vpmullq 1024(%rdx){1to2}, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x40,0x92,0x00,0x04,0x00,0x00] + vpmullq 1024(%rdx){1to2}, %xmm17, %xmm26 + +// CHECK: vpmullq -1024(%rdx){1to2}, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x40,0x52,0x80] + vpmullq -1024(%rdx){1to2}, %xmm17, %xmm26 + +// CHECK: vpmullq -1032(%rdx){1to2}, %xmm17, %xmm26 +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x40,0x92,0xf8,0xfb,0xff,0xff] + vpmullq -1032(%rdx){1to2}, %xmm17, %xmm26 + +// CHECK: vpmullq %ymm25, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x02,0xb5,0x20,0x40,0xc9] + vpmullq %ymm25, %ymm25, %ymm25 + +// CHECK: vpmullq %ymm25, %ymm25, %ymm25 {%k3} +// CHECK: encoding: [0x62,0x02,0xb5,0x23,0x40,0xc9] + vpmullq %ymm25, %ymm25, %ymm25 {%k3} + +// CHECK: vpmullq %ymm25, %ymm25, %ymm25 {%k3} {z} +// CHECK: encoding: [0x62,0x02,0xb5,0xa3,0x40,0xc9] + vpmullq %ymm25, %ymm25, %ymm25 {%k3} {z} + +// CHECK: vpmullq (%rcx), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x20,0x40,0x09] + vpmullq (%rcx), %ymm25, %ymm25 + +// CHECK: vpmullq 291(%rax,%r14,8), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x22,0xb5,0x20,0x40,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmullq 291(%rax,%r14,8), %ymm25, %ymm25 + +// CHECK: vpmullq (%rcx){1to4}, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x30,0x40,0x09] + vpmullq (%rcx){1to4}, %ymm25, %ymm25 + +// CHECK: vpmullq 4064(%rdx), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x20,0x40,0x4a,0x7f] + vpmullq 4064(%rdx), %ymm25, %ymm25 + +// CHECK: vpmullq 4096(%rdx), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x20,0x40,0x8a,0x00,0x10,0x00,0x00] + vpmullq 4096(%rdx), %ymm25, %ymm25 + +// CHECK: vpmullq -4096(%rdx), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x20,0x40,0x4a,0x80] + vpmullq -4096(%rdx), %ymm25, %ymm25 + +// CHECK: vpmullq -4128(%rdx), %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x20,0x40,0x8a,0xe0,0xef,0xff,0xff] + vpmullq -4128(%rdx), %ymm25, %ymm25 + +// CHECK: vpmullq 1016(%rdx){1to4}, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x30,0x40,0x4a,0x7f] + vpmullq 1016(%rdx){1to4}, %ymm25, %ymm25 + +// CHECK: vpmullq 1024(%rdx){1to4}, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x30,0x40,0x8a,0x00,0x04,0x00,0x00] + vpmullq 1024(%rdx){1to4}, %ymm25, %ymm25 + +// CHECK: vpmullq -1024(%rdx){1to4}, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x30,0x40,0x4a,0x80] + vpmullq -1024(%rdx){1to4}, %ymm25, %ymm25 + +// CHECK: vpmullq -1032(%rdx){1to4}, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x62,0xb5,0x30,0x40,0x8a,0xf8,0xfb,0xff,0xff] + vpmullq -1032(%rdx){1to4}, %ymm25, %ymm25 -- 2.34.1