brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 22b1cf0 Raw
102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 32; RUN: opt -S -passes=jump-threading < %s | FileCheck %s3 4; Test for assert that fired after5; ddb3f12c428bc4bd5a98913d74dfd7f2402bdfd8. simplifyFCmpInst is called6; with a literal negative nan without a context instruction.7 8 9; simplifyFCmpInst gets called without a context instruction and10; expects to simplify an ordered compare with a negative nan.11define i1 @simplify_fcmp_negative_nan_oeq(i1 %cond, float %arg) {12; CHECK-LABEL: define i1 @simplify_fcmp_negative_nan_oeq(13; CHECK-SAME: i1 [[COND:%.*]], float [[ARG:%.*]]) {14; CHECK-NEXT:  bb:15; CHECK-NEXT:    br i1 [[COND]], label [[BB2:%.*]], label [[BB5:%.*]]16; CHECK:       bb2:17; CHECK-NEXT:    [[I3:%.*]] = fcmp oeq float 0.000000e+00, [[ARG]]18; CHECK-NEXT:    br i1 [[I3]], label [[BB5]], label [[BB5]]19; CHECK:       bb5:20; CHECK-NEXT:    [[I33:%.*]] = phi i1 [ [[I3]], [[BB2]] ], [ [[I3]], [[BB2]] ], [ false, [[BB:%.*]] ]21; CHECK-NEXT:    ret i1 [[I33]]22;23bb:24  br i1 %cond, label %bb1, label %bb225 26bb1:27  br label %bb228 29bb2:                                              ; preds = %bb1, %bb30  %i = phi float [ 0xFFFFFFFFE0000000, %bb ], [ 0.000000e+00, %bb1 ]31  %i3 = fcmp oeq float %i, %arg32  br i1 %i3, label %bb4, label %bb533 34bb4:                                              ; preds = %bb235  br label %bb536 37bb5:                                              ; preds = %bb4, %bb238  ret i1 %i339}40 41; simplifyFCmpInst gets called without a context instruction and42; expects to simplify an unordered compare with a negative nan.43define i1 @simplify_fcmp_negative_nan_ueq(i1 %cond, float %arg) {44; CHECK-LABEL: define i1 @simplify_fcmp_negative_nan_ueq(45; CHECK-SAME: i1 [[COND:%.*]], float [[ARG:%.*]]) {46; CHECK-NEXT:  bb:47; CHECK-NEXT:    br i1 [[COND]], label [[BB2:%.*]], label [[BB5:%.*]]48; CHECK:       bb2:49; CHECK-NEXT:    [[I3:%.*]] = fcmp ueq float 0.000000e+00, [[ARG]]50; CHECK-NEXT:    br i1 [[I3]], label [[BB5]], label [[BB5]]51; CHECK:       bb5:52; CHECK-NEXT:    [[I33:%.*]] = phi i1 [ [[I3]], [[BB2]] ], [ [[I3]], [[BB2]] ], [ true, [[BB:%.*]] ]53; CHECK-NEXT:    ret i1 [[I33]]54;55bb:56  br i1 %cond, label %bb1, label %bb257 58bb1:59  br label %bb260 61bb2:                                              ; preds = %bb1, %bb62  %i = phi float [ 0xFFFFFFFFE0000000, %bb ], [ 0.000000e+00, %bb1 ]63  %i3 = fcmp ueq float %i, %arg64  br i1 %i3, label %bb4, label %bb565 66bb4:                                              ; preds = %bb267  br label %bb568 69bb5:                                              ; preds = %bb4, %bb270  ret i1 %i371}72 73define i1 @simplify_fcmp_positive_nan_oeq(i1 %cond, float %arg) {74; CHECK-LABEL: define i1 @simplify_fcmp_positive_nan_oeq(75; CHECK-SAME: i1 [[COND:%.*]], float [[ARG:%.*]]) {76; CHECK-NEXT:  bb:77; CHECK-NEXT:    br i1 [[COND]], label [[BB2:%.*]], label [[BB5:%.*]]78; CHECK:       bb2:79; CHECK-NEXT:    [[I3:%.*]] = fcmp oeq float 0.000000e+00, [[ARG]]80; CHECK-NEXT:    br i1 [[I3]], label [[BB5]], label [[BB5]]81; CHECK:       bb5:82; CHECK-NEXT:    [[I33:%.*]] = phi i1 [ [[I3]], [[BB2]] ], [ [[I3]], [[BB2]] ], [ false, [[BB:%.*]] ]83; CHECK-NEXT:    ret i1 [[I33]]84;85bb:86  br i1 %cond, label %bb1, label %bb287 88bb1:89  br label %bb290 91bb2:                                              ; preds = %bb1, %bb92  %i = phi float [ 0x7FFFFFFFE0000000, %bb ], [ 0.000000e+00, %bb1 ]93  %i3 = fcmp oeq float %i, %arg94  br i1 %i3, label %bb4, label %bb595 96bb4:                                              ; preds = %bb297  br label %bb598 99bb5:                                              ; preds = %bb4, %bb2100  ret i1 %i3101}102