354 lines · plain
1; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6define void @test_range_error(float %value) {7entry:8 %call_0 = call float @coshf(float %value)9; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -8.900000e+0110; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.900000e+0111; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]12; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]13; CHECK: [[CALL_LABEL]]:14; CHECK-NEXT: %call_0 = call float @coshf(float %value)15; CHECK-NEXT: br label %[[END_LABEL]]16; CHECK: [[END_LABEL]]:17 18 %call_1 = call float @expf(float %value)19; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -1.030000e+0220; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.800000e+0121; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]22; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]23; CHECK: [[CALL_LABEL]]:24; CHECK-NEXT: %call_1 = call float @expf(float %value)25; CHECK-NEXT: br label %[[END_LABEL]]26; CHECK: [[END_LABEL]]:27 28 %call_3 = call float @exp2f(float %value)29; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -1.490000e+0230; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 1.270000e+0231; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]32; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]33; CHECK: [[CALL_LABEL]]:34; CHECK-NEXT: %call_3 = call float @exp2f(float %value)35; CHECK-NEXT: br label %[[END_LABEL]]36; CHECK: [[END_LABEL]]:37 38 %call_4 = call float @sinhf(float %value)39; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -8.900000e+0140; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.900000e+0141; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]42; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]43; CHECK: [[CALL_LABEL]]:44; CHECK-NEXT: %call_4 = call float @sinhf(float %value)45; CHECK-NEXT: br label %[[END_LABEL]]46; CHECK: [[END_LABEL]]:47 48 %call_5 = call float @expm1f(float %value)49; CHECK: [[COND:%[0-9]+]] = fcmp ogt float %value, 8.800000e+0150; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]51; CHECK: [[CALL_LABEL]]:52; CHECK-NEXT: %call_5 = call float @expm1f(float %value)53; CHECK-NEXT: br label %[[END_LABEL]]54; CHECK: [[END_LABEL]]:55 56 ret void57}58 59define void @test_range_error_strictfp(float %value) strictfp {60entry:61 %call_0 = call float @coshf(float %value) strictfp62; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE:%.*]], float -8.900000e+01, metadata !"olt", metadata !"fpexcept.strict")63; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 8.900000e+01, metadata !"ogt", metadata !"fpexcept.strict")64; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]65; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]66; CHECK: [[CALL_LABEL]]:67; CHECK-NEXT: %call_0 = call float @coshf(float %value)68; CHECK-NEXT: br label %[[END_LABEL]]69; CHECK: [[END_LABEL]]:70 71 %call_1 = call float @expf(float %value) strictfp72; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.030000e+02, metadata !"olt", metadata !"fpexcept.strict")73; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 8.800000e+01, metadata !"ogt", metadata !"fpexcept.strict")74; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]75; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]76; CHECK: [[CALL_LABEL]]:77; CHECK-NEXT: %call_1 = call float @expf(float %value)78; CHECK-NEXT: br label %[[END_LABEL]]79; CHECK: [[END_LABEL]]:80 81 %call_3 = call float @exp2f(float %value) strictfp82; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.490000e+02, metadata !"olt", metadata !"fpexcept.strict")83; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 1.270000e+02, metadata !"ogt", metadata !"fpexcept.strict")84; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]85; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]86; CHECK: [[CALL_LABEL]]:87; CHECK-NEXT: %call_3 = call float @exp2f(float %value)88; CHECK-NEXT: br label %[[END_LABEL]]89; CHECK: [[END_LABEL]]:90 91 %call_4 = call float @sinhf(float %value) strictfp92; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -8.900000e+01, metadata !"olt", metadata !"fpexcept.strict")93; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 8.900000e+01, metadata !"ogt", metadata !"fpexcept.strict")94; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]95; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]96; CHECK: [[CALL_LABEL]]:97; CHECK-NEXT: %call_4 = call float @sinhf(float %value)98; CHECK-NEXT: br label %[[END_LABEL]]99; CHECK: [[END_LABEL]]:100 101 %call_5 = call float @expm1f(float %value) strictfp102; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 8.800000e+01, metadata !"ogt", metadata !"fpexcept.strict")103; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]104; CHECK: [[CALL_LABEL]]:105; CHECK-NEXT: %call_5 = call float @expm1f(float %value)106; CHECK-NEXT: br label %[[END_LABEL]]107; CHECK: [[END_LABEL]]:108 109 ret void110}111 112declare float @coshf(float)113declare float @expf(float)114declare float @exp2f(float)115declare float @sinhf(float)116declare float @expm1f(float)117 118define void @test_domain_error(float %value) {119entry:120 121 %call_00 = call float @acosf(float %value)122; CHECK: [[COND1:%[0-9]+]] = fcmp ogt float %value, 1.000000e+00123; CHECK: [[COND2:%[0-9]+]] = fcmp olt float %value, -1.000000e+00124; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]125; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]126; CHECK: [[CALL_LABEL]]:127; CHECK-NEXT: %call_00 = call float @acosf(float %value)128; CHECK-NEXT: br label %[[END_LABEL]]129; CHECK: [[END_LABEL]]:130 131 %call_01 = call float @asinf(float %value)132; CHECK: [[COND1:%[0-9]+]] = fcmp ogt float %value, 1.000000e+00133; CHECK: [[COND2:%[0-9]+]] = fcmp olt float %value, -1.000000e+00134; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]135; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]136; CHECK: [[CALL_LABEL]]:137; CHECK-NEXT: %call_01 = call float @asinf(float %value)138; CHECK-NEXT: br label %[[END_LABEL]]139; CHECK: [[END_LABEL]]:140 141 %call_02 = call float @cosf(float %value)142; CHECK: [[COND1:%[0-9]+]] = fcmp oeq float %value, 0xFFF0000000000000143; CHECK: [[COND2:%[0-9]+]] = fcmp oeq float %value, 0x7FF0000000000000144; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]145; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]146; CHECK: [[CALL_LABEL]]:147; CHECK-NEXT: %call_02 = call float @cosf(float %value)148; CHECK-NEXT: br label %[[END_LABEL]]149; CHECK: [[END_LABEL]]:150 151 %call_03 = call float @sinf(float %value)152; CHECK: [[COND1:%[0-9]+]] = fcmp oeq float %value, 0xFFF0000000000000153; CHECK: [[COND2:%[0-9]+]] = fcmp oeq float %value, 0x7FF0000000000000154; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]155; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]156; CHECK: [[CALL_LABEL]]:157; CHECK-NEXT: %call_03 = call float @sinf(float %value)158; CHECK-NEXT: br label %[[END_LABEL]]159; CHECK: [[END_LABEL]]:160 161 %call_04 = call float @acoshf(float %value)162; CHECK: [[COND:%[0-9]+]] = fcmp olt float %value, 1.000000e+00163; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]164; CHECK: [[CALL_LABEL]]:165; CHECK-NEXT: %call_04 = call float @acoshf(float %value)166; CHECK-NEXT: br label %[[END_LABEL]]167; CHECK: [[END_LABEL]]:168 169 %call_05 = call float @sqrtf(float %value)170; CHECK: [[COND:%[0-9]+]] = fcmp olt float %value, 0.000000e+00171; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]172; CHECK: [[CALL_LABEL]]:173; CHECK-NEXT: %call_05 = call float @sqrtf(float %value)174; CHECK-NEXT: br label %[[END_LABEL]]175; CHECK: [[END_LABEL]]:176 177 %call_06 = call float @atanhf(float %value)178; CHECK: [[COND1:%[0-9]+]] = fcmp oge float %value, 1.000000e+00179; CHECK: [[COND2:%[0-9]+]] = fcmp ole float %value, -1.000000e+00180; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]181; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]182; CHECK: [[CALL_LABEL]]:183; CHECK-NEXT: %call_06 = call float @atanhf(float %value)184; CHECK-NEXT: br label %[[END_LABEL]]185; CHECK: [[END_LABEL]]:186 187 %call_07 = call float @logf(float %value)188; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00189; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]190; CHECK: [[CALL_LABEL]]:191; CHECK-NEXT: %call_07 = call float @logf(float %value)192; CHECK-NEXT: br label %[[END_LABEL]]193; CHECK: [[END_LABEL]]:194 195 %call_08 = call float @log10f(float %value)196; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00197; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]198; CHECK: [[CALL_LABEL]]:199; CHECK-NEXT: %call_08 = call float @log10f(float %value)200; CHECK-NEXT: br label %[[END_LABEL]]201; CHECK: [[END_LABEL]]:202 203 %call_09 = call float @log2f(float %value)204; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00205; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]206; CHECK: [[CALL_LABEL]]:207; CHECK-NEXT: %call_09 = call float @log2f(float %value)208; CHECK-NEXT: br label %[[END_LABEL]]209; CHECK: [[END_LABEL]]:210 211 %call_10 = call float @logbf(float %value)212; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00213; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]214; CHECK: [[CALL_LABEL]]:215; CHECK-NEXT: %call_10 = call float @logbf(float %value)216; CHECK-NEXT: br label %[[END_LABEL]]217; CHECK: [[END_LABEL]]:218 219 %call_11 = call float @log1pf(float %value)220; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, -1.000000e+00221; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]222; CHECK: [[CALL_LABEL]]:223; CHECK-NEXT: %call_11 = call float @log1pf(float %value)224; CHECK-NEXT: br label %[[END_LABEL]]225; CHECK: [[END_LABEL]]:226 ret void227}228 229define void @test_domain_error_strictfp(float %value) strictfp {230entry:231 232 %call_00 = call float @acosf(float %value) strictfp233; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE:%.*]], float 1.000000e+00, metadata !"ogt", metadata !"fpexcept.strict")234; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.000000e+00, metadata !"olt", metadata !"fpexcept.strict")235; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]236; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]237; CHECK: [[CALL_LABEL]]:238; CHECK-NEXT: %call_00 = call float @acosf(float %value)239; CHECK-NEXT: br label %[[END_LABEL]]240; CHECK: [[END_LABEL]]:241 242 %call_01 = call float @asinf(float %value) strictfp243; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 1.000000e+00, metadata !"ogt", metadata !"fpexcept.strict")244; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.000000e+00, metadata !"olt", metadata !"fpexcept.strict")245; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]246; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]247; CHECK: [[CALL_LABEL]]:248; CHECK-NEXT: %call_01 = call float @asinf(float %value)249; CHECK-NEXT: br label %[[END_LABEL]]250; CHECK: [[END_LABEL]]:251 252 %call_02 = call float @cosf(float %value) strictfp253; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0xFFF0000000000000, metadata !"oeq", metadata !"fpexcept.strict")254; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0x7FF0000000000000, metadata !"oeq", metadata !"fpexcept.strict")255; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]256; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]257; CHECK: [[CALL_LABEL]]:258; CHECK-NEXT: %call_02 = call float @cosf(float %value)259; CHECK-NEXT: br label %[[END_LABEL]]260; CHECK: [[END_LABEL]]:261 262 %call_03 = call float @sinf(float %value) strictfp263; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0xFFF0000000000000, metadata !"oeq", metadata !"fpexcept.strict")264; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0x7FF0000000000000, metadata !"oeq", metadata !"fpexcept.strict")265; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]266; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]267; CHECK: [[CALL_LABEL]]:268; CHECK-NEXT: %call_03 = call float @sinf(float %value)269; CHECK-NEXT: br label %[[END_LABEL]]270; CHECK: [[END_LABEL]]:271 272 %call_04 = call float @acoshf(float %value) strictfp273; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 1.000000e+00, metadata !"olt", metadata !"fpexcept.strict")274; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]275; CHECK: [[CALL_LABEL]]:276; CHECK-NEXT: %call_04 = call float @acoshf(float %value)277; CHECK-NEXT: br label %[[END_LABEL]]278; CHECK: [[END_LABEL]]:279 280 %call_05 = call float @sqrtf(float %value) strictfp281; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0.000000e+00, metadata !"olt", metadata !"fpexcept.strict")282; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]283; CHECK: [[CALL_LABEL]]:284; CHECK-NEXT: %call_05 = call float @sqrtf(float %value)285; CHECK-NEXT: br label %[[END_LABEL]]286; CHECK: [[END_LABEL]]:287 288 %call_06 = call float @atanhf(float %value) strictfp289; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 1.000000e+00, metadata !"oge", metadata !"fpexcept.strict")290; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.000000e+00, metadata !"ole", metadata !"fpexcept.strict")291; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]292; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]293; CHECK: [[CALL_LABEL]]:294; CHECK-NEXT: %call_06 = call float @atanhf(float %value)295; CHECK-NEXT: br label %[[END_LABEL]]296; CHECK: [[END_LABEL]]:297 298 %call_07 = call float @logf(float %value) strictfp299; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0.000000e+00, metadata !"ole", metadata !"fpexcept.strict")300; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]301; CHECK: [[CALL_LABEL]]:302; CHECK-NEXT: %call_07 = call float @logf(float %value)303; CHECK-NEXT: br label %[[END_LABEL]]304; CHECK: [[END_LABEL]]:305 306 %call_08 = call float @log10f(float %value) strictfp307; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0.000000e+00, metadata !"ole", metadata !"fpexcept.strict")308; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]309; CHECK: [[CALL_LABEL]]:310; CHECK-NEXT: %call_08 = call float @log10f(float %value)311; CHECK-NEXT: br label %[[END_LABEL]]312; CHECK: [[END_LABEL]]:313 314 %call_09 = call float @log2f(float %value) strictfp315; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0.000000e+00, metadata !"ole", metadata !"fpexcept.strict")316; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]317; CHECK: [[CALL_LABEL]]:318; CHECK-NEXT: %call_09 = call float @log2f(float %value)319; CHECK-NEXT: br label %[[END_LABEL]]320; CHECK: [[END_LABEL]]:321 322 %call_10 = call float @logbf(float %value) strictfp323; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float 0.000000e+00, metadata !"ole", metadata !"fpexcept.strict")324; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]325; CHECK: [[CALL_LABEL]]:326; CHECK-NEXT: %call_10 = call float @logbf(float %value)327; CHECK-NEXT: br label %[[END_LABEL]]328; CHECK: [[END_LABEL]]:329 330 %call_11 = call float @log1pf(float %value) strictfp331; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f32(float [[VALUE]], float -1.000000e+00, metadata !"ole", metadata !"fpexcept.strict")332; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]333; CHECK: [[CALL_LABEL]]:334; CHECK-NEXT: %call_11 = call float @log1pf(float %value)335; CHECK-NEXT: br label %[[END_LABEL]]336; CHECK: [[END_LABEL]]:337 ret void338}339 340declare float @acosf(float)341declare float @asinf(float)342declare float @cosf(float)343declare float @sinf(float)344declare float @acoshf(float)345declare float @sqrtf(float)346declare float @atanhf(float)347declare float @logf(float)348declare float @log10f(float)349declare float @log2f(float)350declare float @logbf(float)351declare float @log1pf(float)352 353; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 1048575}354