brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.5 KiB · 5b9a447 Raw
383 lines · plain
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s2 3; Test to verify that constrained intrinsics all have the strictfp attribute.4; Ordering is from Intrinsics.td.5 6define void @func(double %a, double %b, double %c, i32 %i) strictfp {7; CHECK-LABEL: define void @func8; CHECK-SAME: (double [[A:%.*]], double [[B:%.*]], double [[C:%.*]], i32 [[I:%.*]]) #[[ATTR0:[0-9]+]] {9 10  %add = call double @llvm.experimental.constrained.fadd.f64(11                                               double %a, double %b,12                                               metadata !"round.dynamic",13                                               metadata !"fpexcept.strict")14 15  %sub = call double @llvm.experimental.constrained.fsub.f64(16                                               double %a, double %b,17                                               metadata !"round.dynamic",18                                               metadata !"fpexcept.strict")19 20  %mul = call double @llvm.experimental.constrained.fmul.f64(21                                               double %a, double %b,22                                               metadata !"round.dynamic",23                                               metadata !"fpexcept.strict")24 25  %div = call double @llvm.experimental.constrained.fdiv.f64(26                                               double %a, double %b,27                                               metadata !"round.dynamic",28                                               metadata !"fpexcept.strict")29 30  %rem = call double @llvm.experimental.constrained.frem.f64(31                                               double %a, double %b,32                                               metadata !"round.dynamic",33                                               metadata !"fpexcept.strict")34 35  %fma = call double @llvm.experimental.constrained.fma.f64(36                                               double %a, double %b, double %c,37                                               metadata !"round.dynamic",38                                               metadata !"fpexcept.strict")39 40  %fmuladd = call double @llvm.experimental.constrained.fmuladd.f64(41                                               double %a, double %b, double %c,42                                               metadata !"round.dynamic",43                                               metadata !"fpexcept.strict")44 45  %si = call i32 @llvm.experimental.constrained.fptosi.i32.f64(double %a,46                                               metadata !"fpexcept.strict")47 48  %ui = call i32 @llvm.experimental.constrained.fptoui.i32.f64(double %a,49                                               metadata !"fpexcept.strict")50 51  %sfp = call double @llvm.experimental.constrained.sitofp.f64.i32(i32 %i,52                                               metadata !"round.dynamic",53                                               metadata !"fpexcept.strict")54 55  %ufp = call double @llvm.experimental.constrained.uitofp.f64.i32(i32 %i,56                                               metadata !"round.dynamic",57                                               metadata !"fpexcept.strict")58 59  %fptrunc = call float @llvm.experimental.constrained.fptrunc.f32.f64(60                                               double %a,61                                               metadata !"round.dynamic",62                                               metadata !"fpexcept.strict")63 64  %ext = call double @llvm.experimental.constrained.fpext.f64.f32(65                                               float %fptrunc,66                                               metadata !"fpexcept.strict")67 68  %sqrt = call double @llvm.experimental.constrained.sqrt.f64(69                                               double %a,70                                               metadata !"round.dynamic",71                                               metadata !"fpexcept.strict")72 73  %powi = call double @llvm.experimental.constrained.powi.f64(74                                               double %a, i32 %i,75                                               metadata !"round.dynamic",76                                               metadata !"fpexcept.strict")77 78  %sin = call double @llvm.experimental.constrained.sin.f64(79                                               double %a,80                                               metadata !"round.dynamic",81                                               metadata !"fpexcept.strict")82 83  %cos = call double @llvm.experimental.constrained.cos.f64(84                                               double %a,85                                               metadata !"round.dynamic",86                                               metadata !"fpexcept.strict")87 88  %tan = call double @llvm.experimental.constrained.tan.f64(89                                               double %a,90                                               metadata !"round.dynamic",91                                               metadata !"fpexcept.strict")92 93  %acos = call double @llvm.experimental.constrained.acos.f64(94                                               double %a,95                                               metadata !"round.dynamic",96                                               metadata !"fpexcept.strict")97 98  %asin = call double @llvm.experimental.constrained.asin.f64(99                                               double %a,100                                               metadata !"round.dynamic",101                                               metadata !"fpexcept.strict")102 103  %atan = call double @llvm.experimental.constrained.atan.f64(104                                               double %a,105                                               metadata !"round.dynamic",106                                               metadata !"fpexcept.strict")107 108  %atan2 = call double @llvm.experimental.constrained.atan2.f64(109                                               double %a, double %b,110                                               metadata !"round.dynamic",111                                               metadata !"fpexcept.strict")112 113  %cosh = call double @llvm.experimental.constrained.cosh.f64(114                                               double %a,115                                               metadata !"round.dynamic",116                                               metadata !"fpexcept.strict")117 118  %sinh = call double @llvm.experimental.constrained.sinh.f64(119                                               double %a,120                                               metadata !"round.dynamic",121                                               metadata !"fpexcept.strict")122 123  %tanh = call double @llvm.experimental.constrained.tanh.f64(124                                               double %a,125                                               metadata !"round.dynamic",126                                               metadata !"fpexcept.strict")127 128  %pow = call double @llvm.experimental.constrained.pow.f64(129                                               double %a, double %b,130                                               metadata !"round.dynamic",131                                               metadata !"fpexcept.strict")132 133  %log = call double @llvm.experimental.constrained.log.f64(134                                               double %a,135                                               metadata !"round.dynamic",136                                               metadata !"fpexcept.strict")137 138  %log10 = call double @llvm.experimental.constrained.log10.f64(139                                               double %a,140                                               metadata !"round.dynamic",141                                               metadata !"fpexcept.strict")142 143  %log2 = call double @llvm.experimental.constrained.log2.f64(144                                               double %a,145                                               metadata !"round.dynamic",146                                               metadata !"fpexcept.strict")147 148  %exp = call double @llvm.experimental.constrained.exp.f64(149                                               double %a,150                                               metadata !"round.dynamic",151                                               metadata !"fpexcept.strict")152 153  %exp2 = call double @llvm.experimental.constrained.exp2.f64(154                                               double %a,155                                               metadata !"round.dynamic",156                                               metadata !"fpexcept.strict")157 158  %rint = call double @llvm.experimental.constrained.rint.f64(159                                               double %a,160                                               metadata !"round.dynamic",161                                               metadata !"fpexcept.strict")162 163  %neari = call double @llvm.experimental.constrained.nearbyint.f64(164                                               double %a,165                                               metadata !"round.dynamic",166                                               metadata !"fpexcept.strict")167 168  %x32 = call i32 @llvm.experimental.constrained.lrint.i32.f64(169                                               double %a,170                                               metadata !"round.dynamic",171                                               metadata !"fpexcept.strict")172 173  %x64 = call i64 @llvm.experimental.constrained.llrint.i64.f64(174                                               double %a,175                                               metadata !"round.dynamic",176                                               metadata !"fpexcept.strict")177 178  %maxnum = call double @llvm.experimental.constrained.maxnum.f64(179                                               double %a, double %b,180                                               metadata !"fpexcept.strict")181 182  %minnum = call double @llvm.experimental.constrained.minnum.f64(183                                               double %a, double %b,184                                               metadata !"fpexcept.strict")185 186  %maxmum = call double @llvm.experimental.constrained.maximum.f64(187                                               double %a, double %b,188                                               metadata !"fpexcept.strict")189 190  %minmum = call double @llvm.experimental.constrained.minimum.f64(191                                               double %a, double %b,192                                               metadata !"fpexcept.strict")193 194  %ceil = call double @llvm.experimental.constrained.ceil.f64(195                                               double %a,196                                               metadata !"fpexcept.strict")197 198  %floor = call double @llvm.experimental.constrained.floor.f64(199                                               double %a,200                                               metadata !"fpexcept.strict")201 202  %y32 = call i32 @llvm.experimental.constrained.lround.i32.f64(203                                               double %a,204                                               metadata !"fpexcept.strict")205 206  %y64 = call i64 @llvm.experimental.constrained.llround.i64.f64(207                                               double %a,208                                               metadata !"fpexcept.strict")209 210  %round = call double @llvm.experimental.constrained.round.f64(211                                               double %a,212                                               metadata !"fpexcept.strict")213 214  %roundev = call double @llvm.experimental.constrained.roundeven.f64(215                                               double %a,216                                               metadata !"fpexcept.strict")217 218  %trunc = call double @llvm.experimental.constrained.trunc.f64(219                                               double %a,220                                               metadata !"fpexcept.strict")221 222  %q1 = call i1 @llvm.experimental.constrained.fcmp.f64(223                                               double %a, double %b,224                                               metadata !"oeq",225                                               metadata !"fpexcept.strict")226 227  %s1 = call i1 @llvm.experimental.constrained.fcmps.f64(228                                               double %a, double %b,229                                               metadata !"oeq",230                                               metadata !"fpexcept.strict")231 232; CHECK: ret void233  ret void234}235 236declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata)237; CHECK: @llvm.experimental.constrained.fadd.f64({{.*}}) #[[ATTR1:[0-9]+]]238 239declare double @llvm.experimental.constrained.fsub.f64(double, double, metadata, metadata)240; CHECK: @llvm.experimental.constrained.fsub.f64({{.*}}) #[[ATTR1]]241 242declare double @llvm.experimental.constrained.fmul.f64(double, double, metadata, metadata)243; CHECK: @llvm.experimental.constrained.fmul.f64({{.*}}) #[[ATTR1]]244 245declare double @llvm.experimental.constrained.fdiv.f64(double, double, metadata, metadata)246; CHECK: @llvm.experimental.constrained.fdiv.f64({{.*}}) #[[ATTR1]]247 248declare double @llvm.experimental.constrained.frem.f64(double, double, metadata, metadata)249; CHECK: @llvm.experimental.constrained.frem.f64({{.*}}) #[[ATTR1]]250 251declare double @llvm.experimental.constrained.fma.f64(double, double, double, metadata, metadata)252; CHECK: @llvm.experimental.constrained.fma.f64({{.*}}) #[[ATTR1]]253 254declare double @llvm.experimental.constrained.fmuladd.f64(double, double, double, metadata, metadata)255; CHECK: @llvm.experimental.constrained.fmuladd.f64({{.*}}) #[[ATTR1]]256 257declare i32 @llvm.experimental.constrained.fptosi.i32.f64(double, metadata)258; CHECK: @llvm.experimental.constrained.fptosi.i32.f64({{.*}}) #[[ATTR1]]259 260declare i32 @llvm.experimental.constrained.fptoui.i32.f64(double, metadata)261; CHECK: @llvm.experimental.constrained.fptoui.i32.f64({{.*}}) #[[ATTR1]]262 263declare double @llvm.experimental.constrained.sitofp.f64.i32(i32, metadata, metadata)264; CHECK: @llvm.experimental.constrained.sitofp.f64.i32({{.*}}) #[[ATTR1]]265 266declare double @llvm.experimental.constrained.uitofp.f64.i32(i32, metadata, metadata)267; CHECK: @llvm.experimental.constrained.uitofp.f64.i32({{.*}}) #[[ATTR1]]268 269declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)270; CHECK: @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}) #[[ATTR1]]271 272declare double @llvm.experimental.constrained.fpext.f64.f32(float, metadata)273; CHECK: @llvm.experimental.constrained.fpext.f64.f32({{.*}}) #[[ATTR1]]274 275declare double @llvm.experimental.constrained.sqrt.f64(double, metadata, metadata)276; CHECK: @llvm.experimental.constrained.sqrt.f64({{.*}}) #[[ATTR1]]277 278declare double @llvm.experimental.constrained.powi.f64(double, i32, metadata, metadata)279; CHECK: @llvm.experimental.constrained.powi.f64({{.*}}) #[[ATTR1]]280 281declare double @llvm.experimental.constrained.sin.f64(double, metadata, metadata)282; CHECK: @llvm.experimental.constrained.sin.f64({{.*}}) #[[ATTR1]]283 284declare double @llvm.experimental.constrained.cos.f64(double, metadata, metadata)285; CHECK: @llvm.experimental.constrained.cos.f64({{.*}}) #[[ATTR1]]286 287declare double @llvm.experimental.constrained.tan.f64(double, metadata, metadata)288; CHECK: @llvm.experimental.constrained.tan.f64({{.*}}) #[[ATTR1]]289 290declare double @llvm.experimental.constrained.asin.f64(double, metadata, metadata)291; CHECK: @llvm.experimental.constrained.asin.f64({{.*}}) #[[ATTR1]]292 293declare double @llvm.experimental.constrained.acos.f64(double, metadata, metadata)294; CHECK: @llvm.experimental.constrained.acos.f64({{.*}}) #[[ATTR1]]295 296declare double @llvm.experimental.constrained.atan.f64(double, metadata, metadata)297; CHECK: @llvm.experimental.constrained.atan.f64({{.*}}) #[[ATTR1]]298 299declare double @llvm.experimental.constrained.atan2.f64(double, double, metadata, metadata)300; CHECK: @llvm.experimental.constrained.atan2.f64({{.*}}) #[[ATTR1]]301 302declare double @llvm.experimental.constrained.sinh.f64(double, metadata, metadata)303; CHECK: @llvm.experimental.constrained.sinh.f64({{.*}}) #[[ATTR1]]304 305declare double @llvm.experimental.constrained.cosh.f64(double, metadata, metadata)306; CHECK: @llvm.experimental.constrained.cosh.f64({{.*}}) #[[ATTR1]]307 308declare double @llvm.experimental.constrained.tanh.f64(double, metadata, metadata)309; CHECK: @llvm.experimental.constrained.tanh.f64({{.*}}) #[[ATTR1]]310 311declare double @llvm.experimental.constrained.pow.f64(double, double, metadata, metadata)312; CHECK: @llvm.experimental.constrained.pow.f64({{.*}}) #[[ATTR1]]313 314declare double @llvm.experimental.constrained.log.f64(double, metadata, metadata)315; CHECK: @llvm.experimental.constrained.log.f64({{.*}}) #[[ATTR1]]316 317declare double @llvm.experimental.constrained.log10.f64(double, metadata, metadata)318; CHECK: @llvm.experimental.constrained.log10.f64({{.*}}) #[[ATTR1]]319 320declare double @llvm.experimental.constrained.log2.f64(double, metadata, metadata)321; CHECK: @llvm.experimental.constrained.log2.f64({{.*}}) #[[ATTR1]]322 323declare double @llvm.experimental.constrained.exp.f64(double, metadata, metadata)324; CHECK: @llvm.experimental.constrained.exp.f64({{.*}}) #[[ATTR1]]325 326declare double @llvm.experimental.constrained.exp2.f64(double, metadata, metadata)327; CHECK: @llvm.experimental.constrained.exp2.f64({{.*}}) #[[ATTR1]]328 329declare double @llvm.experimental.constrained.rint.f64(double, metadata, metadata)330; CHECK: @llvm.experimental.constrained.rint.f64({{.*}}) #[[ATTR1]]331 332declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata)333; CHECK: @llvm.experimental.constrained.nearbyint.f64({{.*}}) #[[ATTR1]]334 335declare i32 @llvm.experimental.constrained.lrint.i32.f64(double, metadata, metadata)336; CHECK: @llvm.experimental.constrained.lrint.i32.f64({{.*}}) #[[ATTR1]]337 338declare i64 @llvm.experimental.constrained.llrint.i64.f64(double, metadata, metadata)339; CHECK: @llvm.experimental.constrained.llrint.i64.f64({{.*}}) #[[ATTR1]]340 341declare double @llvm.experimental.constrained.maxnum.f64(double, double, metadata)342; CHECK: @llvm.experimental.constrained.maxnum.f64({{.*}}) #[[ATTR1]]343 344declare double @llvm.experimental.constrained.minnum.f64(double, double, metadata)345; CHECK: @llvm.experimental.constrained.minnum.f64({{.*}}) #[[ATTR1]]346 347declare double @llvm.experimental.constrained.maximum.f64(double, double, metadata)348; CHECK: @llvm.experimental.constrained.maximum.f64({{.*}}) #[[ATTR1]]349 350declare double @llvm.experimental.constrained.minimum.f64(double, double, metadata)351; CHECK: @llvm.experimental.constrained.minimum.f64({{.*}}) #[[ATTR1]]352 353declare double @llvm.experimental.constrained.ceil.f64(double, metadata)354; CHECK: @llvm.experimental.constrained.ceil.f64({{.*}}) #[[ATTR1]]355 356declare double @llvm.experimental.constrained.floor.f64(double, metadata)357; CHECK: @llvm.experimental.constrained.floor.f64({{.*}}) #[[ATTR1]]358 359declare i32 @llvm.experimental.constrained.lround.i32.f64(double, metadata)360; CHECK: @llvm.experimental.constrained.lround.i32.f64({{.*}}) #[[ATTR1]]361 362declare i64 @llvm.experimental.constrained.llround.i64.f64(double, metadata)363; CHECK: @llvm.experimental.constrained.llround.i64.f64({{.*}}) #[[ATTR1]]364 365declare double @llvm.experimental.constrained.round.f64(double, metadata)366; CHECK: @llvm.experimental.constrained.round.f64({{.*}}) #[[ATTR1]]367 368declare double @llvm.experimental.constrained.roundeven.f64(double, metadata)369; CHECK: @llvm.experimental.constrained.roundeven.f64({{.*}}) #[[ATTR1]]370 371declare double @llvm.experimental.constrained.trunc.f64(double, metadata)372; CHECK: @llvm.experimental.constrained.trunc.f64({{.*}}) #[[ATTR1]]373 374declare i1 @llvm.experimental.constrained.fcmp.f64(double, double, metadata, metadata)375; CHECK: @llvm.experimental.constrained.fcmp.f64({{.*}}) #[[ATTR1]]376 377declare i1 @llvm.experimental.constrained.fcmps.f64(double, double, metadata, metadata)378; CHECK: @llvm.experimental.constrained.fcmps.f64({{.*}}) #[[ATTR1]]379 380; CHECK: attributes #[[ATTR0]] = {{{.*}} strictfp {{.*}}}381; CHECK: attributes #[[ATTR1]] = { {{.*}} strictfp {{.*}} }382 383