brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 0fb5dfc Raw
87 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s2 3declare fp128 @llvm.experimental.constrained.fma.f128(fp128 %f1, fp128 %f2, fp128 %f3, metadata, metadata)4 5define void @f1(ptr %ptr1, ptr %ptr2, ptr %ptr3, ptr %dst) #0 {6; CHECK-LABEL: f1:7; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)8; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)9; CHECK-DAG: vl [[REG3:%v[0-9]+]], 0(%r4)10; CHECK: wfmaxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], [[REG3]]11; CHECK: vst [[RES]], 0(%r5)12; CHECK: br %r1413  %f1 = load fp128, ptr %ptr114  %f2 = load fp128, ptr %ptr215  %f3 = load fp128, ptr %ptr316  %res = call fp128 @llvm.experimental.constrained.fma.f128 (17                        fp128 %f1, fp128 %f2, fp128 %f3,18                        metadata !"round.dynamic",19                        metadata !"fpexcept.strict") #020  store fp128 %res, ptr %dst21  ret void22}23 24define void @f2(ptr %ptr1, ptr %ptr2, ptr %ptr3, ptr %dst) #0 {25; CHECK-LABEL: f2:26; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)27; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)28; CHECK-DAG: vl [[REG3:%v[0-9]+]], 0(%r4)29; CHECK: wfmsxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], [[REG3]]30; CHECK: vst [[RES]], 0(%r5)31; CHECK: br %r1432  %f1 = load fp128, ptr %ptr133  %f2 = load fp128, ptr %ptr234  %f3 = load fp128, ptr %ptr335  %neg = fsub fp128 0xL00000000000000008000000000000000, %f336  %res = call fp128 @llvm.experimental.constrained.fma.f128 (37                        fp128 %f1, fp128 %f2, fp128 %neg,38                        metadata !"round.dynamic",39                        metadata !"fpexcept.strict") #040  store fp128 %res, ptr %dst41  ret void42}43 44define void @f3(ptr %ptr1, ptr %ptr2, ptr %ptr3, ptr %dst) #0 {45; CHECK-LABEL: f3:46; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)47; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)48; CHECK-DAG: vl [[REG3:%v[0-9]+]], 0(%r4)49; CHECK: wfnmaxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], [[REG3]]50; CHECK: vst [[RES]], 0(%r5)51; CHECK: br %r1452  %f1 = load fp128, ptr %ptr153  %f2 = load fp128, ptr %ptr254  %f3 = load fp128, ptr %ptr355  %res = call fp128 @llvm.experimental.constrained.fma.f128 (56                        fp128 %f1, fp128 %f2, fp128 %f3,57                        metadata !"round.dynamic",58                        metadata !"fpexcept.strict") #059  %negres = fsub fp128 0xL00000000000000008000000000000000, %res60  store fp128 %negres, ptr %dst61  ret void62}63 64define void @f4(ptr %ptr1, ptr %ptr2, ptr %ptr3, ptr %dst) #0 {65; CHECK-LABEL: f4:66; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)67; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)68; CHECK-DAG: vl [[REG3:%v[0-9]+]], 0(%r4)69; CHECK: wfnmsxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], [[REG3]]70; CHECK: vst [[RES]], 0(%r5)71; CHECK: br %r1472  %f1 = load fp128, ptr %ptr173  %f2 = load fp128, ptr %ptr274  %f3 = load fp128, ptr %ptr375  %neg = fsub fp128 0xL00000000000000008000000000000000, %f376  %res = call fp128 @llvm.experimental.constrained.fma.f128 (77                        fp128 %f1, fp128 %f2, fp128 %neg,78                        metadata !"round.dynamic",79                        metadata !"fpexcept.strict") #080  %negres = fsub fp128 0xL00000000000000008000000000000000, %res81  store fp128 %negres, ptr %dst82  ret void83}84 85attributes #0 = { strictfp }86 87