1/*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source.  A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12/*
13 * Copyright 2016 Joyent, Inc.
14 */
15
16/*
17 * Test SSE 4.2 related instructions
18 */
19
20.text
21.align 16
22.globl libdis_test
23.type libdis_test, @function
24libdis_test:
25	blendpd		$0x42, %xmm0, %xmm1
26	blendpd		$0x42, (%rbx), %xmm1
27	blendps		$0x42, %xmm0, %xmm1
28	blendps		$0x42, (%rbx), %xmm1
29	blendvpd	%xmm1, %xmm2
30	blendvpd	(%rbx), %xmm2
31	blendvpd	0x42(%rbx), %xmm2
32	blendvps	%xmm1, %xmm2
33	blendvps	(%rbx), %xmm2
34	blendvps	0x42(%rbx), %xmm2
35	dppd		$0x42, %xmm0, %xmm1
36	dppd		$0x42, (%rbx), %xmm1
37	dpps		$0x42, %xmm0, %xmm1
38	dpps		$0x42, (%rbx), %xmm1
39	extractps	$0x23, %xmm6, %rbx
40	extractps	$0x23, %xmm6, (%rbx)
41	insertps	$0x23, %xmm1, %xmm2
42	insertps	$0x23, (%rbx), %xmm2
43	insertps	$0x23, 0x42(%rbx), %xmm2
44	movntdqa	(%rbx), %xmm0
45	mpsadbw		$0x23, %xmm1, %xmm2
46	mpsadbw		$0x23, (%rbx), %xmm2
47	mpsadbw		$0x23, 0x42(%rbx), %xmm2
48	packusdw	%xmm1, %xmm2
49	packusdw	(%rbx), %xmm2
50	packusdw	0x42(%rbx), %xmm2
51	pblendvb	%xmm1, %xmm2
52	pblendvb	(%rbx), %xmm2
53	pblendvb	0x42(%rbx), %xmm2
54	pblendw		$0x23, %xmm1, %xmm2
55	pblendw		$0x23, (%rbx), %xmm2
56	pblendw		$0x23, 0x42(%rbx), %xmm2
57	pcmpeqq		%xmm1, %xmm2
58	pcmpeqq		(%rbx), %xmm2
59	pcmpeqq		0x42(%rbx), %xmm2
60	pextrb		$0x23, %xmm4, %rdx
61	pextrb		$0x23, %xmm4, (%rdx)
62	pextrd		$0x23, %xmm4, %edx
63	pextrd		$0x23, %xmm4, (%rdx)
64	pextrq		$0x23, %xmm4, %rdx
65	pextrq		$0x23, %xmm4, (%rdx)
66	pextrw		$0x23, %xmm4, %rdx
67	pextrw		$0x23, %xmm4, (%rdx)
68	phminposuw	%xmm1, %xmm2
69	phminposuw	(%rbx), %xmm2
70	phminposuw	0x42(%rbx), %xmm2
71	pinsrb		$0x23, %rbx, %xmm2
72	pinsrb		$0x23, (%rbx), %xmm2
73	pinsrb		$0x23, 0x42(%rbx), %xmm2
74	pinsrd		$0x23, %ebx, %xmm2
75	pinsrd		$0x23, (%rbx), %xmm2
76	pinsrd		$0x23, 0x42(%rbx), %xmm2
77	pinsrq		$0x23, %rbx, %xmm2
78	pinsrq		$0x23, (%rbx), %xmm2
79	pinsrq		$0x23, 0x42(%rbx), %xmm2
80	pmaxsb		%xmm1, %xmm2
81	pmaxsb		(%rbx), %xmm2
82	pmaxsb		0x42(%rbx), %xmm2
83	pmaxsd		%xmm1, %xmm2
84	pmaxsd		(%rbx), %xmm2
85	pmaxsd		0x42(%rbx), %xmm2
86	pmaxud		%xmm1, %xmm2
87	pmaxud		(%rbx), %xmm2
88	pmaxud		0x42(%rbx), %xmm2
89	pmaxuw		%xmm1, %xmm2
90	pmaxuw		(%rbx), %xmm2
91	pmaxuw		0x42(%rbx), %xmm2
92	pminsb		%xmm1, %xmm2
93	pminsb		(%rbx), %xmm2
94	pminsb		0x42(%rbx), %xmm2
95	pminsd		%xmm1, %xmm2
96	pminsd		(%rbx), %xmm2
97	pminsd		0x42(%rbx), %xmm2
98	pminud		%xmm1, %xmm2
99	pminud		(%rbx), %xmm2
100	pminud		0x42(%rbx), %xmm2
101	pminuw		%xmm1, %xmm2
102	pminuw		(%rbx), %xmm2
103	pminuw		0x42(%rbx), %xmm2
104	pmovsxbd	%xmm1, %xmm2
105	pmovsxbd	(%rbx), %xmm2
106	pmovsxbd	0x42(%rbx), %xmm2
107	pmovsxbq	%xmm1, %xmm2
108	pmovsxbq	(%rbx), %xmm2
109	pmovsxbq	0x42(%rbx), %xmm2
110	pmovsxbw	%xmm1, %xmm2
111	pmovsxbw	(%rbx), %xmm2
112	pmovsxbw	0x42(%rbx), %xmm2
113	pmovsxdq	%xmm1, %xmm2
114	pmovsxdq	(%rbx), %xmm2
115	pmovsxdq	0x42(%rbx), %xmm2
116	pmovsxwd	%xmm1, %xmm2
117	pmovsxwd	(%rbx), %xmm2
118	pmovsxwd	0x42(%rbx), %xmm2
119	pmovsxwq	%xmm1, %xmm2
120	pmovsxwq	(%rbx), %xmm2
121	pmovsxwq	0x42(%rbx), %xmm2
122	pmovzxbd	%xmm1, %xmm2
123	pmovzxbd	(%rbx), %xmm2
124	pmovzxbd	0x42(%rbx), %xmm2
125	pmovzxbq	%xmm1, %xmm2
126	pmovzxbq	(%rbx), %xmm2
127	pmovzxbq	0x42(%rbx), %xmm2
128	pmovzxbw	%xmm1, %xmm2
129	pmovzxbw	(%rbx), %xmm2
130	pmovzxbw	0x42(%rbx), %xmm2
131	pmovzxdq	%xmm1, %xmm2
132	pmovzxdq	(%rbx), %xmm2
133	pmovzxdq	0x42(%rbx), %xmm2
134	pmovzxwd	%xmm1, %xmm2
135	pmovzxwd	(%rbx), %xmm2
136	pmovzxwd	0x42(%rbx), %xmm2
137	pmovzxwq	%xmm1, %xmm2
138	pmovzxwq	(%rbx), %xmm2
139	pmovzxwq	0x42(%rbx), %xmm2
140	pmuldq		%xmm1, %xmm2
141	pmuldq		(%rbx), %xmm2
142	pmuldq		0x42(%rbx), %xmm2
143	pmulld		%xmm1, %xmm2
144	pmulld		(%rbx), %xmm2
145	pmulld		0x42(%rbx), %xmm2
146	ptest		%xmm1, %xmm2
147	ptest		(%rbx), %xmm2
148	ptest		0x42(%rbx), %xmm2
149	roundpd		$0x23, %xmm1, %xmm2
150	roundpd		$0x23, (%rbx), %xmm2
151	roundpd		$0x23, 0x42(%rbx), %xmm2
152	roundps		$0x23, %xmm1, %xmm2
153	roundps		$0x23, (%rbx), %xmm2
154	roundps		$0x23, 0x42(%rbx), %xmm2
155	roundsd		$0x23, %xmm1, %xmm2
156	roundsd		$0x23, (%rbx), %xmm2
157	roundsd		$0x23, 0x42(%rbx), %xmm2
158	roundss		$0x23, %xmm1, %xmm2
159	roundss		$0x23, (%rbx), %xmm2
160	roundss		$0x23, 0x42(%rbx), %xmm2
161.size libdis_test, [.-libdis_test]
162