Skip to content

Commit b53fd70

Browse files
committed
[x86] add tests for FP->int->FP with different FP types; NFC
1 parent 18c611e commit b53fd70

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

llvm/test/CodeGen/X86/ftrunc.ll

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,78 @@ define double @trunc_signed32_f64_nsz(double %x) #0 {
298298
ret double %r
299299
}
300300

301+
define double @trunc_f32_signed32_f64_no_fast_math(float %x) {
302+
; SSE-LABEL: trunc_f32_signed32_f64_no_fast_math:
303+
; SSE: # %bb.0:
304+
; SSE-NEXT: cvttss2si %xmm0, %eax
305+
; SSE-NEXT: xorps %xmm0, %xmm0
306+
; SSE-NEXT: cvtsi2sd %eax, %xmm0
307+
; SSE-NEXT: retq
308+
;
309+
; AVX1-LABEL: trunc_f32_signed32_f64_no_fast_math:
310+
; AVX1: # %bb.0:
311+
; AVX1-NEXT: vcvttss2si %xmm0, %eax
312+
; AVX1-NEXT: vcvtsi2sd %eax, %xmm1, %xmm0
313+
; AVX1-NEXT: retq
314+
%i = fptosi float %x to i32
315+
%r = sitofp i32 %i to double
316+
ret double %r
317+
}
318+
319+
define double @trunc_f32_signed32_f64_nsz(float %x) #0 {
320+
; SSE-LABEL: trunc_f32_signed32_f64_nsz:
321+
; SSE: # %bb.0:
322+
; SSE-NEXT: cvttss2si %xmm0, %eax
323+
; SSE-NEXT: xorps %xmm0, %xmm0
324+
; SSE-NEXT: cvtsi2sd %eax, %xmm0
325+
; SSE-NEXT: retq
326+
;
327+
; AVX1-LABEL: trunc_f32_signed32_f64_nsz:
328+
; AVX1: # %bb.0:
329+
; AVX1-NEXT: vcvttss2si %xmm0, %eax
330+
; AVX1-NEXT: vcvtsi2sd %eax, %xmm1, %xmm0
331+
; AVX1-NEXT: retq
332+
%i = fptosi float %x to i32
333+
%r = sitofp i32 %i to double
334+
ret double %r
335+
}
336+
337+
define float @trunc_f64_signed32_f32_no_fast_math(double %x) {
338+
; SSE-LABEL: trunc_f64_signed32_f32_no_fast_math:
339+
; SSE: # %bb.0:
340+
; SSE-NEXT: cvttsd2si %xmm0, %eax
341+
; SSE-NEXT: xorps %xmm0, %xmm0
342+
; SSE-NEXT: cvtsi2ss %eax, %xmm0
343+
; SSE-NEXT: retq
344+
;
345+
; AVX1-LABEL: trunc_f64_signed32_f32_no_fast_math:
346+
; AVX1: # %bb.0:
347+
; AVX1-NEXT: vcvttsd2si %xmm0, %eax
348+
; AVX1-NEXT: vcvtsi2ss %eax, %xmm1, %xmm0
349+
; AVX1-NEXT: retq
350+
%i = fptosi double %x to i32
351+
%r = sitofp i32 %i to float
352+
ret float %r
353+
}
354+
355+
define float @trunc_f64_signed32_f32_nsz(double %x) #0 {
356+
; SSE-LABEL: trunc_f64_signed32_f32_nsz:
357+
; SSE: # %bb.0:
358+
; SSE-NEXT: cvttsd2si %xmm0, %eax
359+
; SSE-NEXT: xorps %xmm0, %xmm0
360+
; SSE-NEXT: cvtsi2ss %eax, %xmm0
361+
; SSE-NEXT: retq
362+
;
363+
; AVX1-LABEL: trunc_f64_signed32_f32_nsz:
364+
; AVX1: # %bb.0:
365+
; AVX1-NEXT: vcvttsd2si %xmm0, %eax
366+
; AVX1-NEXT: vcvtsi2ss %eax, %xmm1, %xmm0
367+
; AVX1-NEXT: retq
368+
%i = fptosi double %x to i32
369+
%r = sitofp i32 %i to float
370+
ret float %r
371+
}
372+
301373
define double @trunc_signed_f64_no_fast_math(double %x) {
302374
; SSE-LABEL: trunc_signed_f64_no_fast_math:
303375
; SSE: # %bb.0:

0 commit comments

Comments
 (0)