blob: c05437d4923705112452d4d0dcae3506fe3449f7 [file] [log] [blame]
Ulrich Weigand2b3482f2017-07-17 17:41:11 +00001; Test vector negative multiply-and-add on z14.
2;
3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
4
5declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>)
6
7; Test a v2f64 negative multiply-and-add.
8define <2 x double> @f1(<2 x double> %dummy, <2 x double> %val1,
9 <2 x double> %val2, <2 x double> %val3) {
10; CHECK-LABEL: f1:
11; CHECK: vfnmadb %v24, %v26, %v28, %v30
12; CHECK: br %r14
13 %ret = call <2 x double> @llvm.fma.v2f64 (<2 x double> %val1,
14 <2 x double> %val2,
15 <2 x double> %val3)
16 %negret = fsub <2 x double> <double -0.0, double -0.0>, %ret
17 ret <2 x double> %negret
18}
19
20; Test a v2f64 negative multiply-and-subtract.
21define <2 x double> @f2(<2 x double> %dummy, <2 x double> %val1,
22 <2 x double> %val2, <2 x double> %val3) {
23; CHECK-LABEL: f2:
24; CHECK: vfnmsdb %v24, %v26, %v28, %v30
25; CHECK: br %r14
26 %negval3 = fsub <2 x double> <double -0.0, double -0.0>, %val3
27 %ret = call <2 x double> @llvm.fma.v2f64 (<2 x double> %val1,
28 <2 x double> %val2,
29 <2 x double> %negval3)
30 %negret = fsub <2 x double> <double -0.0, double -0.0>, %ret
31 ret <2 x double> %negret
32}