brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · a4f6775 Raw
64 lines · plain
1; Test vector multiply-and-add.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s4 5declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>)6 7; Test a v16i8 multiply-and-add.8define <16 x i8> @f1(<16 x i8> %dummy, <16 x i8> %val1, <16 x i8> %val2,9                     <16 x i8> %val3) {10; CHECK-LABEL: f1:11; CHECK: vmalb %v24, %v26, %v28, %v3012; CHECK: br %r1413  %mul = mul <16 x i8> %val1, %val214  %ret = add <16 x i8> %mul, %val315  ret <16 x i8> %ret16}17 18; Test a v8i16 multiply-and-add.19define <8 x i16> @f2(<8 x i16> %dummy, <8 x i16> %val1, <8 x i16> %val2,20                     <8 x i16> %val3) {21; CHECK-LABEL: f2:22; CHECK: vmalhw %v24, %v26, %v28, %v3023; CHECK: br %r1424  %mul = mul <8 x i16> %val1, %val225  %ret = add <8 x i16> %mul, %val326  ret <8 x i16> %ret27}28 29; Test a v4i32 multiply-and-add.30define <4 x i32> @f3(<4 x i32> %dummy, <4 x i32> %val1, <4 x i32> %val2,31                     <4 x i32> %val3) {32; CHECK-LABEL: f3:33; CHECK: vmalf %v24, %v26, %v28, %v3034; CHECK: br %r1435  %mul = mul <4 x i32> %val1, %val236  %ret = add <4 x i32> %mul, %val337  ret <4 x i32> %ret38}39 40; Test a v2f64 multiply-and-add.41define <2 x double> @f4(<2 x double> %dummy, <2 x double> %val1,42                        <2 x double> %val2, <2 x double> %val3) {43; CHECK-LABEL: f4:44; CHECK: vfmadb %v24, %v26, %v28, %v3045; CHECK: br %r1446  %ret = call <2 x double> @llvm.fma.v2f64 (<2 x double> %val1,47                                            <2 x double> %val2,48                                            <2 x double> %val3)49  ret <2 x double> %ret50}51 52; Test a v2f64 multiply-and-subtract.53define <2 x double> @f5(<2 x double> %dummy, <2 x double> %val1,54                        <2 x double> %val2, <2 x double> %val3) {55; CHECK-LABEL: f5:56; CHECK: vfmsdb %v24, %v26, %v28, %v3057; CHECK: br %r1458  %negval3 = fneg <2 x double> %val359  %ret = call <2 x double> @llvm.fma.v2f64 (<2 x double> %val1,60                                            <2 x double> %val2,61                                            <2 x double> %negval3)62  ret <2 x double> %ret63}64