1# Check 64bit AVX512VL,VPCLMULQDQ instructions
2
3	.allow_index_reg
4	.text
5_start:
6	vpclmulqdq	$0xab, %xmm18, %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ
7	vpclmulqdq	$123, 0x123(%rax,%r14,8), %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ
8	vpclmulqdq	$123, 2032(%rdx), %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ Disp8
9	vpclmulqdq	$0xab, %ymm18, %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ
10	vpclmulqdq	$123, 0x123(%rax,%r14,8), %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ
11	vpclmulqdq	$123, 4064(%rdx), %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ Disp8
12
13	{evex} vpclmulqdq	$0xab, %xmm18, %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ
14	{evex} vpclmulqdq	$123, 0x123(%rax,%r14,8), %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ
15	{evex} vpclmulqdq	$123, 2032(%rdx), %xmm29, %xmm25	 # AVX512VL,VPCLMULQDQ Disp8
16	{evex} vpclmulqdq	$0xab, %ymm18, %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ
17	{evex} vpclmulqdq	$123, 0x123(%rax,%r14,8), %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ
18	{evex} vpclmulqdq	$123, 4064(%rdx), %ymm18, %ymm29	 # AVX512VL,VPCLMULQDQ Disp8
19
20	vpclmulhqhqdq	%xmm20, %xmm21, %xmm22
21	vpclmulhqlqdq	%xmm21, %xmm22, %xmm23
22	vpclmullqhqdq	%xmm22, %xmm23, %xmm24
23	vpclmullqlqdq	%xmm23, %xmm24, %xmm25
24
25	vpclmulhqhqdq	%ymm20, %ymm21, %ymm22
26	vpclmulhqlqdq	%ymm21, %ymm22, %ymm23
27	vpclmullqhqdq	%ymm22, %ymm23, %ymm24
28	vpclmullqlqdq	%ymm23, %ymm24, %ymm25
29
30	.intel_syntax noprefix
31	vpclmulqdq	xmm19, xmm26, xmm20, 0xab	 # AVX512VL,VPCLMULQDQ
32	vpclmulqdq	xmm19, xmm26, XMMWORD PTR [rax+r14*8+0x1234], 123	 # AVX512VL,VPCLMULQDQ
33	vpclmulqdq	xmm19, xmm26, XMMWORD PTR [rdx+2032], 123	 # AVX512VL,VPCLMULQDQ Disp8
34	vpclmulqdq	ymm23, ymm29, ymm27, 0xab	 # AVX512VL,VPCLMULQDQ
35	vpclmulqdq	ymm23, ymm29, YMMWORD PTR [rax+r14*8+0x1234], 123	 # AVX512VL,VPCLMULQDQ
36	vpclmulqdq	ymm23, ymm29, YMMWORD PTR [rdx+4064], 123	 # AVX512VL,VPCLMULQDQ Disp8
37
38	{evex} vpclmulqdq	xmm19, xmm26, xmm20, 0xab	 # AVX512VL,VPCLMULQDQ
39	{evex} vpclmulqdq	xmm19, xmm26, XMMWORD PTR [rax+r14*8+0x1234], 123	 # AVX512VL,VPCLMULQDQ
40	{evex} vpclmulqdq	xmm19, xmm26, XMMWORD PTR [rdx+2032], 123	 # AVX512VL,VPCLMULQDQ Disp8
41	{evex} vpclmulqdq	ymm23, ymm29, ymm27, 0xab	 # AVX512VL,VPCLMULQDQ
42	{evex} vpclmulqdq	ymm23, ymm29, YMMWORD PTR [rax+r14*8+0x1234], 123	 # AVX512VL,VPCLMULQDQ
43	{evex} vpclmulqdq	ymm23, ymm29, YMMWORD PTR [rdx+4064], 123	 # AVX512VL,VPCLMULQDQ Disp8
44