brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 46eddb4 Raw
138 lines · plain
1; Test v4f32 rounding on z14.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s4 5declare float @llvm.rint.f32(float)6declare float @llvm.nearbyint.f32(float)7declare float @llvm.floor.f32(float)8declare float @llvm.ceil.f32(float)9declare float @llvm.trunc.f32(float)10declare float @llvm.round.f32(float)11declare float @llvm.roundeven.f32(float)12declare <4 x float> @llvm.rint.v4f32(<4 x float>)13declare <4 x float> @llvm.nearbyint.v4f32(<4 x float>)14declare <4 x float> @llvm.floor.v4f32(<4 x float>)15declare <4 x float> @llvm.ceil.v4f32(<4 x float>)16declare <4 x float> @llvm.trunc.v4f32(<4 x float>)17declare <4 x float> @llvm.round.v4f32(<4 x float>)18declare <4 x float> @llvm.roundeven.v4f32(<4 x float>)19 20define <4 x float> @f1(<4 x float> %val) {21; CHECK-LABEL: f1:22; CHECK: vfisb %v24, %v24, 0, 023; CHECK: br %r1424  %res = call <4 x float> @llvm.rint.v4f32(<4 x float> %val)25  ret <4 x float> %res26}27 28define <4 x float> @f2(<4 x float> %val) {29; CHECK-LABEL: f2:30; CHECK: vfisb %v24, %v24, 4, 031; CHECK: br %r1432  %res = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %val)33  ret <4 x float> %res34}35 36define <4 x float> @f3(<4 x float> %val) {37; CHECK-LABEL: f3:38; CHECK: vfisb %v24, %v24, 4, 739; CHECK: br %r1440  %res = call <4 x float> @llvm.floor.v4f32(<4 x float> %val)41  ret <4 x float> %res42}43 44define <4 x float> @f4(<4 x float> %val) {45; CHECK-LABEL: f4:46; CHECK: vfisb %v24, %v24, 4, 647; CHECK: br %r1448  %res = call <4 x float> @llvm.ceil.v4f32(<4 x float> %val)49  ret <4 x float> %res50}51 52define <4 x float> @f5(<4 x float> %val) {53; CHECK-LABEL: f5:54; CHECK: vfisb %v24, %v24, 4, 555; CHECK: br %r1456  %res = call <4 x float> @llvm.trunc.v4f32(<4 x float> %val)57  ret <4 x float> %res58}59 60define <4 x float> @f6(<4 x float> %val) {61; CHECK-LABEL: f6:62; CHECK: vfisb %v24, %v24, 4, 163; CHECK: br %r1464  %res = call <4 x float> @llvm.round.v4f32(<4 x float> %val)65  ret <4 x float> %res66}67 68define <4 x float> @f7(<4 x float> %val) {69; CHECK-LABEL: f7:70; CHECK: vfisb %v24, %v24, 4, 471; CHECK: br %r1472  %res = call <4 x float> @llvm.roundeven.v4f32(<4 x float> %val)73  ret <4 x float> %res74}75 76define float @f8(<4 x float> %val) {77; CHECK-LABEL: f8:78; CHECK: wfisb %f0, %v24, 0, 079; CHECK: br %r1480  %scalar = extractelement <4 x float> %val, i32 081  %res = call float @llvm.rint.f32(float %scalar)82  ret float %res83}84 85define float @f9(<4 x float> %val) {86; CHECK-LABEL: f9:87; CHECK: wfisb %f0, %v24, 4, 088; CHECK: br %r1489  %scalar = extractelement <4 x float> %val, i32 090  %res = call float @llvm.nearbyint.f32(float %scalar)91  ret float %res92}93 94define float @f10(<4 x float> %val) {95; CHECK-LABEL: f10:96; CHECK: wfisb %f0, %v24, 4, 797; CHECK: br %r1498  %scalar = extractelement <4 x float> %val, i32 099  %res = call float @llvm.floor.f32(float %scalar)100  ret float %res101}102 103define float @f11(<4 x float> %val) {104; CHECK-LABEL: f11:105; CHECK: wfisb %f0, %v24, 4, 6106; CHECK: br %r14107  %scalar = extractelement <4 x float> %val, i32 0108  %res = call float @llvm.ceil.f32(float %scalar)109  ret float %res110}111 112define float @f12(<4 x float> %val) {113; CHECK-LABEL: f12:114; CHECK: wfisb %f0, %v24, 4, 5115; CHECK: br %r14116  %scalar = extractelement <4 x float> %val, i32 0117  %res = call float @llvm.trunc.f32(float %scalar)118  ret float %res119}120 121define float @f13(<4 x float> %val) {122; CHECK-LABEL: f13:123; CHECK: wfisb %f0, %v24, 4, 1124; CHECK: br %r14125  %scalar = extractelement <4 x float> %val, i32 0126  %res = call float @llvm.round.f32(float %scalar)127  ret float %res128}129 130define float @f14(<4 x float> %val) {131; CHECK-LABEL: f14:132; CHECK: wfisb %f0, %v24, 4, 4133; CHECK: br %r14134  %scalar = extractelement <4 x float> %val, i32 0135  %res = call float @llvm.roundeven.f32(float %scalar)136  ret float %res137}138