[lldb] Make sure Blocks always have a parent (#117683)
[llvm-project.git] / llvm / test / CodeGen / SystemZ / fp-strict-mul-10.ll
blobf9af9017b029b551d87cdd789caad3976dde4d59
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) #0 {
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") #0
14   %negres = fneg double %res
15   ret double %negres
18 define double @f2(double %f1, double %f2, double %acc) #0 {
19 ; CHECK-LABEL: f2:
20 ; CHECK: wfnmsdb %f0, %f0, %f2, %f4
21 ; CHECK: br %r14
22   %negacc = fneg double %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") #0
27   %negres = fneg double %res
28   ret double %negres
31 define float @f3(float %f1, float %f2, float %acc) #0 {
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") #0
39   %negres = fneg float %res
40   ret float %negres
43 define float @f4(float %f1, float %f2, float %acc) #0 {
44 ; CHECK-LABEL: f4:
45 ; CHECK: wfnmssb %f0, %f0, %f2, %f4
46 ; CHECK: br %r14
47   %negacc = fneg float %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") #0
52   %negres = fneg float %res
53   ret float %negres
56 attributes #0 = { strictfp }