Skip to content

Commit 44baff2

Browse files
author
mattarde
committed
add test
1 parent 09d1f74 commit 44baff2

File tree

1 file changed

+237
-0
lines changed

1 file changed

+237
-0
lines changed
Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx10.2-512 | FileCheck %s --check-prefix=X64
3+
; RUN: llc < %s -mtriple=i386-unknown-unknown -mattr=+avx10.2-512 | FileCheck %s --check-prefix=X86
4+
5+
define i1 @hoeq(half %x, half %y) {
6+
; X64-LABEL: hoeq:
7+
; X64: # %bb.0:
8+
; X64-NEXT: vucomxsh %xmm1, %xmm0
9+
; X64-NEXT: sete %al
10+
; X64-NEXT: retq
11+
;
12+
; X86-LABEL: hoeq:
13+
; X86: # %bb.0:
14+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
15+
; X86-NEXT: vucomxsh {{[0-9]+}}(%esp), %xmm0
16+
; X86-NEXT: sete %al
17+
; X86-NEXT: retl
18+
%1 = fcmp oeq half %x, %y
19+
ret i1 %1
20+
}
21+
22+
define i1 @hune(half %x, half %y) {
23+
; X64-LABEL: hune:
24+
; X64: # %bb.0:
25+
; X64-NEXT: vucomxsh %xmm1, %xmm0
26+
; X64-NEXT: setne %al
27+
; X64-NEXT: retq
28+
;
29+
; X86-LABEL: hune:
30+
; X86: # %bb.0:
31+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
32+
; X86-NEXT: vucomxsh {{[0-9]+}}(%esp), %xmm0
33+
; X86-NEXT: setne %al
34+
; X86-NEXT: retl
35+
%1 = fcmp une half %x, %y
36+
ret i1 %1
37+
}
38+
39+
define i1 @hoeq_mem(ptr %xp, ptr %yp) {
40+
; X64-LABEL: hoeq_mem:
41+
; X64: # %bb.0:
42+
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
43+
; X64-NEXT: vucomxsh (%rsi), %xmm0
44+
; X64-NEXT: sete %al
45+
; X64-NEXT: retq
46+
;
47+
; X86-LABEL: hoeq_mem:
48+
; X86: # %bb.0:
49+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
50+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
51+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
52+
; X86-NEXT: vucomxsh (%eax), %xmm0
53+
; X86-NEXT: sete %al
54+
; X86-NEXT: retl
55+
%x = load half, ptr %xp
56+
%y = load half, ptr %yp
57+
%1 = fcmp oeq half %x, %y
58+
ret i1 %1
59+
}
60+
61+
define i1 @hune_mem(ptr %xp, ptr %yp) {
62+
; X64-LABEL: hune_mem:
63+
; X64: # %bb.0:
64+
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
65+
; X64-NEXT: vucomxsh (%rsi), %xmm0
66+
; X64-NEXT: setne %al
67+
; X64-NEXT: retq
68+
;
69+
; X86-LABEL: hune_mem:
70+
; X86: # %bb.0:
71+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
72+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
73+
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
74+
; X86-NEXT: vucomxsh (%eax), %xmm0
75+
; X86-NEXT: setne %al
76+
; X86-NEXT: retl
77+
%x = load half, ptr %xp
78+
%y = load half, ptr %yp
79+
%1 = fcmp une half %x, %y
80+
ret i1 %1
81+
}
82+
83+
define i1 @foeq(float %x, float %y) {
84+
; X64-LABEL: foeq:
85+
; X64: # %bb.0:
86+
; X64-NEXT: vucomxss %xmm1, %xmm0
87+
; X64-NEXT: sete %al
88+
; X64-NEXT: retq
89+
;
90+
; X86-LABEL: foeq:
91+
; X86: # %bb.0:
92+
; X86-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
93+
; X86-NEXT: vucomxss {{[0-9]+}}(%esp), %xmm0
94+
; X86-NEXT: sete %al
95+
; X86-NEXT: retl
96+
%1 = fcmp oeq float %x, %y
97+
ret i1 %1
98+
}
99+
100+
define i1 @fune(float %x, float %y) {
101+
; X64-LABEL: fune:
102+
; X64: # %bb.0:
103+
; X64-NEXT: vucomxss %xmm1, %xmm0
104+
; X64-NEXT: setne %al
105+
; X64-NEXT: retq
106+
;
107+
; X86-LABEL: fune:
108+
; X86: # %bb.0:
109+
; X86-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
110+
; X86-NEXT: vucomxss {{[0-9]+}}(%esp), %xmm0
111+
; X86-NEXT: setne %al
112+
; X86-NEXT: retl
113+
%1 = fcmp une float %x, %y
114+
ret i1 %1
115+
}
116+
117+
define i1 @foeq_mem(ptr %xp, ptr %yp) {
118+
; X64-LABEL: foeq_mem:
119+
; X64: # %bb.0:
120+
; X64-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
121+
; X64-NEXT: vucomxss (%rsi), %xmm0
122+
; X64-NEXT: sete %al
123+
; X64-NEXT: retq
124+
;
125+
; X86-LABEL: foeq_mem:
126+
; X86: # %bb.0:
127+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
128+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
129+
; X86-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
130+
; X86-NEXT: vucomxss (%eax), %xmm0
131+
; X86-NEXT: sete %al
132+
; X86-NEXT: retl
133+
%x = load float, ptr %xp
134+
%y = load float, ptr %yp
135+
%1 = fcmp oeq float %x, %y
136+
ret i1 %1
137+
}
138+
139+
define i1 @fune_mem(ptr %xp, ptr %yp) {
140+
; X64-LABEL: fune_mem:
141+
; X64: # %bb.0:
142+
; X64-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
143+
; X64-NEXT: vucomxss (%rsi), %xmm0
144+
; X64-NEXT: setne %al
145+
; X64-NEXT: retq
146+
;
147+
; X86-LABEL: fune_mem:
148+
; X86: # %bb.0:
149+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
150+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
151+
; X86-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
152+
; X86-NEXT: vucomxss (%eax), %xmm0
153+
; X86-NEXT: setne %al
154+
; X86-NEXT: retl
155+
%x = load float, ptr %xp
156+
%y = load float, ptr %yp
157+
%1 = fcmp une float %x, %y
158+
ret i1 %1
159+
}
160+
161+
define i1 @doeq(double %x, double %y) {
162+
; X64-LABEL: doeq:
163+
; X64: # %bb.0:
164+
; X64-NEXT: vucomxsd %xmm1, %xmm0
165+
; X64-NEXT: sete %al
166+
; X64-NEXT: retq
167+
;
168+
; X86-LABEL: doeq:
169+
; X86: # %bb.0:
170+
; X86-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
171+
; X86-NEXT: vucomxsd {{[0-9]+}}(%esp), %xmm0
172+
; X86-NEXT: sete %al
173+
; X86-NEXT: retl
174+
%1 = fcmp oeq double %x, %y
175+
ret i1 %1
176+
}
177+
178+
define i1 @dune(double %x, double %y) {
179+
; X64-LABEL: dune:
180+
; X64: # %bb.0:
181+
; X64-NEXT: vucomxsd %xmm1, %xmm0
182+
; X64-NEXT: setne %al
183+
; X64-NEXT: retq
184+
;
185+
; X86-LABEL: dune:
186+
; X86: # %bb.0:
187+
; X86-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
188+
; X86-NEXT: vucomxsd {{[0-9]+}}(%esp), %xmm0
189+
; X86-NEXT: setne %al
190+
; X86-NEXT: retl
191+
%1 = fcmp une double %x, %y
192+
ret i1 %1
193+
}
194+
195+
define i1 @doeq_mem(ptr %xp, ptr %yp) {
196+
; X64-LABEL: doeq_mem:
197+
; X64: # %bb.0:
198+
; X64-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
199+
; X64-NEXT: vucomxsd (%rsi), %xmm0
200+
; X64-NEXT: sete %al
201+
; X64-NEXT: retq
202+
;
203+
; X86-LABEL: doeq_mem:
204+
; X86: # %bb.0:
205+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
206+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
207+
; X86-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
208+
; X86-NEXT: vucomxsd (%eax), %xmm0
209+
; X86-NEXT: sete %al
210+
; X86-NEXT: retl
211+
%x = load double, ptr %xp
212+
%y = load double, ptr %yp
213+
%1 = fcmp oeq double %x, %y
214+
ret i1 %1
215+
}
216+
217+
define i1 @dune_mem(ptr %xp, ptr %yp) {
218+
; X64-LABEL: dune_mem:
219+
; X64: # %bb.0:
220+
; X64-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
221+
; X64-NEXT: vucomxsd (%rsi), %xmm0
222+
; X64-NEXT: setne %al
223+
; X64-NEXT: retq
224+
;
225+
; X86-LABEL: dune_mem:
226+
; X86: # %bb.0:
227+
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
228+
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
229+
; X86-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
230+
; X86-NEXT: vucomxsd (%eax), %xmm0
231+
; X86-NEXT: setne %al
232+
; X86-NEXT: retl
233+
%x = load double, ptr %xp
234+
%y = load double, ptr %yp
235+
%1 = fcmp une double %x, %y
236+
ret i1 %1
237+
}

0 commit comments

Comments
 (0)