Skip to content

Commit 7038288

Browse files
[IndVarSimplify] Precommit tests (NFC)
1 parent 898d6fe commit 7038288

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

llvm/test/Transforms/IndVarSimplify/floating-point-iv.ll

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,3 +417,141 @@ loop:
417417
exit:
418418
ret void
419419
}
420+
421+
; FIXME: These are miscompilation issues.
422+
define void @test_fp_to_int_irrealizable_initval() {
423+
; CHECK-LABEL: @test_fp_to_int_irrealizable_initval(
424+
; CHECK-NEXT: entry:
425+
; CHECK-NEXT: br label [[LOOP:%.*]]
426+
; CHECK: loop:
427+
; CHECK-NEXT: [[IV_INT:%.*]] = phi i32 [ 100000000, [[ENTRY:%.*]] ], [ [[IV_NEXT_INT:%.*]], [[LOOP]] ]
428+
; CHECK-NEXT: call void @opaque()
429+
; CHECK-NEXT: [[IV_NEXT_INT]] = add nsw i32 [[IV_INT]], -17
430+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ult i32 [[IV_NEXT_INT]], 25
431+
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[LOOP]]
432+
; CHECK: exit:
433+
; CHECK-NEXT: ret void
434+
;
435+
entry:
436+
br label %loop
437+
438+
loop:
439+
%iv = phi float [ 1.000000e+08, %entry ], [ %iv.next, %loop ]
440+
call void @opaque()
441+
%iv.next = fadd float %iv, -1.700000e+01
442+
%cmp = fcmp ult float %iv.next, 2.500000e+01
443+
br i1 %cmp, label %exit, label %loop
444+
445+
exit:
446+
ret void
447+
}
448+
449+
define void @test_fp_to_int_irrealizable_exitval() {
450+
; CHECK-LABEL: @test_fp_to_int_irrealizable_exitval(
451+
; CHECK-NEXT: entry:
452+
; CHECK-NEXT: br label [[LOOP:%.*]]
453+
; CHECK: loop:
454+
; CHECK-NEXT: [[IV_INT:%.*]] = phi i32 [ 25, [[ENTRY:%.*]] ], [ [[IV_NEXT_INT:%.*]], [[LOOP]] ]
455+
; CHECK-NEXT: call void @opaque()
456+
; CHECK-NEXT: [[IV_NEXT_INT]] = add nuw nsw i32 [[IV_INT]], 17
457+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[IV_NEXT_INT]], 100000000
458+
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[LOOP]]
459+
; CHECK: exit:
460+
; CHECK-NEXT: ret void
461+
;
462+
entry:
463+
br label %loop
464+
465+
loop:
466+
%iv = phi float [ 2.500000e+01, %entry ], [ %iv.next, %loop ]
467+
call void @opaque()
468+
%iv.next = fadd float %iv, 1.700000e+01
469+
%cmp = fcmp ugt float %iv.next, 1.000000e+08
470+
br i1 %cmp, label %exit, label %loop
471+
472+
exit:
473+
ret void
474+
}
475+
476+
define void @test_fp_to_int_irrealizable_negative_exitval() {
477+
; CHECK-LABEL: @test_fp_to_int_irrealizable_negative_exitval(
478+
; CHECK-NEXT: entry:
479+
; CHECK-NEXT: br label [[LOOP:%.*]]
480+
; CHECK: loop:
481+
; CHECK-NEXT: [[IV_INT:%.*]] = phi i32 [ -25, [[ENTRY:%.*]] ], [ [[IV_NEXT_INT:%.*]], [[LOOP]] ]
482+
; CHECK-NEXT: call void @opaque()
483+
; CHECK-NEXT: [[IV_NEXT_INT]] = add nsw i32 [[IV_INT]], -17
484+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[IV_NEXT_INT]], -100000000
485+
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[LOOP]]
486+
; CHECK: exit:
487+
; CHECK-NEXT: ret void
488+
;
489+
entry:
490+
br label %loop
491+
492+
loop:
493+
%iv = phi float [ -2.500000e+01, %entry ], [ %iv.next, %loop ]
494+
call void @opaque()
495+
%iv.next = fadd float %iv, -1.700000e+01
496+
%cmp = fcmp ult float %iv.next, -1.000000e+08
497+
br i1 %cmp, label %exit, label %loop
498+
499+
exit:
500+
ret void
501+
}
502+
503+
define void @test_fp_to_int_irrealizable_exitval_pow_2_24() {
504+
; CHECK-LABEL: @test_fp_to_int_irrealizable_exitval_pow_2_24(
505+
; CHECK-NEXT: entry:
506+
; CHECK-NEXT: br label [[LOOP:%.*]]
507+
; CHECK: loop:
508+
; CHECK-NEXT: [[IV_INT:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT_INT:%.*]], [[LOOP]] ]
509+
; CHECK-NEXT: call void @opaque()
510+
; CHECK-NEXT: [[IV_NEXT_INT]] = add nuw nsw i32 [[IV_INT]], 1
511+
; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ugt i32 [[IV_NEXT_INT]], 16777216
512+
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[LOOP]]
513+
; CHECK: exit:
514+
; CHECK-NEXT: ret void
515+
;
516+
entry:
517+
br label %loop
518+
519+
loop:
520+
%iv = phi float [ 0.000000e+00, %entry ], [ %iv.next, %loop ]
521+
call void @opaque()
522+
%iv.next = fadd float %iv, 1.000000e+00
523+
%cmp = fcmp ugt float %iv.next, 0x4170000000000000
524+
br i1 %cmp, label %exit, label %loop
525+
526+
exit:
527+
ret void
528+
}
529+
530+
define void @test_fp_to_int_irrealizable_exitval_int64_min() {
531+
; CHECK-LABEL: @test_fp_to_int_irrealizable_exitval_int64_min(
532+
; CHECK-NEXT: entry:
533+
; CHECK-NEXT: br label [[LOOP:%.*]]
534+
; CHECK: loop:
535+
; CHECK-NEXT: [[IV:%.*]] = phi double [ 2.500000e+01, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
536+
; CHECK-NEXT: call void @opaque()
537+
; CHECK-NEXT: [[IV_NEXT]] = fadd double [[IV]], 1.700000e+01
538+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double [[IV_NEXT]], 0xC3E0000000000000
539+
; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[LOOP]]
540+
; CHECK: exit:
541+
; CHECK-NEXT: ret void
542+
;
543+
entry:
544+
br label %loop
545+
546+
loop:
547+
%iv = phi double [ 2.500000e+01, %entry ], [ %iv.next, %loop ]
548+
call void @opaque()
549+
%iv.next = fadd double %iv, 1.700000e+01
550+
%cmp = fcmp ult double %iv.next, 0xC3E0000000000000
551+
br i1 %cmp, label %exit, label %loop
552+
553+
exit:
554+
ret void
555+
}
556+
557+
declare void @opaque()

0 commit comments

Comments
 (0)