brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · 213293a Raw
299 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=sccp -S | FileCheck %s3 4define i1 @float.1.defaultenv(i1 %cmp) #0 {5; CHECK-LABEL: @float.1.defaultenv(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]8; CHECK:       if.true:9; CHECK-NEXT:    br label [[END]]10; CHECK:       end:11; CHECK-NEXT:    ret i1 true12;13 14entry:15  br i1 %cmp, label %if.true, label %end16 17if.true:18  br label %end19 20end:21  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true]22  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.ignore") #023 24  ret i1 %c25}26 27define i1 @float.1.maytrap(i1 %cmp) #0 {28; CHECK-LABEL: @float.1.maytrap(29; CHECK-NEXT:  entry:30; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]31; CHECK:       if.true:32; CHECK-NEXT:    br label [[END]]33; CHECK:       end:34; CHECK-NEXT:    ret i1 true35;36 37entry:38  br i1 %cmp, label %if.true, label %end39 40if.true:41  br label %end42 43end:44  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true]45  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.maytrap") #046 47  ret i1 %c48}49 50define i1 @float.1.strict(i1 %cmp) #0 {51; CHECK-LABEL: @float.1.strict(52; CHECK-NEXT:  entry:53; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]54; CHECK:       if.true:55; CHECK-NEXT:    br label [[END]]56; CHECK:       end:57; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float 1.000000e+00, float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.strict") #[[ATTR0:[0-9]+]]58; CHECK-NEXT:    ret i1 true59;60 61entry:62  br i1 %cmp, label %if.true, label %end63 64if.true:65  br label %end66 67end:68  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true]69  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.strict") #070 71  ret i1 %c72}73 74define i1 @float.2.defaultenv(i1 %cmp) #0 {75; CHECK-LABEL: @float.2.defaultenv(76; CHECK-NEXT:  entry:77; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]78; CHECK:       if.true:79; CHECK-NEXT:    br label [[END]]80; CHECK:       end:81; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ 2.000000e+00, [[IF_TRUE]] ]82; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.ignore") #[[ATTR0]]83; CHECK-NEXT:    ret i1 [[C]]84;85 86entry:87  br i1 %cmp, label %if.true, label %end88 89if.true:90  br label %end91 92end:93  %p = phi float [ 1.0, %entry ], [ 2.0, %if.true]94  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.ignore") #095  ret i1 %c96}97 98define i1 @float.2.maytrap(i1 %cmp) #0 {99; CHECK-LABEL: @float.2.maytrap(100; CHECK-NEXT:  entry:101; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]102; CHECK:       if.true:103; CHECK-NEXT:    br label [[END]]104; CHECK:       end:105; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ 2.000000e+00, [[IF_TRUE]] ]106; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.maytrap") #[[ATTR0]]107; CHECK-NEXT:    ret i1 [[C]]108;109 110entry:111  br i1 %cmp, label %if.true, label %end112 113if.true:114  br label %end115 116end:117  %p = phi float [ 1.0, %entry ], [ 2.0, %if.true]118  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.maytrap") #0119  ret i1 %c120}121 122define i1 @float.2.strict(i1 %cmp) #0 {123; CHECK-LABEL: @float.2.strict(124; CHECK-NEXT:  entry:125; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]126; CHECK:       if.true:127; CHECK-NEXT:    br label [[END]]128; CHECK:       end:129; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ 2.000000e+00, [[IF_TRUE]] ]130; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.strict") #[[ATTR0]]131; CHECK-NEXT:    ret i1 [[C]]132;133 134entry:135  br i1 %cmp, label %if.true, label %end136 137if.true:138  br label %end139 140end:141  %p = phi float [ 1.0, %entry ], [ 2.0, %if.true]142  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.strict") #0143  ret i1 %c144}145 146define i1 @float.3.defaultenv(float %f, i1 %cmp) #0 {147; CHECK-LABEL: @float.3.defaultenv(148; CHECK-NEXT:  entry:149; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]150; CHECK:       if.true:151; CHECK-NEXT:    br label [[END]]152; CHECK:       end:153; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ [[F:%.*]], [[IF_TRUE]] ]154; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.ignore") #[[ATTR0]]155; CHECK-NEXT:    ret i1 [[C]]156;157 158entry:159  br i1 %cmp, label %if.true, label %end160 161if.true:162  br label %end163 164end:165  %p = phi float [ 1.0, %entry ], [ %f, %if.true]166  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.ignore") #0167  ret i1 %c168}169 170define i1 @float.3.maytrap(float %f, i1 %cmp) #0 {171; CHECK-LABEL: @float.3.maytrap(172; CHECK-NEXT:  entry:173; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]174; CHECK:       if.true:175; CHECK-NEXT:    br label [[END]]176; CHECK:       end:177; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ [[F:%.*]], [[IF_TRUE]] ]178; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.maytrap") #[[ATTR0]]179; CHECK-NEXT:    ret i1 [[C]]180;181 182entry:183  br i1 %cmp, label %if.true, label %end184 185if.true:186  br label %end187 188end:189  %p = phi float [ 1.0, %entry ], [ %f, %if.true]190  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.maytrap") #0191  ret i1 %c192}193 194define i1 @float.3.strict(float %f, i1 %cmp) #0 {195; CHECK-LABEL: @float.3.strict(196; CHECK-NEXT:  entry:197; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]198; CHECK:       if.true:199; CHECK-NEXT:    br label [[END]]200; CHECK:       end:201; CHECK-NEXT:    [[P:%.*]] = phi float [ 1.000000e+00, [[ENTRY:%.*]] ], [ [[F:%.*]], [[IF_TRUE]] ]202; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float [[P]], float 1.000000e+00, metadata !"ueq", metadata !"fpexcept.strict") #[[ATTR0]]203; CHECK-NEXT:    ret i1 [[C]]204;205 206entry:207  br i1 %cmp, label %if.true, label %end208 209if.true:210  br label %end211 212end:213  %p = phi float [ 1.0, %entry ], [ %f, %if.true]214  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"ueq", metadata !"fpexcept.strict") #0215  ret i1 %c216}217 218define i1 @float.4_unreachable.defaultenv(float %f, i1 %cmp) #0 {219; CHECK-LABEL: @float.4_unreachable.defaultenv(220; CHECK-NEXT:  entry:221; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]222; CHECK:       if.true:223; CHECK-NEXT:    br label [[END]]224; CHECK:       end:225; CHECK-NEXT:    ret i1 false226;227 228entry:229  br i1 %cmp, label %if.true, label %end230 231if.true:232  br label %end233 234dead:235  br label %end236 237end:238  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true], [ %f, %dead ]239  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"une", metadata !"fpexcept.ignore") #0240  ret i1 %c241}242 243define i1 @float.4_unreachable.maytrap(float %f, i1 %cmp) #0 {244; CHECK-LABEL: @float.4_unreachable.maytrap(245; CHECK-NEXT:  entry:246; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]247; CHECK:       if.true:248; CHECK-NEXT:    br label [[END]]249; CHECK:       end:250; CHECK-NEXT:    ret i1 false251;252 253entry:254  br i1 %cmp, label %if.true, label %end255 256if.true:257  br label %end258 259dead:260  br label %end261 262end:263  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true], [ %f, %dead ]264  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"une", metadata !"fpexcept.maytrap") #0265  ret i1 %c266}267 268; FIXME: It's a shame we can't eliminate this fcmps here:269define i1 @float.4_unreachable.strict(float %f, i1 %cmp) #0 {270; CHECK-LABEL: @float.4_unreachable.strict(271; CHECK-NEXT:  entry:272; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_TRUE:%.*]], label [[END:%.*]]273; CHECK:       if.true:274; CHECK-NEXT:    br label [[END]]275; CHECK:       end:276; CHECK-NEXT:    [[C:%.*]] = call i1 @llvm.experimental.constrained.fcmps.f32(float 1.000000e+00, float 1.000000e+00, metadata !"une", metadata !"fpexcept.strict") #[[ATTR0]]277; CHECK-NEXT:    ret i1 false278;279 280entry:281  br i1 %cmp, label %if.true, label %end282 283if.true:284  br label %end285 286dead:287  br label %end288 289end:290  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true], [ %f, %dead ]291  %c = call i1 @llvm.experimental.constrained.fcmps.f32(float %p, float 1.0, metadata !"une", metadata !"fpexcept.strict") #0292  ret i1 %c293}294 295attributes #0 = { strictfp }296 297declare i1 @llvm.experimental.constrained.fcmps.f32(float, float, metadata, metadata)298 299