Skip to content

Commit b291c49

Browse files
committed
[InstCombine] Add pre-commit tests. NFC.
1 parent f337525 commit b291c49

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

llvm/test/Transforms/InstCombine/fpcast.ll

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,3 +347,97 @@ define double @masked_uint_to_fpext3(i32 %x) {
347347
%r = fpext float %f to double
348348
ret double %r
349349
}
350+
351+
define i32 @fptosi_nonnorm(float nofpclass(norm) %x) {
352+
; CHECK-LABEL: @fptosi_nonnorm(
353+
; CHECK-NEXT: [[RET:%.*]] = fptosi float [[X:%.*]] to i32
354+
; CHECK-NEXT: ret i32 [[RET]]
355+
;
356+
%ret = fptosi float %x to i32
357+
ret i32 %ret
358+
}
359+
360+
define i32 @fptoui_nonnorm(float nofpclass(pnorm) %x) {
361+
; CHECK-LABEL: @fptoui_nonnorm(
362+
; CHECK-NEXT: [[RET:%.*]] = fptoui float [[X:%.*]] to i32
363+
; CHECK-NEXT: ret i32 [[RET]]
364+
;
365+
%ret = fptoui float %x to i32
366+
ret i32 %ret
367+
}
368+
369+
define i32 @fptosi_nonnnorm(float nofpclass(nnorm) %x) {
370+
; CHECK-LABEL: @fptosi_nonnnorm(
371+
; CHECK-NEXT: [[RET:%.*]] = fptosi float [[X:%.*]] to i32
372+
; CHECK-NEXT: ret i32 [[RET]]
373+
;
374+
%ret = fptosi float %x to i32
375+
ret i32 %ret
376+
}
377+
378+
define i32 @fptoui_nonnnorm(float nofpclass(nnorm) %x) {
379+
; CHECK-LABEL: @fptoui_nonnnorm(
380+
; CHECK-NEXT: [[RET:%.*]] = fptoui float [[X:%.*]] to i32
381+
; CHECK-NEXT: ret i32 [[RET]]
382+
;
383+
%ret = fptoui float %x to i32
384+
ret i32 %ret
385+
}
386+
387+
define i32 @fptosi_nonnorm_copysign(float %x) {
388+
; CHECK-LABEL: @fptosi_nonnorm_copysign(
389+
; CHECK-NEXT: [[VAL:%.*]] = call float @llvm.copysign.f32(float 0.000000e+00, float [[X:%.*]])
390+
; CHECK-NEXT: [[RET:%.*]] = fptosi float [[VAL]] to i32
391+
; CHECK-NEXT: ret i32 [[RET]]
392+
;
393+
%val = call float @llvm.copysign.f32(float 0.0, float %x)
394+
%ret = fptosi float %val to i32
395+
ret i32 %ret
396+
}
397+
398+
define <2 x i32> @fptosi_nonnorm_copysign_vec(<2 x float> %x) {
399+
; CHECK-LABEL: @fptosi_nonnorm_copysign_vec(
400+
; CHECK-NEXT: [[VAL:%.*]] = call <2 x float> @llvm.copysign.v2f32(<2 x float> zeroinitializer, <2 x float> [[X:%.*]])
401+
; CHECK-NEXT: [[RET:%.*]] = fptosi <2 x float> [[VAL]] to <2 x i32>
402+
; CHECK-NEXT: ret <2 x i32> [[RET]]
403+
;
404+
%val = call <2 x float> @llvm.copysign.v2f32(<2 x float> zeroinitializer, <2 x float> %x)
405+
%ret = fptosi <2 x float> %val to <2 x i32>
406+
ret <2 x i32> %ret
407+
}
408+
409+
define i32 @fptosi_nonnorm_fmul(float %x) {
410+
; CHECK-LABEL: @fptosi_nonnorm_fmul(
411+
; CHECK-NEXT: [[SEL:%.*]] = fmul float [[X:%.*]], 0.000000e+00
412+
; CHECK-NEXT: [[RET:%.*]] = fptosi float [[SEL]] to i32
413+
; CHECK-NEXT: ret i32 [[RET]]
414+
;
415+
%sel = fmul float %x, 0.000000e+00
416+
%ret = fptosi float %sel to i32
417+
ret i32 %ret
418+
}
419+
420+
define i32 @fptosi_select(i1 %cond) {
421+
; CHECK-LABEL: @fptosi_select(
422+
; CHECK-NEXT: [[RET:%.*]] = select i1 [[COND:%.*]], i32 1, i32 -1
423+
; CHECK-NEXT: ret i32 [[RET]]
424+
;
425+
%sel = select i1 %cond, float 1.0, float -1.0
426+
%ret = fptosi float %sel to i32
427+
ret i32 %ret
428+
}
429+
430+
define i32 @mul_pos_zero_convert(i32 %a) {
431+
; CHECK-LABEL: @mul_pos_zero_convert(
432+
; CHECK-NEXT: entry:
433+
; CHECK-NEXT: [[FP:%.*]] = sitofp i32 [[A:%.*]] to float
434+
; CHECK-NEXT: [[RET:%.*]] = fmul float [[FP]], 0.000000e+00
435+
; CHECK-NEXT: [[CONV:%.*]] = fptosi float [[RET]] to i32
436+
; CHECK-NEXT: ret i32 [[CONV]]
437+
;
438+
entry:
439+
%fp = sitofp i32 %a to float
440+
%ret = fmul float %fp, 0.000000e+00
441+
%conv = fptosi float %ret to i32
442+
ret i32 %conv
443+
}

0 commit comments

Comments
 (0)