1; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s 2 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, 0xKC00CB174000000000000 10; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000 11; 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, 0xKC00CB21C000000000000 20; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB170000000000000 21; 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, 0xKC00D807A000000000000 30; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB1DC000000000000 31; 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, 0xKC00CB174000000000000 40; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000 41; 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, 0xK400CB170000000000000 50; 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 void 57} 58 59define void @test_range_error_strictfp(x86_fp80 %value) strictfp { 60entry: 61 %call_0 = call x86_fp80 @coshl(x86_fp80 %value) strictfp 62; 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) strictfp 72; 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) strictfp 82; 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) strictfp 92; 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) strictfp 102; 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 void 110} 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, 0xK3FFF8000000000000000 123; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000 124; 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, 0xK3FFF8000000000000000 133; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000 134; 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, 0xKFFFF8000000000000000 143; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000 144; 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, 0xKFFFF8000000000000000 153; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000 154; 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, 0xK3FFF8000000000000000 163; 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, 0xK00000000000000000000 171; 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, 0xK3FFF8000000000000000 179; CHECK: [[COND2:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000 180; 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, 0xK00000000000000000000 189; 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, 0xK00000000000000000000 197; 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, 0xK00000000000000000000 205; 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, 0xK00000000000000000000 213; 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, 0xKBFFF8000000000000000 221; 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 void 228} 229 230define void @test_domain_error_strictfp(x86_fp80 %value) strictfp { 231entry: 232 %call_00 = call x86_fp80 @acosl(x86_fp80 %value) strictfp 233; 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) strictfp 243; 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) strictfp 253; 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) strictfp 263; 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) strictfp 273; 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) strictfp 281; 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) strictfp 289; 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) strictfp 299; 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) strictfp 307; 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) strictfp 315; 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) strictfp 323; 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) strictfp 331; 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 void 339} 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