Home | History | Annotate | Download | only in SystemZ
      1 ; Test vector multiply-and-add on z14.
      2 ;
      3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
      4 
      5 declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
      6 
      7 ; Test a v4f32 multiply-and-add.
      8 define <4 x float> @f1(<4 x float> %dummy, <4 x float> %val1,
      9                        <4 x float> %val2, <4 x float> %val3) {
     10 ; CHECK-LABEL: f1:
     11 ; CHECK: vfmasb %v24, %v26, %v28, %v30
     12 ; CHECK: br %r14
     13   %ret = call <4 x float> @llvm.fma.v4f32 (<4 x float> %val1,
     14                                            <4 x float> %val2,
     15                                            <4 x float> %val3)
     16   ret <4 x float> %ret
     17 }
     18 
     19 ; Test a v4f32 multiply-and-subtract.
     20 define <4 x float> @f2(<4 x float> %dummy, <4 x float> %val1,
     21                        <4 x float> %val2, <4 x float> %val3) {
     22 ; CHECK-LABEL: f2:
     23 ; CHECK: vfmssb %v24, %v26, %v28, %v30
     24 ; CHECK: br %r14
     25   %negval3 = fsub <4 x float> <float -0.0, float -0.0,
     26                                float -0.0, float -0.0>, %val3
     27   %ret = call <4 x float> @llvm.fma.v4f32 (<4 x float> %val1,
     28                                            <4 x float> %val2,
     29                                            <4 x float> %negval3)
     30   ret <4 x float> %ret
     31 }
     32