# Check x86-64 AVX2 instructions

	.allow_index_reg
	.text
_start:

# Tests for op mem256, mask,  ymm
# Tests for op ymm, mask, mem256
	vpmaskmovd (%rcx),%ymm4,%ymm6
	vpmaskmovd %ymm4,%ymm6,(%rcx)
	vpmaskmovq (%rcx),%ymm4,%ymm6
	vpmaskmovq %ymm4,%ymm6,(%rcx)

# Tests for op imm8, ymm/mem256, ymm
	vpermpd $7,%ymm6,%ymm2
	vpermpd $7,(%rcx),%ymm6
	vpermq $7,%ymm6,%ymm2
	vpermq $7,(%rcx),%ymm6

# Tests for op ymm/mem256, ymm, ymm
	vpermd %ymm4,%ymm6,%ymm2
	vpermd (%rcx),%ymm6,%ymm2
	vpermps %ymm4,%ymm6,%ymm2
	vpermps (%rcx),%ymm6,%ymm2
	vpsllvd %ymm4,%ymm6,%ymm2
	vpsllvd (%rcx),%ymm6,%ymm2
	vpsllvq %ymm4,%ymm6,%ymm2
	vpsllvq (%rcx),%ymm6,%ymm2
	vpsravd %ymm4,%ymm6,%ymm2
	vpsravd (%rcx),%ymm6,%ymm2
	vpsrlvd %ymm4,%ymm6,%ymm2
	vpsrlvd (%rcx),%ymm6,%ymm2
	vpsrlvq %ymm4,%ymm6,%ymm2
	vpsrlvq (%rcx),%ymm6,%ymm2

# Tests for op mem256, ymm
	vmovntdqa (%rcx),%ymm4

# Tests for op ymm, xmm
	vbroadcastsd %xmm4,%ymm6
	vbroadcastss %xmm4,%ymm6

# Tests for op imm8, ymm/mem256, ymm, ymm
	vpblendd $7,%ymm4,%ymm6,%ymm2
	vpblendd $7,(%rcx),%ymm6,%ymm2
	vperm2i128 $7,%ymm4,%ymm6,%ymm2
	vperm2i128 $7,(%rcx),%ymm6,%ymm2

# Tests for op imm8, xmm/mem128, ymm, ymm
	vinserti128 $7,%xmm4,%ymm4,%ymm6
	vinserti128 $7,(%rcx),%ymm4,%ymm6

# Tests for op mem128, ymm
	vbroadcasti128 (%rcx),%ymm4

# Tests for op xmm/mem128, xmm, xmm
	vpsllvd %xmm4,%xmm6,%xmm2
	vpsllvd (%rcx),%xmm6,%xmm7
	vpsllvq %xmm4,%xmm6,%xmm2
	vpsllvq (%rcx),%xmm6,%xmm7
	vpsravd %xmm4,%xmm6,%xmm2
	vpsravd (%rcx),%xmm6,%xmm7
	vpsrlvd %xmm4,%xmm6,%xmm2
	vpsrlvd (%rcx),%xmm6,%xmm7
	vpsrlvq %xmm4,%xmm6,%xmm2
	vpsrlvq (%rcx),%xmm6,%xmm7

# Tests for op mem128, xmm, xmm
	vpmaskmovd (%rcx),%xmm4,%xmm6
	vpmaskmovq (%rcx),%xmm4,%xmm6

# Tests for op imm8, ymm, xmm128/mem
	vextracti128 $7,%ymm4,%xmm6
	vextracti128 $7,%ymm4,(%rcx)

# Tests for op xmm, xmm, mem128
	vpmaskmovd %xmm4,%xmm6,(%rcx)
	vpmaskmovq %xmm4,%xmm6,(%rcx)

# Tests for op imm8, xmm/mem128, xmm, xmm
	vpblendd $7,%xmm4,%xmm6,%xmm2
	vpblendd $7,(%rcx),%xmm6,%xmm2

# Tests for op xmm/mem64, xmm
	vpbroadcastq %xmm4,%xmm6
	vpbroadcastq (%rcx),%xmm4

# Tests for op xmm/mem64, ymm
	vpbroadcastq %xmm4,%ymm6
	vpbroadcastq (%rcx),%ymm4

# Tests for op xmm/mem32, ymm
	vpbroadcastd %xmm4,%ymm4
	vpbroadcastd (%rcx),%ymm4

# Tests for op xmm/mem32, xmm
	vpbroadcastd %xmm4,%xmm6
	vpbroadcastd (%rcx),%xmm4

# Tests for op xmm/m16, xmm
	vpbroadcastw %xmm4,%xmm6
	vpbroadcastw (%rcx),%xmm4

# Tests for op xmm/m16, ymm
	vpbroadcastw %xmm4,%ymm6
	vpbroadcastw (%rcx),%ymm4

# Tests for op xmm/m8, xmm
	vpbroadcastb %xmm4,%xmm6
	vpbroadcastb (%rcx),%xmm4

# Tests for op xmm/m8, ymm
	vpbroadcastb %xmm4,%ymm6
	vpbroadcastb (%rcx),%ymm4

# Tests for op xmm, xmm
	vbroadcastss %xmm4,%xmm6

	.intel_syntax noprefix

# Tests for op mem256, mask,  ymm
# Tests for op ymm, mask, mem256
	vpmaskmovd ymm6,ymm4,YMMWORD PTR [rcx]
	vpmaskmovd YMMWORD PTR [rcx],ymm6,ymm4
	vpmaskmovd ymm6,ymm4,[rcx]
	vpmaskmovd [rcx],ymm6,ymm4
	vpmaskmovq ymm6,ymm4,YMMWORD PTR [rcx]
	vpmaskmovq YMMWORD PTR [rcx],ymm6,ymm4
	vpmaskmovq ymm6,ymm4,[rcx]
	vpmaskmovq [rcx],ymm6,ymm4

# Tests for op imm8, ymm/mem256, ymm
	vpermpd ymm2,ymm6,7
	vpermpd ymm6,YMMWORD PTR [rcx],7
	vpermpd ymm6,[rcx],7
	vpermq ymm2,ymm6,7
	vpermq ymm6,YMMWORD PTR [rcx],7
	vpermq ymm6,[rcx],7

# Tests for op ymm/mem256, ymm, ymm
	vpermd ymm2,ymm6,ymm4
	vpermd ymm2,ymm6,YMMWORD PTR [rcx]
	vpermd ymm2,ymm6,[rcx]
	vpermps ymm2,ymm6,ymm4
	vpermps ymm2,ymm6,YMMWORD PTR [rcx]
	vpermps ymm2,ymm6,[rcx]
	vpsllvd ymm2,ymm6,ymm4
	vpsllvd ymm2,ymm6,YMMWORD PTR [rcx]
	vpsllvd ymm2,ymm6,[rcx]
	vpsllvq ymm2,ymm6,ymm4
	vpsllvq ymm2,ymm6,YMMWORD PTR [rcx]
	vpsllvq ymm2,ymm6,[rcx]
	vpsravd ymm2,ymm6,ymm4
	vpsravd ymm2,ymm6,YMMWORD PTR [rcx]
	vpsravd ymm2,ymm6,[rcx]
	vpsrlvd ymm2,ymm6,ymm4
	vpsrlvd ymm2,ymm6,YMMWORD PTR [rcx]
	vpsrlvd ymm2,ymm6,[rcx]
	vpsrlvq ymm2,ymm6,ymm4
	vpsrlvq ymm2,ymm6,YMMWORD PTR [rcx]
	vpsrlvq ymm2,ymm6,[rcx]

# Tests for op mem256, ymm
	vmovntdqa ymm4,YMMWORD PTR [rcx]
	vmovntdqa ymm4,[rcx]

# Tests for op ymm, xmm
	vbroadcastsd ymm6,xmm4
	vbroadcastss ymm6,xmm4

# Tests for op imm8, ymm/mem256, ymm, ymm
	vpblendd ymm2,ymm6,ymm4,7
	vpblendd ymm2,ymm6,YMMWORD PTR [rcx],7
	vpblendd ymm2,ymm6,[rcx],7
	vperm2i128 ymm2,ymm6,ymm4,7
	vperm2i128 ymm2,ymm6,YMMWORD PTR [rcx],7
	vperm2i128 ymm2,ymm6,[rcx],7

# Tests for op imm8, xmm/mem128, ymm, ymm
	vinserti128 ymm6,ymm4,xmm4,7
	vinserti128 ymm6,ymm4,XMMWORD PTR [rcx],7
	vinserti128 ymm6,ymm4,[rcx],7

# Tests for op mem128, ymm
	vbroadcasti128 ymm4,XMMWORD PTR [rcx]
	vbroadcasti128 ymm4,[rcx]

# Tests for op xmm/mem128, xmm, xmm
	vpsllvd xmm2,xmm6,xmm4
	vpsllvd xmm7,xmm6,XMMWORD PTR [rcx]
	vpsllvd xmm7,xmm6,[rcx]
	vpsllvq xmm2,xmm6,xmm4
	vpsllvq xmm7,xmm6,XMMWORD PTR [rcx]
	vpsllvq xmm7,xmm6,[rcx]
	vpsravd xmm2,xmm6,xmm4
	vpsravd xmm7,xmm6,XMMWORD PTR [rcx]
	vpsravd xmm7,xmm6,[rcx]
	vpsrlvd xmm2,xmm6,xmm4
	vpsrlvd xmm7,xmm6,XMMWORD PTR [rcx]
	vpsrlvd xmm7,xmm6,[rcx]
	vpsrlvq xmm2,xmm6,xmm4
	vpsrlvq xmm7,xmm6,XMMWORD PTR [rcx]
	vpsrlvq xmm7,xmm6,[rcx]

# Tests for op mem128, xmm, xmm
	vpmaskmovd xmm6,xmm4,XMMWORD PTR [rcx]
	vpmaskmovd xmm6,xmm4,[rcx]
	vpmaskmovq xmm6,xmm4,XMMWORD PTR [rcx]
	vpmaskmovq xmm6,xmm4,[rcx]

# Tests for op imm8, ymm, xmm128/mem
	vextracti128 xmm6,ymm4,7
	vextracti128 XMMWORD PTR [rcx],ymm4,7
	vextracti128 [rcx],ymm4,7

# Tests for op xmm, xmm, mem128
	vpmaskmovd XMMWORD PTR [rcx],xmm6,xmm4
	vpmaskmovd [rcx],xmm6,xmm4
	vpmaskmovq XMMWORD PTR [rcx],xmm6,xmm4
	vpmaskmovq [rcx],xmm6,xmm4

# Tests for op imm8, xmm/mem128, xmm, xmm
	vpblendd xmm2,xmm6,xmm4,7
	vpblendd xmm2,xmm6,XMMWORD PTR [rcx],7
	vpblendd xmm2,xmm6,[rcx],7

# Tests for op xmm/mem64, xmm
	vpbroadcastq xmm6,xmm4
	vpbroadcastq xmm4,QWORD PTR [rcx]
	vpbroadcastq xmm4,[rcx]

# Tests for op xmm/mem64, ymm
	vpbroadcastq ymm6,xmm4
	vpbroadcastq ymm4,QWORD PTR [rcx]
	vpbroadcastq ymm4,[rcx]

# Tests for op xmm/mem32, ymm
	vpbroadcastd ymm4,xmm4
	vpbroadcastd ymm4,DWORD PTR [rcx]
	vpbroadcastd ymm4,[rcx]

# Tests for op xmm/mem32, xmm
	vpbroadcastd xmm6,xmm4
	vpbroadcastd xmm4,DWORD PTR [rcx]
	vpbroadcastd xmm4,[rcx]

# Tests for op xmm/m16, xmm
	vpbroadcastw xmm6,xmm4
	vpbroadcastw xmm4,WORD PTR [rcx]
	vpbroadcastw xmm4,[rcx]

# Tests for op xmm/m16, ymm
	vpbroadcastw ymm6,xmm4
	vpbroadcastw ymm4,WORD PTR [rcx]
	vpbroadcastw ymm4,[rcx]

# Tests for op xmm/m8, xmm
	vpbroadcastb xmm6,xmm4
	vpbroadcastb xmm4,BYTE PTR [rcx]
	vpbroadcastb xmm4,[rcx]

# Tests for op xmm/m8, ymm
	vpbroadcastb ymm6,xmm4
	vpbroadcastb ymm4,BYTE PTR [rcx]
	vpbroadcastb ymm4,[rcx]

# Tests for op xmm, xmm
	vbroadcastss xmm6,xmm4
