355 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(x86_fp80 %value) {7entry:8 %call_0 = call x86_fp80 @coshl(x86_fp80 %value)9; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB17400000000000010; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB17400000000000011; 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 x86_fp80 @coshl(x86_fp80 %value)15; CHECK-NEXT: br label %[[END_LABEL]]16; CHECK: [[END_LABEL]]:17 18 %call_1 = call x86_fp80 @expl(x86_fp80 %value)19; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB21C00000000000020; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB17000000000000021; 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 x86_fp80 @expl(x86_fp80 %value)25; CHECK-NEXT: br label %[[END_LABEL]]26; CHECK: [[END_LABEL]]:27 28 %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)29; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00D807A00000000000030; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB1DC00000000000031; 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 x86_fp80 @exp2l(x86_fp80 %value)35; CHECK-NEXT: br label %[[END_LABEL]]36; CHECK: [[END_LABEL]]:37 38 %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)39; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB17400000000000040; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB17400000000000041; 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 x86_fp80 @sinhl(x86_fp80 %value)45; CHECK-NEXT: br label %[[END_LABEL]]46; CHECK: [[END_LABEL]]:47 48 %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)49; CHECK: [[COND:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB17000000000000050; 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 x86_fp80 @expm1l(x86_fp80 %value)53; CHECK-NEXT: br label %[[END_LABEL]]54; CHECK: [[END_LABEL]]:55 56 ret void57}58 59define void @test_range_error_strictfp(x86_fp80 %value) strictfp {60entry:61 %call_0 = call x86_fp80 @coshl(x86_fp80 %value) strictfp62; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE:%.*]], x86_fp80 0xKC00CB174000000000000, metadata !"olt", metadata !"fpexcept.strict")63; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB174000000000000, 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 x86_fp80 @coshl(x86_fp80 %value)68; CHECK-NEXT: br label %[[END_LABEL]]69; CHECK: [[END_LABEL]]:70 71 %call_1 = call x86_fp80 @expl(x86_fp80 %value) strictfp72; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00CB21C000000000000, metadata !"olt", metadata !"fpexcept.strict")73; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB170000000000000, 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 x86_fp80 @expl(x86_fp80 %value)78; CHECK-NEXT: br label %[[END_LABEL]]79; CHECK: [[END_LABEL]]:80 81 %call_3 = call x86_fp80 @exp2l(x86_fp80 %value) strictfp82; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00D807A000000000000, metadata !"olt", metadata !"fpexcept.strict")83; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB1DC000000000000, 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 x86_fp80 @exp2l(x86_fp80 %value)88; CHECK-NEXT: br label %[[END_LABEL]]89; CHECK: [[END_LABEL]]:90 91 %call_4 = call x86_fp80 @sinhl(x86_fp80 %value) strictfp92; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00CB174000000000000, metadata !"olt", metadata !"fpexcept.strict")93; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB174000000000000, 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 x86_fp80 @sinhl(x86_fp80 %value)98; CHECK-NEXT: br label %[[END_LABEL]]99; CHECK: [[END_LABEL]]:100 101 %call_5 = call x86_fp80 @expm1l(x86_fp80 %value) strictfp102; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB170000000000000, 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 x86_fp80 @expm1l(x86_fp80 %value)106; CHECK-NEXT: br label %[[END_LABEL]]107; CHECK: [[END_LABEL]]:108 109 ret void110}111 112declare x86_fp80 @coshl(x86_fp80)113declare x86_fp80 @expl(x86_fp80)114declare x86_fp80 @exp10l(x86_fp80)115declare x86_fp80 @exp2l(x86_fp80)116declare x86_fp80 @sinhl(x86_fp80)117declare x86_fp80 @expm1l(x86_fp80)118 119define void @test_domain_error(x86_fp80 %value) {120entry:121 %call_00 = call x86_fp80 @acosl(x86_fp80 %value)122; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000123; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000124; 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 x86_fp80 @acosl(x86_fp80 %value)128; CHECK-NEXT: br label %[[END_LABEL]]129; CHECK: [[END_LABEL]]:130 131 %call_01 = call x86_fp80 @asinl(x86_fp80 %value)132; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000133; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000134; 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 x86_fp80 @asinl(x86_fp80 %value)138; CHECK-NEXT: br label %[[END_LABEL]]139; CHECK: [[END_LABEL]]:140 141 %call_02 = call x86_fp80 @cosl(x86_fp80 %value)142; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000143; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000144; 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 x86_fp80 @cosl(x86_fp80 %value)148; CHECK-NEXT: br label %[[END_LABEL]]149; CHECK: [[END_LABEL]]:150 151 %call_03 = call x86_fp80 @sinl(x86_fp80 %value)152; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000153; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000154; 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 x86_fp80 @sinl(x86_fp80 %value)158; CHECK-NEXT: br label %[[END_LABEL]]159; CHECK: [[END_LABEL]]:160 161 %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)162; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK3FFF8000000000000000163; 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 x86_fp80 @acoshl(x86_fp80 %value)166; CHECK-NEXT: br label %[[END_LABEL]]167; CHECK: [[END_LABEL]]:168 169 %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)170; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK00000000000000000000171; 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 x86_fp80 @sqrtl(x86_fp80 %value)174; CHECK-NEXT: br label %[[END_LABEL]]175; CHECK: [[END_LABEL]]:176 177 %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)178; CHECK: [[COND1:%[0-9]+]] = fcmp oge x86_fp80 %value, 0xK3FFF8000000000000000179; CHECK: [[COND2:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000180; 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 x86_fp80 @atanhl(x86_fp80 %value)184; CHECK-NEXT: br label %[[END_LABEL]]185; CHECK: [[END_LABEL]]:186 187 %call_07 = call x86_fp80 @logl(x86_fp80 %value)188; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000189; 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 x86_fp80 @logl(x86_fp80 %value)192; CHECK-NEXT: br label %[[END_LABEL]]193; CHECK: [[END_LABEL]]:194 195 %call_08 = call x86_fp80 @log10l(x86_fp80 %value)196; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000197; 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 x86_fp80 @log10l(x86_fp80 %value)200; CHECK-NEXT: br label %[[END_LABEL]]201; CHECK: [[END_LABEL]]:202 203 %call_09 = call x86_fp80 @log2l(x86_fp80 %value)204; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000205; 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 x86_fp80 @log2l(x86_fp80 %value)208; CHECK-NEXT: br label %[[END_LABEL]]209; CHECK: [[END_LABEL]]:210 211 %call_10 = call x86_fp80 @logbl(x86_fp80 %value)212; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000213; 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 x86_fp80 @logbl(x86_fp80 %value)216; CHECK-NEXT: br label %[[END_LABEL]]217; CHECK: [[END_LABEL]]:218 219 %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)220; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000221; 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 x86_fp80 @log1pl(x86_fp80 %value)224; CHECK-NEXT: br label %[[END_LABEL]]225; CHECK: [[END_LABEL]]:226 227 ret void228}229 230define void @test_domain_error_strictfp(x86_fp80 %value) strictfp {231entry:232 %call_00 = call x86_fp80 @acosl(x86_fp80 %value) strictfp233; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE:%.*]], x86_fp80 0xK3FFF8000000000000000, metadata !"ogt", metadata !"fpexcept.strict")234; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, 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 x86_fp80 @acosl(x86_fp80 %value)239; CHECK-NEXT: br label %[[END_LABEL]]240; CHECK: [[END_LABEL]]:241 242 %call_01 = call x86_fp80 @asinl(x86_fp80 %value) strictfp243; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, metadata !"ogt", metadata !"fpexcept.strict")244; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, 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 x86_fp80 @asinl(x86_fp80 %value)249; CHECK-NEXT: br label %[[END_LABEL]]250; CHECK: [[END_LABEL]]:251 252 %call_02 = call x86_fp80 @cosl(x86_fp80 %value) strictfp253; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKFFFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")254; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK7FFF8000000000000000, 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 x86_fp80 @cosl(x86_fp80 %value)259; CHECK-NEXT: br label %[[END_LABEL]]260; CHECK: [[END_LABEL]]:261 262 %call_03 = call x86_fp80 @sinl(x86_fp80 %value) strictfp263; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKFFFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")264; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK7FFF8000000000000000, 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 x86_fp80 @sinl(x86_fp80 %value)269; CHECK-NEXT: br label %[[END_LABEL]]270; CHECK: [[END_LABEL]]:271 272 %call_04 = call x86_fp80 @acoshl(x86_fp80 %value) strictfp273; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, 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 x86_fp80 @acoshl(x86_fp80 %value)277; CHECK-NEXT: br label %[[END_LABEL]]278; CHECK: [[END_LABEL]]:279 280 %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value) strictfp281; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, 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 x86_fp80 @sqrtl(x86_fp80 %value)285; CHECK-NEXT: br label %[[END_LABEL]]286; CHECK: [[END_LABEL]]:287 288 %call_06 = call x86_fp80 @atanhl(x86_fp80 %value) strictfp289; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, metadata !"oge", metadata !"fpexcept.strict")290; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, 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 x86_fp80 @atanhl(x86_fp80 %value)295; CHECK-NEXT: br label %[[END_LABEL]]296; CHECK: [[END_LABEL]]:297 298 %call_07 = call x86_fp80 @logl(x86_fp80 %value) strictfp299; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, 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 x86_fp80 @logl(x86_fp80 %value)303; CHECK-NEXT: br label %[[END_LABEL]]304; CHECK: [[END_LABEL]]:305 306 %call_08 = call x86_fp80 @log10l(x86_fp80 %value) strictfp307; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, 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 x86_fp80 @log10l(x86_fp80 %value)311; CHECK-NEXT: br label %[[END_LABEL]]312; CHECK: [[END_LABEL]]:313 314 %call_09 = call x86_fp80 @log2l(x86_fp80 %value) strictfp315; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, 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 x86_fp80 @log2l(x86_fp80 %value)319; CHECK-NEXT: br label %[[END_LABEL]]320; CHECK: [[END_LABEL]]:321 322 %call_10 = call x86_fp80 @logbl(x86_fp80 %value) strictfp323; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, 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 x86_fp80 @logbl(x86_fp80 %value)327; CHECK-NEXT: br label %[[END_LABEL]]328; CHECK: [[END_LABEL]]:329 330 %call_11 = call x86_fp80 @log1pl(x86_fp80 %value) strictfp331; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, 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 x86_fp80 @log1pl(x86_fp80 %value)335; CHECK-NEXT: br label %[[END_LABEL]]336; CHECK: [[END_LABEL]]:337 338 ret void339}340 341declare x86_fp80 @acosl(x86_fp80)342declare x86_fp80 @asinl(x86_fp80)343declare x86_fp80 @cosl(x86_fp80)344declare x86_fp80 @sinl(x86_fp80)345declare x86_fp80 @acoshl(x86_fp80)346declare x86_fp80 @sqrtl(x86_fp80)347declare x86_fp80 @atanhl(x86_fp80)348declare x86_fp80 @logl(x86_fp80)349declare x86_fp80 @log10l(x86_fp80)350declare x86_fp80 @log2l(x86_fp80)351declare x86_fp80 @logbl(x86_fp80)352declare x86_fp80 @log1pl(x86_fp80)353 354; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 1048575}355