Skip to content

Commit 33d5a3b

Browse files
committed
[AArch64] Add some multiuse tests for fptosi+sitofp converts. NFC
1 parent a80a198 commit 33d5a3b

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

llvm/test/CodeGen/AArch64/cvt-fp-int-fp.ll

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,109 @@ entry:
119119
ret bfloat %conv1
120120
}
121121

122+
define i64 @testu_f64_multiuse(double %x) {
123+
; CHECK-LABEL: testu_f64_multiuse:
124+
; CHECK: // %bb.0: // %entry
125+
; CHECK-NEXT: fcvtzu d1, d0
126+
; CHECK-NEXT: fcvtzu x8, d0
127+
; CHECK-NEXT: ucvtf d1, d1
128+
; CHECK-NEXT: fcmp d0, d1
129+
; CHECK-NEXT: csel x0, x8, xzr, eq
130+
; CHECK-NEXT: ret
131+
entry:
132+
%conv = fptoui double %x to i64
133+
%conv1 = uitofp i64 %conv to double
134+
%cmp = fcmp oeq double %x, %conv1
135+
%cond = select i1 %cmp, i64 %conv, i64 0
136+
ret i64 %cond
137+
}
138+
139+
define i32 @testu_f32_multiuse(float %x) {
140+
; CHECK-LABEL: testu_f32_multiuse:
141+
; CHECK: // %bb.0: // %entry
142+
; CHECK-NEXT: fcvtzu s1, s0
143+
; CHECK-NEXT: fcvtzu w8, s0
144+
; CHECK-NEXT: ucvtf s1, s1
145+
; CHECK-NEXT: fcmp s0, s1
146+
; CHECK-NEXT: csel w0, w8, wzr, eq
147+
; CHECK-NEXT: ret
148+
entry:
149+
%conv = fptoui float %x to i32
150+
%conv1 = uitofp i32 %conv to float
151+
%cmp = fcmp oeq float %x, %conv1
152+
%cond = select i1 %cmp, i32 %conv, i32 0
153+
ret i32 %cond
154+
}
155+
156+
define i32 @testu_f16_multiuse(half %x) {
157+
; CHECK-LABEL: testu_f16_multiuse:
158+
; CHECK: // %bb.0: // %entry
159+
; CHECK-NEXT: fcvtzu h1, h0
160+
; CHECK-NEXT: fcvtzu w8, h0
161+
; CHECK-NEXT: ucvtf h1, h1
162+
; CHECK-NEXT: fcmp h0, h1
163+
; CHECK-NEXT: csel w0, w8, wzr, eq
164+
; CHECK-NEXT: ret
165+
entry:
166+
%conv = fptoui half %x to i32
167+
%conv1 = uitofp i32 %conv to half
168+
%cmp = fcmp oeq half %x, %conv1
169+
%cond = select i1 %cmp, i32 %conv, i32 0
170+
ret i32 %cond
171+
}
172+
173+
define i64 @tests_f64_multiuse(double %x) {
174+
; CHECK-LABEL: tests_f64_multiuse:
175+
; CHECK: // %bb.0: // %entry
176+
; CHECK-NEXT: fcvtzs d1, d0
177+
; CHECK-NEXT: fcvtzs x8, d0
178+
; CHECK-NEXT: scvtf d1, d1
179+
; CHECK-NEXT: fcmp d0, d1
180+
; CHECK-NEXT: csel x0, x8, xzr, eq
181+
; CHECK-NEXT: ret
182+
entry:
183+
%conv = fptosi double %x to i64
184+
%conv1 = sitofp i64 %conv to double
185+
%cmp = fcmp oeq double %x, %conv1
186+
%cond = select i1 %cmp, i64 %conv, i64 0
187+
ret i64 %cond
188+
}
189+
190+
define i32 @tests_f32_multiuse(float %x) {
191+
; CHECK-LABEL: tests_f32_multiuse:
192+
; CHECK: // %bb.0: // %entry
193+
; CHECK-NEXT: fcvtzs s1, s0
194+
; CHECK-NEXT: fcvtzs w8, s0
195+
; CHECK-NEXT: scvtf s1, s1
196+
; CHECK-NEXT: fcmp s0, s1
197+
; CHECK-NEXT: csel w0, w8, wzr, eq
198+
; CHECK-NEXT: ret
199+
entry:
200+
%conv = fptosi float %x to i32
201+
%conv1 = sitofp i32 %conv to float
202+
%cmp = fcmp oeq float %x, %conv1
203+
%cond = select i1 %cmp, i32 %conv, i32 0
204+
ret i32 %cond
205+
}
206+
207+
define i32 @tests_f16_multiuse(half %x) {
208+
; CHECK-LABEL: tests_f16_multiuse:
209+
; CHECK: // %bb.0: // %entry
210+
; CHECK-NEXT: fcvtzs h1, h0
211+
; CHECK-NEXT: fcvtzs w8, h0
212+
; CHECK-NEXT: scvtf h1, h1
213+
; CHECK-NEXT: fcmp h0, h1
214+
; CHECK-NEXT: csel w0, w8, wzr, eq
215+
; CHECK-NEXT: ret
216+
entry:
217+
%conv = fptosi half %x to i32
218+
%conv1 = sitofp i32 %conv to half
219+
%cmp = fcmp oeq half %x, %conv1
220+
%cond = select i1 %cmp, i32 %conv, i32 0
221+
ret i32 %cond
222+
}
223+
224+
122225
define double @t1_strict(double %x) #0 {
123226
; CHECK-LABEL: t1_strict:
124227
; CHECK: // %bb.0: // %entry

0 commit comments

Comments
 (0)