321 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -mtriple=i686-pc-windows-msvc -mattr=+cmov < %s | FileCheck %s3 4define float @ceil(float %x) #0 {5; CHECK-LABEL: ceil:6; CHECK: # %bb.0:7; CHECK-NEXT: subl $12, %esp8; CHECK-NEXT: flds {{[0-9]+}}(%esp)9; CHECK-NEXT: fstpl (%esp)10; CHECK-NEXT: wait11; CHECK-NEXT: calll _ceil12; CHECK-NEXT: fstps {{[0-9]+}}(%esp)13; CHECK-NEXT: flds {{[0-9]+}}(%esp)14; CHECK-NEXT: wait15; CHECK-NEXT: addl $12, %esp16; CHECK-NEXT: retl17 %result = call float @llvm.experimental.constrained.ceil.f32(float %x, metadata !"fpexcept.strict") #018 ret float %result19}20 21define float @cos(float %x) #0 {22; CHECK-LABEL: cos:23; CHECK: # %bb.0:24; CHECK-NEXT: subl $12, %esp25; CHECK-NEXT: flds {{[0-9]+}}(%esp)26; CHECK-NEXT: fstpl (%esp)27; CHECK-NEXT: wait28; CHECK-NEXT: calll _cos29; CHECK-NEXT: fstps {{[0-9]+}}(%esp)30; CHECK-NEXT: flds {{[0-9]+}}(%esp)31; CHECK-NEXT: wait32; CHECK-NEXT: addl $12, %esp33; CHECK-NEXT: retl34 %result = call float @llvm.experimental.constrained.cos.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #035 ret float %result36}37 38define float @exp(float %x) #0 {39; CHECK-LABEL: exp:40; CHECK: # %bb.0:41; CHECK-NEXT: subl $12, %esp42; CHECK-NEXT: flds {{[0-9]+}}(%esp)43; CHECK-NEXT: fstpl (%esp)44; CHECK-NEXT: wait45; CHECK-NEXT: calll _exp46; CHECK-NEXT: fstps {{[0-9]+}}(%esp)47; CHECK-NEXT: flds {{[0-9]+}}(%esp)48; CHECK-NEXT: wait49; CHECK-NEXT: addl $12, %esp50; CHECK-NEXT: retl51 %result = call float @llvm.experimental.constrained.exp.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #052 ret float %result53}54 55define float @floor(float %x) #0 {56; CHECK-LABEL: floor:57; CHECK: # %bb.0:58; CHECK-NEXT: subl $12, %esp59; CHECK-NEXT: flds {{[0-9]+}}(%esp)60; CHECK-NEXT: fstpl (%esp)61; CHECK-NEXT: wait62; CHECK-NEXT: calll _floor63; CHECK-NEXT: fstps {{[0-9]+}}(%esp)64; CHECK-NEXT: flds {{[0-9]+}}(%esp)65; CHECK-NEXT: wait66; CHECK-NEXT: addl $12, %esp67; CHECK-NEXT: retl68 %result = call float @llvm.experimental.constrained.floor.f32(float %x, metadata !"fpexcept.strict") #069 ret float %result70}71 72define float @frem(float %x, float %y) #0 {73; CHECK-LABEL: frem:74; CHECK: # %bb.0:75; CHECK-NEXT: subl $20, %esp76; CHECK-NEXT: flds {{[0-9]+}}(%esp)77; CHECK-NEXT: flds {{[0-9]+}}(%esp)78; CHECK-NEXT: fxch %st(1)79; CHECK-NEXT: fstpl {{[0-9]+}}(%esp)80; CHECK-NEXT: fstpl (%esp)81; CHECK-NEXT: wait82; CHECK-NEXT: calll _fmod83; CHECK-NEXT: fstps {{[0-9]+}}(%esp)84; CHECK-NEXT: flds {{[0-9]+}}(%esp)85; CHECK-NEXT: wait86; CHECK-NEXT: addl $20, %esp87; CHECK-NEXT: retl88 %result = call float @llvm.experimental.constrained.frem.f32(float %x, float %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #089 ret float %result90}91 92define float @log(float %x) #0 {93; CHECK-LABEL: log:94; CHECK: # %bb.0:95; CHECK-NEXT: subl $12, %esp96; CHECK-NEXT: flds {{[0-9]+}}(%esp)97; CHECK-NEXT: fstpl (%esp)98; CHECK-NEXT: wait99; CHECK-NEXT: calll _log100; CHECK-NEXT: fstps {{[0-9]+}}(%esp)101; CHECK-NEXT: flds {{[0-9]+}}(%esp)102; CHECK-NEXT: wait103; CHECK-NEXT: addl $12, %esp104; CHECK-NEXT: retl105 %result = call float @llvm.experimental.constrained.log.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0106 ret float %result107}108 109define float @log10(float %x) #0 {110; CHECK-LABEL: log10:111; CHECK: # %bb.0:112; CHECK-NEXT: subl $12, %esp113; CHECK-NEXT: flds {{[0-9]+}}(%esp)114; CHECK-NEXT: fstpl (%esp)115; CHECK-NEXT: wait116; CHECK-NEXT: calll _log10117; CHECK-NEXT: fstps {{[0-9]+}}(%esp)118; CHECK-NEXT: flds {{[0-9]+}}(%esp)119; CHECK-NEXT: wait120; CHECK-NEXT: addl $12, %esp121; CHECK-NEXT: retl122 %result = call float @llvm.experimental.constrained.log10.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0123 ret float %result124}125 126define float @pow(float %x, float %y) #0 {127; CHECK-LABEL: pow:128; CHECK: # %bb.0:129; CHECK-NEXT: subl $20, %esp130; CHECK-NEXT: flds {{[0-9]+}}(%esp)131; CHECK-NEXT: flds {{[0-9]+}}(%esp)132; CHECK-NEXT: fxch %st(1)133; CHECK-NEXT: fstpl {{[0-9]+}}(%esp)134; CHECK-NEXT: fstpl (%esp)135; CHECK-NEXT: wait136; CHECK-NEXT: calll _pow137; CHECK-NEXT: fstps {{[0-9]+}}(%esp)138; CHECK-NEXT: flds {{[0-9]+}}(%esp)139; CHECK-NEXT: wait140; CHECK-NEXT: addl $20, %esp141; CHECK-NEXT: retl142 %result = call float @llvm.experimental.constrained.pow.f32(float %x, float %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0143 ret float %result144}145 146define float @sin(float %x) #0 {147; CHECK-LABEL: sin:148; CHECK: # %bb.0:149; CHECK-NEXT: subl $12, %esp150; CHECK-NEXT: flds {{[0-9]+}}(%esp)151; CHECK-NEXT: fstpl (%esp)152; CHECK-NEXT: wait153; CHECK-NEXT: calll _sin154; CHECK-NEXT: fstps {{[0-9]+}}(%esp)155; CHECK-NEXT: flds {{[0-9]+}}(%esp)156; CHECK-NEXT: wait157; CHECK-NEXT: addl $12, %esp158; CHECK-NEXT: retl159 %result = call float @llvm.experimental.constrained.sin.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0160 ret float %result161}162 163define float @tan(float %x) #0 {164; CHECK-LABEL: tan:165; CHECK: # %bb.0:166; CHECK-NEXT: subl $12, %esp167; CHECK-NEXT: flds {{[0-9]+}}(%esp)168; CHECK-NEXT: fstpl (%esp)169; CHECK-NEXT: wait170; CHECK-NEXT: calll _tan171; CHECK-NEXT: fstps {{[0-9]+}}(%esp)172; CHECK-NEXT: flds {{[0-9]+}}(%esp)173; CHECK-NEXT: wait174; CHECK-NEXT: addl $12, %esp175; CHECK-NEXT: retl176 %result = call float @llvm.experimental.constrained.tan.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0177 ret float %result178}179 180define float @acos(float %x) #0 {181; CHECK-LABEL: acos:182; CHECK: # %bb.0:183; CHECK-NEXT: subl $12, %esp184; CHECK-NEXT: flds {{[0-9]+}}(%esp)185; CHECK-NEXT: fstpl (%esp)186; CHECK-NEXT: wait187; CHECK-NEXT: calll _acos188; CHECK-NEXT: fstps {{[0-9]+}}(%esp)189; CHECK-NEXT: flds {{[0-9]+}}(%esp)190; CHECK-NEXT: wait191; CHECK-NEXT: addl $12, %esp192; CHECK-NEXT: retl193 %result = call float @llvm.experimental.constrained.acos.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0194 ret float %result195}196 197define float @asin(float %x) #0 {198; CHECK-LABEL: asin:199; CHECK: # %bb.0:200; CHECK-NEXT: subl $12, %esp201; CHECK-NEXT: flds {{[0-9]+}}(%esp)202; CHECK-NEXT: fstpl (%esp)203; CHECK-NEXT: wait204; CHECK-NEXT: calll _asin205; CHECK-NEXT: fstps {{[0-9]+}}(%esp)206; CHECK-NEXT: flds {{[0-9]+}}(%esp)207; CHECK-NEXT: wait208; CHECK-NEXT: addl $12, %esp209; CHECK-NEXT: retl210 %result = call float @llvm.experimental.constrained.asin.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0211 ret float %result212}213 214define float @atan(float %x) #0 {215; CHECK-LABEL: atan:216; CHECK: # %bb.0:217; CHECK-NEXT: subl $12, %esp218; CHECK-NEXT: flds {{[0-9]+}}(%esp)219; CHECK-NEXT: fstpl (%esp)220; CHECK-NEXT: wait221; CHECK-NEXT: calll _atan222; CHECK-NEXT: fstps {{[0-9]+}}(%esp)223; CHECK-NEXT: flds {{[0-9]+}}(%esp)224; CHECK-NEXT: wait225; CHECK-NEXT: addl $12, %esp226; CHECK-NEXT: retl227 %result = call float @llvm.experimental.constrained.atan.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0228 ret float %result229}230 231define float @atan2(float %x, float %y) #0 {232; CHECK-LABEL: atan2:233; CHECK: # %bb.0:234; CHECK-NEXT: subl $20, %esp235; CHECK-NEXT: flds {{[0-9]+}}(%esp)236; CHECK-NEXT: flds {{[0-9]+}}(%esp)237; CHECK-NEXT: fxch %st(1)238; CHECK-NEXT: fstpl {{[0-9]+}}(%esp)239; CHECK-NEXT: fstpl (%esp)240; CHECK-NEXT: wait241; CHECK-NEXT: calll _atan2242; CHECK-NEXT: fstps {{[0-9]+}}(%esp)243; CHECK-NEXT: flds {{[0-9]+}}(%esp)244; CHECK-NEXT: wait245; CHECK-NEXT: addl $20, %esp246; CHECK-NEXT: retl247 %result = call float @llvm.experimental.constrained.atan2.f32(float %x, float %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0248 ret float %result249}250 251define float @cosh(float %x) #0 {252; CHECK-LABEL: cosh:253; CHECK: # %bb.0:254; CHECK-NEXT: subl $12, %esp255; CHECK-NEXT: flds {{[0-9]+}}(%esp)256; CHECK-NEXT: fstpl (%esp)257; CHECK-NEXT: wait258; CHECK-NEXT: calll _cosh259; CHECK-NEXT: fstps {{[0-9]+}}(%esp)260; CHECK-NEXT: flds {{[0-9]+}}(%esp)261; CHECK-NEXT: wait262; CHECK-NEXT: addl $12, %esp263; CHECK-NEXT: retl264 %result = call float @llvm.experimental.constrained.cosh.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0265 ret float %result266}267 268define float @sinh(float %x) #0 {269; CHECK-LABEL: sinh:270; CHECK: # %bb.0:271; CHECK-NEXT: subl $12, %esp272; CHECK-NEXT: flds {{[0-9]+}}(%esp)273; CHECK-NEXT: fstpl (%esp)274; CHECK-NEXT: wait275; CHECK-NEXT: calll _sinh276; CHECK-NEXT: fstps {{[0-9]+}}(%esp)277; CHECK-NEXT: flds {{[0-9]+}}(%esp)278; CHECK-NEXT: wait279; CHECK-NEXT: addl $12, %esp280; CHECK-NEXT: retl281 %result = call float @llvm.experimental.constrained.sinh.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0282 ret float %result283}284 285define float @tanh(float %x) #0 {286; CHECK-LABEL: tanh:287; CHECK: # %bb.0:288; CHECK-NEXT: subl $12, %esp289; CHECK-NEXT: flds {{[0-9]+}}(%esp)290; CHECK-NEXT: fstpl (%esp)291; CHECK-NEXT: wait292; CHECK-NEXT: calll _tanh293; CHECK-NEXT: fstps {{[0-9]+}}(%esp)294; CHECK-NEXT: flds {{[0-9]+}}(%esp)295; CHECK-NEXT: wait296; CHECK-NEXT: addl $12, %esp297; CHECK-NEXT: retl298 %result = call float @llvm.experimental.constrained.tanh.f32(float %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0299 ret float %result300}301 302attributes #0 = { strictfp }303 304declare float @llvm.experimental.constrained.ceil.f32(float, metadata)305declare float @llvm.experimental.constrained.cos.f32(float, metadata, metadata)306declare float @llvm.experimental.constrained.exp.f32(float, metadata, metadata)307declare float @llvm.experimental.constrained.floor.f32(float, metadata)308declare float @llvm.experimental.constrained.frem.f32(float, float, metadata, metadata)309declare float @llvm.experimental.constrained.log.f32(float, metadata, metadata)310declare float @llvm.experimental.constrained.log10.f32(float, metadata, metadata)311declare float @llvm.experimental.constrained.pow.f32(float, float, metadata, metadata)312declare float @llvm.experimental.constrained.sin.f32(float, metadata, metadata)313declare float @llvm.experimental.constrained.tan.f32(float, metadata, metadata)314declare float @llvm.experimental.constrained.acos.f32(float, metadata, metadata)315declare float @llvm.experimental.constrained.asin.f32(float, metadata, metadata)316declare float @llvm.experimental.constrained.atan.f32(float, metadata, metadata)317declare float @llvm.experimental.constrained.atan2.f32(float, float, metadata, metadata)318declare float @llvm.experimental.constrained.cosh.f32(float, metadata, metadata)319declare float @llvm.experimental.constrained.sinh.f32(float, metadata, metadata)320declare float @llvm.experimental.constrained.tanh.f32(float, metadata, metadata)321