[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / SystemZ / fp-strict-mul-10.ll
blobdc0a4bbccbd5e9a4b66078f9d903fd1a967dbbbf
1 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
3 declare double @llvm.experimental.constrained.fma.f64(double %f1, double %f2, double %f3, metadata, metadata)
4 declare float @llvm.experimental.constrained.fma.f32(float %f1, float %f2, float %f3, metadata, metadata)
6 define double @f1(double %f1, double %f2, double %acc) {
7 ; CHECK-LABEL: f1:
8 ; CHECK: wfnmadb %f0, %f0, %f2, %f4
9 ; CHECK: br %r14
10   %res = call double @llvm.experimental.constrained.fma.f64 (
11                         double %f1, double %f2, double %acc,
12                         metadata !"round.dynamic",
13                         metadata !"fpexcept.strict")
14   %negres = fsub double -0.0, %res
15   ret double %negres
18 define double @f2(double %f1, double %f2, double %acc) {
19 ; CHECK-LABEL: f2:
20 ; CHECK: wfnmsdb %f0, %f0, %f2, %f4
21 ; CHECK: br %r14
22   %negacc = fsub double -0.0, %acc
23   %res = call double @llvm.experimental.constrained.fma.f64 (
24                         double %f1, double %f2, double %negacc,
25                         metadata !"round.dynamic",
26                         metadata !"fpexcept.strict")
27   %negres = fsub double -0.0, %res
28   ret double %negres
31 define float @f3(float %f1, float %f2, float %acc) {
32 ; CHECK-LABEL: f3:
33 ; CHECK: wfnmasb %f0, %f0, %f2, %f4
34 ; CHECK: br %r14
35   %res = call float @llvm.experimental.constrained.fma.f32 (
36                         float %f1, float %f2, float %acc,
37                         metadata !"round.dynamic",
38                         metadata !"fpexcept.strict")
39   %negres = fsub float -0.0, %res
40   ret float %negres
43 define float @f4(float %f1, float %f2, float %acc) {
44 ; CHECK-LABEL: f4:
45 ; CHECK: wfnmssb %f0, %f0, %f2, %f4
46 ; CHECK: br %r14
47   %negacc = fsub float -0.0, %acc
48   %res = call float @llvm.experimental.constrained.fma.f32 (
49                         float %f1, float %f2, float %negacc,
50                         metadata !"round.dynamic",
51                         metadata !"fpexcept.strict")
52   %negres = fsub float -0.0, %res
53   ret float %negres