brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 5a97518 Raw
68 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=sccp -S %s | FileCheck %s3 4; When marking the edge from bb2 -> exit as executable first, %p will be NaN5; first and %v.1 will simplify to NaN. But when marking bb1 -> exit executable,6; %p will we overdefined and %v.1 will be simplified to 0.0. Make sure we go to7; overdefined, instead of crashing.8; TODO: Can we do better, i.e. choose the 'conservative' 0.0 initially?9define float @test1(float %a, i1 %bc) {10; CHECK-LABEL: @test1(11; CHECK-NEXT:  entry:12; CHECK-NEXT:    br i1 [[BC:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]13; CHECK:       bb1:14; CHECK-NEXT:    br label [[EXIT:%.*]]15; CHECK:       bb2:16; CHECK-NEXT:    br label [[EXIT]]17; CHECK:       exit:18; CHECK-NEXT:    [[P:%.*]] = phi float [ [[A:%.*]], [[BB1]] ], [ 0x7FF8000000000000, [[BB2]] ]19; CHECK-NEXT:    [[V_1:%.*]] = fmul float [[P]], 0.000000e+0020; CHECK-NEXT:    [[V_2:%.*]] = fadd float [[V_1]], 0xFFF800000000000021; CHECK-NEXT:    ret float [[V_2]]22;23entry:24  br i1 %bc, label %bb1, label %bb225 26bb1:27  br label %exit28 29bb2:30  br label %exit31 32exit:33  %p = phi float [ %a, %bb1 ], [ 0x7FF8000000000000, %bb2 ]34  %v.1 = fmul float %p, 0.000000e+0035  %v.2 = fadd float %v.1, 0xFFF800000000000036  ret float %v.237}38 39; Same as @test1, but with the incoming values switched.40define float @test2(float %a, i1 %bc) {41; CHECK-LABEL: @test2(42; CHECK-NEXT:  entry:43; CHECK-NEXT:    br i1 [[BC:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]44; CHECK:       bb1:45; CHECK-NEXT:    br label [[EXIT:%.*]]46; CHECK:       bb2:47; CHECK-NEXT:    br label [[EXIT]]48; CHECK:       exit:49; CHECK-NEXT:    [[P:%.*]] = phi float [ 0x7FF8000000000000, [[BB1]] ], [ [[A:%.*]], [[BB2]] ]50; CHECK-NEXT:    [[V_1:%.*]] = fmul float [[P]], 0.000000e+0051; CHECK-NEXT:    ret float 0xFFF800000000000052;53entry:54  br i1 %bc, label %bb1, label %bb255 56bb1:57  br label %exit58 59bb2:60  br label %exit61 62exit:63  %p = phi float [ 0x7FF8000000000000, %bb1 ], [ %a, %bb2 ]64  %v.1 = fmul float %p, 0.000000e+0065  %v.2 = fadd float %v.1, 0xFFF800000000000066  ret float %v.267}68