llvm/test/MC/X86/avx512bw-encoding.s
Michael Zuckerman d5f902eb11 [x86][inline-asm][avx512] allow swapping of '{k<num>}' & '{z}' marks
Committing on behalf of Coby Tayree: After check-all and LGTM

Desc:

AVX512 allows dest operand to be followed by an op-mask register specifier ('{k<num>}', which in turn may be followed by a merging/zeroing specifier ('{z}')
 Currently, the following forms are allowed:
 {k<num>}
 {k<num>}{z}

This patch allows the following forms:
 {z}{k<num>}

and ignores the next form:
 {z}

Justification would be quite simple - GCC

Differential Revision: http://reviews.llvm.org/D25013



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284479 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-18 13:52:39 +00:00

287 lines
11 KiB
ArmAsm

// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx --show-encoding %s | FileCheck %s
// CHECK: vpblendmb %zmm25, %zmm18, %zmm17
// CHECK: encoding: [0x62,0x82,0x6d,0x40,0x66,0xc9]
vpblendmb %zmm25, %zmm18, %zmm17
// CHECK: vpblendmb %zmm25, %zmm18, %zmm17 {%k5}
// CHECK: encoding: [0x62,0x82,0x6d,0x45,0x66,0xc9]
vpblendmb %zmm25, %zmm18, %zmm17 {%k5}
// CHECK: vpblendmb %zmm25, %zmm18, %zmm17 {%k5} {z}
// CHECK: encoding: [0x62,0x82,0x6d,0xc5,0x66,0xc9]
vpblendmb %zmm25, %zmm18, %zmm17 {%k5} {z}
// CHECK: vpblendmb %zmm25, %zmm18, %zmm17 {%k5} {z}
// CHECK: encoding: [0x62,0x82,0x6d,0xc5,0x66,0xc9]
vpblendmb %zmm25, %zmm18, %zmm17 {z} {%k5}
// CHECK: vpblendmb (%rcx), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xe2,0x6d,0x40,0x66,0x09]
vpblendmb (%rcx), %zmm18, %zmm17
// CHECK: vpblendmb 291(%rax,%r14,8), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xa2,0x6d,0x40,0x66,0x8c,0xf0,0x23,0x01,0x00,0x00]
vpblendmb 291(%rax,%r14,8), %zmm18, %zmm17
// CHECK: vpblendmb 8128(%rdx), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xe2,0x6d,0x40,0x66,0x4a,0x7f]
vpblendmb 8128(%rdx), %zmm18, %zmm17
// CHECK: vpblendmb 8192(%rdx), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xe2,0x6d,0x40,0x66,0x8a,0x00,0x20,0x00,0x00]
vpblendmb 8192(%rdx), %zmm18, %zmm17
// CHECK: vpblendmb -8192(%rdx), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xe2,0x6d,0x40,0x66,0x4a,0x80]
vpblendmb -8192(%rdx), %zmm18, %zmm17
// CHECK: vpblendmb -8256(%rdx), %zmm18, %zmm17
// CHECK: encoding: [0x62,0xe2,0x6d,0x40,0x66,0x8a,0xc0,0xdf,0xff,0xff]
vpblendmb -8256(%rdx), %zmm18, %zmm17
// CHECK: vpblendmw %zmm17, %zmm20, %zmm26
// CHECK: encoding: [0x62,0x22,0xdd,0x40,0x66,0xd1]
vpblendmw %zmm17, %zmm20, %zmm26
// CHECK: vpblendmw %zmm17, %zmm20, %zmm26 {%k7}
// CHECK: encoding: [0x62,0x22,0xdd,0x47,0x66,0xd1]
vpblendmw %zmm17, %zmm20, %zmm26 {%k7}
// CHECK: vpblendmw %zmm17, %zmm20, %zmm26 {%k7} {z}
// CHECK: encoding: [0x62,0x22,0xdd,0xc7,0x66,0xd1]
vpblendmw %zmm17, %zmm20, %zmm26 {%k7} {z}
// CHECK: vpblendmw (%rcx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x11]
vpblendmw (%rcx), %zmm20, %zmm26
// CHECK: vpblendmw 291(%rax,%r14,8), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x22,0xdd,0x40,0x66,0x94,0xf0,0x23,0x01,0x00,0x00]
vpblendmw 291(%rax,%r14,8), %zmm20, %zmm26
// CHECK: vpblendmw 8128(%rdx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x52,0x7f]
vpblendmw 8128(%rdx), %zmm20, %zmm26
// CHECK: vpblendmw 8192(%rdx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x92,0x00,0x20,0x00,0x00]
vpblendmw 8192(%rdx), %zmm20, %zmm26
// CHECK: vpblendmw -8192(%rdx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x52,0x80]
vpblendmw -8192(%rdx), %zmm20, %zmm26
// CHECK: vpblendmw -8256(%rdx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x92,0xc0,0xdf,0xff,0xff]
vpblendmw -8256(%rdx), %zmm20, %zmm26
// CHECK: vptestmb %zmm19, %zmm17, %k5
// CHECK: encoding: [0x62,0xb2,0x75,0x40,0x26,0xeb]
vptestmb %zmm19, %zmm17, %k5
// CHECK: vptestmb %zmm19, %zmm17, %k5 {%k3}
// CHECK: encoding: [0x62,0xb2,0x75,0x43,0x26,0xeb]
vptestmb %zmm19, %zmm17, %k5 {%k3}
// CHECK: vptestmb (%rcx), %zmm17, %k5
// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x29]
vptestmb (%rcx), %zmm17, %k5
// CHECK: vptestmb 291(%rax,%r14,8), %zmm17, %k5
// CHECK: encoding: [0x62,0xb2,0x75,0x40,0x26,0xac,0xf0,0x23,0x01,0x00,0x00]
vptestmb 291(%rax,%r14,8), %zmm17, %k5
// CHECK: vptestmb 8128(%rdx), %zmm17, %k5
// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x6a,0x7f]
vptestmb 8128(%rdx), %zmm17, %k5
// CHECK: vptestmb 8192(%rdx), %zmm17, %k5
// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0xaa,0x00,0x20,0x00,0x00]
vptestmb 8192(%rdx), %zmm17, %k5
// CHECK: vptestmb -8192(%rdx), %zmm17, %k5
// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x6a,0x80]
vptestmb -8192(%rdx), %zmm17, %k5
// CHECK: vptestmb -8256(%rdx), %zmm17, %k5
// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0xaa,0xc0,0xdf,0xff,0xff]
vptestmb -8256(%rdx), %zmm17, %k5
// CHECK: vptestmw %zmm19, %zmm29, %k4
// CHECK: encoding: [0x62,0xb2,0x95,0x40,0x26,0xe3]
vptestmw %zmm19, %zmm29, %k4
// CHECK: vptestmw %zmm19, %zmm29, %k4 {%k2}
// CHECK: encoding: [0x62,0xb2,0x95,0x42,0x26,0xe3]
vptestmw %zmm19, %zmm29, %k4 {%k2}
// CHECK: vptestmw (%rcx), %zmm29, %k4
// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x21]
vptestmw (%rcx), %zmm29, %k4
// CHECK: vptestmw 291(%rax,%r14,8), %zmm29, %k4
// CHECK: encoding: [0x62,0xb2,0x95,0x40,0x26,0xa4,0xf0,0x23,0x01,0x00,0x00]
vptestmw 291(%rax,%r14,8), %zmm29, %k4
// CHECK: vptestmw 8128(%rdx), %zmm29, %k4
// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x62,0x7f]
vptestmw 8128(%rdx), %zmm29, %k4
// CHECK: vptestmw 8192(%rdx), %zmm29, %k4
// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0xa2,0x00,0x20,0x00,0x00]
vptestmw 8192(%rdx), %zmm29, %k4
// CHECK: vptestmw -8192(%rdx), %zmm29, %k4
// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x62,0x80]
vptestmw -8192(%rdx), %zmm29, %k4
// CHECK: vptestmw -8256(%rdx), %zmm29, %k4
// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0xa2,0xc0,0xdf,0xff,0xff]
vptestmw -8256(%rdx), %zmm29, %k4
// CHECK: vptestnmb %zmm23, %zmm24, %k2
// CHECK: encoding: [0x62,0xb2,0x3e,0x40,0x26,0xd7]
vptestnmb %zmm23, %zmm24, %k2
// CHECK: vptestnmb %zmm23, %zmm24, %k2 {%k7}
// CHECK: encoding: [0x62,0xb2,0x3e,0x47,0x26,0xd7]
vptestnmb %zmm23, %zmm24, %k2 {%k7}
// CHECK: vptestnmb (%rcx), %zmm24, %k2
// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x11]
vptestnmb (%rcx), %zmm24, %k2
// CHECK: vptestnmb 291(%rax,%r14,8), %zmm24, %k2
// CHECK: encoding: [0x62,0xb2,0x3e,0x40,0x26,0x94,0xf0,0x23,0x01,0x00,0x00]
vptestnmb 291(%rax,%r14,8), %zmm24, %k2
// CHECK: vptestnmb 8128(%rdx), %zmm24, %k2
// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x52,0x7f]
vptestnmb 8128(%rdx), %zmm24, %k2
// CHECK: vptestnmb 8192(%rdx), %zmm24, %k2
// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x92,0x00,0x20,0x00,0x00]
vptestnmb 8192(%rdx), %zmm24, %k2
// CHECK: vptestnmb -8192(%rdx), %zmm24, %k2
// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x52,0x80]
vptestnmb -8192(%rdx), %zmm24, %k2
// CHECK: vptestnmb -8256(%rdx), %zmm24, %k2
// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x92,0xc0,0xdf,0xff,0xff]
vptestnmb -8256(%rdx), %zmm24, %k2
// CHECK: vptestnmw %zmm27, %zmm18, %k4
// CHECK: encoding: [0x62,0x92,0xee,0x40,0x26,0xe3]
vptestnmw %zmm27, %zmm18, %k4
// CHECK: vptestnmw %zmm27, %zmm18, %k4 {%k5}
// CHECK: encoding: [0x62,0x92,0xee,0x45,0x26,0xe3]
vptestnmw %zmm27, %zmm18, %k4 {%k5}
// CHECK: vptestnmw (%rcx), %zmm18, %k4
// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x21]
vptestnmw (%rcx), %zmm18, %k4
// CHECK: vptestnmw 291(%rax,%r14,8), %zmm18, %k4
// CHECK: encoding: [0x62,0xb2,0xee,0x40,0x26,0xa4,0xf0,0x23,0x01,0x00,0x00]
vptestnmw 291(%rax,%r14,8), %zmm18, %k4
// CHECK: vptestnmw 8128(%rdx), %zmm18, %k4
// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x62,0x7f]
vptestnmw 8128(%rdx), %zmm18, %k4
// CHECK: vptestnmw 8192(%rdx), %zmm18, %k4
// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0xa2,0x00,0x20,0x00,0x00]
vptestnmw 8192(%rdx), %zmm18, %k4
// CHECK: vptestnmw -8192(%rdx), %zmm18, %k4
// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x62,0x80]
vptestnmw -8192(%rdx), %zmm18, %k4
// CHECK: vptestnmw -8256(%rdx), %zmm18, %k4
// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0xa2,0xc0,0xdf,0xff,0xff]
vptestnmw -8256(%rdx), %zmm18, %k4
// CHECK: vptestnmb %zmm19, %zmm27, %k3
// CHECK: encoding: [0x62,0xb2,0x26,0x40,0x26,0xdb]
vptestnmb %zmm19, %zmm27, %k3
// CHECK: vptestnmb %zmm19, %zmm27, %k3 {%k2}
// CHECK: encoding: [0x62,0xb2,0x26,0x42,0x26,0xdb]
vptestnmb %zmm19, %zmm27, %k3 {%k2}
// CHECK: vptestnmb (%rcx), %zmm27, %k3
// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x19]
vptestnmb (%rcx), %zmm27, %k3
// CHECK: vptestnmb 4660(%rax,%r14,8), %zmm27, %k3
// CHECK: encoding: [0x62,0xb2,0x26,0x40,0x26,0x9c,0xf0,0x34,0x12,0x00,0x00]
vptestnmb 4660(%rax,%r14,8), %zmm27, %k3
// CHECK: vptestnmb 8128(%rdx), %zmm27, %k3
// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x5a,0x7f]
vptestnmb 8128(%rdx), %zmm27, %k3
// CHECK: vptestnmb 8192(%rdx), %zmm27, %k3
// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x9a,0x00,0x20,0x00,0x00]
vptestnmb 8192(%rdx), %zmm27, %k3
// CHECK: vptestnmb -8192(%rdx), %zmm27, %k3
// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x5a,0x80]
vptestnmb -8192(%rdx), %zmm27, %k3
// CHECK: vptestnmb -8256(%rdx), %zmm27, %k3
// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x9a,0xc0,0xdf,0xff,0xff]
vptestnmb -8256(%rdx), %zmm27, %k3
// CHECK: vptestnmw %zmm21, %zmm17, %k2
// CHECK: encoding: [0x62,0xb2,0xf6,0x40,0x26,0xd5]
vptestnmw %zmm21, %zmm17, %k2
// CHECK: vptestnmw %zmm21, %zmm17, %k2 {%k4}
// CHECK: encoding: [0x62,0xb2,0xf6,0x44,0x26,0xd5]
vptestnmw %zmm21, %zmm17, %k2 {%k4}
// CHECK: vptestnmw (%rcx), %zmm17, %k2
// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x11]
vptestnmw (%rcx), %zmm17, %k2
// CHECK: vptestnmw 4660(%rax,%r14,8), %zmm17, %k2
// CHECK: encoding: [0x62,0xb2,0xf6,0x40,0x26,0x94,0xf0,0x34,0x12,0x00,0x00]
vptestnmw 4660(%rax,%r14,8), %zmm17, %k2
// CHECK: vptestnmw 8128(%rdx), %zmm17, %k2
// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x52,0x7f]
vptestnmw 8128(%rdx), %zmm17, %k2
// CHECK: vptestnmw 8192(%rdx), %zmm17, %k2
// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x92,0x00,0x20,0x00,0x00]
vptestnmw 8192(%rdx), %zmm17, %k2
// CHECK: vptestnmw -8192(%rdx), %zmm17, %k2
// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x52,0x80]
vptestnmw -8192(%rdx), %zmm17, %k2
// CHECK: vptestnmw -8256(%rdx), %zmm17, %k2
// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x92,0xc0,0xdf,0xff,0xff]
vptestnmw -8256(%rdx), %zmm17, %k2
// CHECK: vpmovb2m %zmm28, %k5
// CHECK: encoding: [0x62,0x92,0x7e,0x48,0x29,0xec]
vpmovb2m %zmm28, %k5
// CHECK: vpmovw2m %zmm30, %k3
// CHECK: encoding: [0x62,0x92,0xfe,0x48,0x29,0xde]
vpmovw2m %zmm30, %k3
// CHECK: vpmovm2b %k3, %zmm18
// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x28,0xd3]
vpmovm2b %k3, %zmm18
// CHECK: vpmovm2w %k5, %zmm24
// CHECK: encoding: [0x62,0x62,0xfe,0x48,0x28,0xc5]
vpmovm2w %k5, %zmm24