brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 789f54e Raw
173 lines · plain
1; Test strict v2f64 rounding.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s4 5declare double @llvm.experimental.constrained.rint.f64(double, metadata, metadata)6declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata)7declare double @llvm.experimental.constrained.floor.f64(double, metadata)8declare double @llvm.experimental.constrained.ceil.f64(double, metadata)9declare double @llvm.experimental.constrained.trunc.f64(double, metadata)10declare double @llvm.experimental.constrained.round.f64(double, metadata)11declare double @llvm.experimental.constrained.roundeven.f64(double, metadata)12declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata)13declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata)14declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata)15declare <2 x double> @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata)16declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata)17declare <2 x double> @llvm.experimental.constrained.round.v2f64(<2 x double>, metadata)18declare <2 x double> @llvm.experimental.constrained.roundeven.v2f64(<2 x double>, metadata)19 20define <2 x double> @f1(<2 x double> %val) #0 {21; CHECK-LABEL: f1:22; CHECK: vfidb %v24, %v24, 0, 023; CHECK: br %r1424  %res = call <2 x double> @llvm.experimental.constrained.rint.v2f64(25                        <2 x double> %val,26                        metadata !"round.dynamic",27                        metadata !"fpexcept.strict") #028  ret <2 x double> %res29}30 31define <2 x double> @f2(<2 x double> %val) #0 {32; CHECK-LABEL: f2:33; CHECK: vfidb %v24, %v24, 4, 034; CHECK: br %r1435  %res = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(36                        <2 x double> %val,37                        metadata !"round.dynamic",38                        metadata !"fpexcept.strict") #039  ret <2 x double> %res40}41 42define <2 x double> @f3(<2 x double> %val) #0 {43; CHECK-LABEL: f3:44; CHECK: vfidb %v24, %v24, 4, 745; CHECK: br %r1446  %res = call <2 x double> @llvm.experimental.constrained.floor.v2f64(47                        <2 x double> %val,48                        metadata !"fpexcept.strict") #049  ret <2 x double> %res50}51 52define <2 x double> @f4(<2 x double> %val) #0 {53; CHECK-LABEL: f4:54; CHECK: vfidb %v24, %v24, 4, 655; CHECK: br %r1456  %res = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(57                        <2 x double> %val,58                        metadata !"fpexcept.strict") #059  ret <2 x double> %res60}61 62define <2 x double> @f5(<2 x double> %val) #0 {63; CHECK-LABEL: f5:64; CHECK: vfidb %v24, %v24, 4, 565; CHECK: br %r1466  %res = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(67                        <2 x double> %val,68                        metadata !"fpexcept.strict") #069  ret <2 x double> %res70}71 72define <2 x double> @f6(<2 x double> %val) #0 {73; CHECK-LABEL: f6:74; CHECK: vfidb %v24, %v24, 4, 175; CHECK: br %r1476  %res = call <2 x double> @llvm.experimental.constrained.round.v2f64(77                        <2 x double> %val,78                        metadata !"fpexcept.strict") #079  ret <2 x double> %res80}81 82define <2 x double> @f7(<2 x double> %val) #0 {83; CHECK-LABEL: f7:84; CHECK: vfidb %v24, %v24, 4, 485; CHECK: br %r1486  %res = call <2 x double> @llvm.experimental.constrained.roundeven.v2f64(87                        <2 x double> %val,88                        metadata !"fpexcept.strict") #089  ret <2 x double> %res90}91 92define double @f8(<2 x double> %val) #0 {93; CHECK-LABEL: f8:94; CHECK: wfidb %f0, %v24, 0, 095; CHECK: br %r1496  %scalar = extractelement <2 x double> %val, i32 097  %res = call double @llvm.experimental.constrained.rint.f64(98                        double %scalar,99                        metadata !"round.dynamic",100                        metadata !"fpexcept.strict") #0101  ret double %res102}103 104define double @f9(<2 x double> %val) #0 {105; CHECK-LABEL: f9:106; CHECK: wfidb %f0, %v24, 4, 0107; CHECK: br %r14108  %scalar = extractelement <2 x double> %val, i32 0109  %res = call double @llvm.experimental.constrained.nearbyint.f64(110                        double %scalar,111                        metadata !"round.dynamic",112                        metadata !"fpexcept.strict") #0113  ret double %res114}115 116define double @f10(<2 x double> %val) #0 {117; CHECK-LABEL: f10:118; CHECK: wfidb %f0, %v24, 4, 7119; CHECK: br %r14120  %scalar = extractelement <2 x double> %val, i32 0121  %res = call double @llvm.experimental.constrained.floor.f64(122                        double %scalar,123                        metadata !"fpexcept.strict") #0124  ret double %res125}126 127 128define double @f11(<2 x double> %val) #0 {129; CHECK-LABEL: f11:130; CHECK: wfidb %f0, %v24, 4, 6131; CHECK: br %r14132  %scalar = extractelement <2 x double> %val, i32 0133  %res = call double @llvm.experimental.constrained.ceil.f64(134                        double %scalar,135                        metadata !"fpexcept.strict") #0136  ret double %res137}138 139define double @f12(<2 x double> %val) #0 {140; CHECK-LABEL: f12:141; CHECK: wfidb %f0, %v24, 4, 5142; CHECK: br %r14143  %scalar = extractelement <2 x double> %val, i32 0144  %res = call double @llvm.experimental.constrained.trunc.f64(145                        double %scalar,146                        metadata !"fpexcept.strict") #0147  ret double %res148}149 150define double @f13(<2 x double> %val) #0 {151; CHECK-LABEL: f13:152; CHECK: wfidb %f0, %v24, 4, 1153; CHECK: br %r14154  %scalar = extractelement <2 x double> %val, i32 0155  %res = call double @llvm.experimental.constrained.round.f64(156                        double %scalar,157                        metadata !"fpexcept.strict") #0158  ret double %res159}160 161define double @f14(<2 x double> %val) #0 {162; CHECK-LABEL: f14:163; CHECK: wfidb %f0, %v24, 4, 4164; CHECK: br %r14165  %scalar = extractelement <2 x double> %val, i32 0166  %res = call double @llvm.experimental.constrained.roundeven.f64(167                        double %scalar,168                        metadata !"fpexcept.strict") #0169  ret double %res170}171 172attributes #0 = { strictfp }173