[lldb] Make sure Blocks always have a parent (#117683)
[llvm-project.git] / llvm / test / CodeGen / SystemZ / vec-max-min-zerosplat.ll
blobe8d4b2828c84bcb69639b36b88e6119e169768ea
1 ; Test vector maximum/minimum with a zero splat on z14.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
5 define <2 x double> @f1(<2 x double> %val) {
6 ; CHECK-LABEL: f1:
7 ; CHECK: vgbm %v0, 0
8 ; CHECK-NEXT: vfmaxdb %v24, %v24, %v0, 4
9 ; CHECK-NEXT: br %r14
10   %cmp = fcmp ogt <2 x double> %val,  zeroinitializer
11   %ret = select <2 x i1> %cmp, <2 x double> %val, <2 x double> zeroinitializer
12   ret <2 x double> %ret
15 define <2 x double> @f2(<2 x double> %val) {
16 ; CHECK-LABEL: f2:
17 ; CHECK: vgbm %v0, 0
18 ; CHECK-NEXT: vfmindb %v24, %v24, %v0, 4
19 ; CHECK-NEXT: br %r14
20   %cmp = fcmp olt <2 x double> %val,  zeroinitializer
21   %ret = select <2 x i1> %cmp, <2 x double> %val, <2 x double> zeroinitializer
22   ret <2 x double> %ret
25 define <4 x float> @f3(<4 x float> %val) {
26 ; CHECK-LABEL: f3:
27 ; CHECK: vgbm %v0, 0
28 ; CHECK-NEXT: vfmaxsb %v24, %v24, %v0, 4
29 ; CHECK-NEXT: br %r14
30   %cmp = fcmp ogt <4 x float> %val,  zeroinitializer
31   %ret = select <4 x i1> %cmp, <4 x float> %val, <4 x float> zeroinitializer
32   ret <4 x float> %ret
35 define <4 x float> @f4(<4 x float> %val) {
36 ; CHECK-LABEL: f4:
37 ; CHECK: vgbm %v0, 0
38 ; CHECK-NEXT: vfminsb %v24, %v24, %v0, 4
39 ; CHECK-NEXT: br %r14
40   %cmp = fcmp olt <4 x float> %val,  zeroinitializer
41   %ret = select <4 x i1> %cmp, <4 x float> %val, <4 x float> zeroinitializer
42   ret <4 x float> %ret
45 define <2 x double> @f5(<2 x double> %val) {
46 ; CHECK-LABEL: f5:
47 ; CHECK: vgbm %v0, 0
48 ; CHECK-NEXT: vfchedb   %v1, %v0, %v24
49 ; CHECK-NEXT: vsel      %v24, %v0, %v24, %v1
50 ; CHECK-NEXT: br %r14
51   %cmp = fcmp ugt <2 x double> %val,  zeroinitializer
52   %ret = select <2 x i1> %cmp, <2 x double> %val, <2 x double> zeroinitializer
53   ret <2 x double> %ret
56 define <2 x double> @f6(<2 x double> %val) {
57 ; CHECK-LABEL: f6:
58 ; CHECK: vgbm %v0, 0
59 ; CHECK-NEXT: vfchedb   %v1, %v24, %v0
60 ; CHECK-NEXT: vsel      %v24, %v0, %v24, %v1
61 ; CHECK-NEXT: br %r14
62   %cmp = fcmp ult <2 x double> %val,  zeroinitializer
63   %ret = select <2 x i1> %cmp, <2 x double> %val, <2 x double> zeroinitializer
64   ret <2 x double> %ret
67 define <4 x float> @f7(<4 x float> %val) {
68 ; CHECK-LABEL: f7:
69 ; CHECK: vgbm %v0, 0
70 ; CHECK-NEXT: vfchesb   %v1, %v0, %v24
71 ; CHECK-NEXT: vsel      %v24, %v0, %v24, %v1
72 ; CHECK-NEXT: br %r14
73   %cmp = fcmp ugt <4 x float> %val,  zeroinitializer
74   %ret = select <4 x i1> %cmp, <4 x float> %val, <4 x float> zeroinitializer
75   ret <4 x float> %ret
78 define <4 x float> @f8(<4 x float> %val) {
79 ; CHECK-LABEL: f8:
80 ; CHECK: vgbm %v0, 0
81 ; CHECK-NEXT: vfchesb   %v1, %v24, %v0
82 ; CHECK-NEXT: vsel      %v24, %v0, %v24, %v1
83 ; CHECK-NEXT: br %r14
84   %cmp = fcmp ult <4 x float> %val,  zeroinitializer
85   %ret = select <4 x i1> %cmp, <4 x float> %val, <4 x float> zeroinitializer
86   ret <4 x float> %ret