annotate test/CodeGen/SystemZ/vec-cmp-cmp-logic-select.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1 ; Test that a vector select with a logic combination of two compares do not
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2 ; produce any unnecessary pack, unpack or shift instructions.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
3 ; And, Or and Xor are tested.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
4 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
5 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s -check-prefix=CHECK-Z14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8 define <2 x i8> @fun0(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9 ; CHECK-LABEL: fun0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11 ; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12 ; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13 ; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16 %cmp0 = icmp eq <2 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18 %and = and <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 ret <2 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23 define <2 x i16> @fun1(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24 ; CHECK-LABEL: fun1:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26 ; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27 ; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28 ; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 ; CHECK-NEXT: vuphb %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32 %cmp0 = icmp eq <2 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 %and = and <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36 ret <2 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39 define <16 x i8> @fun2(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i8> %val5, <16 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 ; CHECK-LABEL: fun2:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 ; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v30, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43 ; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44 ; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45 ; CHECK-DAG: vpkh [[REG3:%v[0-9]+]], [[REG1]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 ; CHECK-NEXT: vo %v0, [[REG2]], [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 ; CHECK-NEXT: vsel %v24, %v29, %v31, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 %cmp0 = icmp eq <16 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50 %cmp1 = icmp eq <16 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51 %and = or <16 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53 ret <16 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 define <16 x i16> @fun3(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16 x i16> %val4, <16 x i16> %val5, <16 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 ; CHECK-LABEL: fun3:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59 ; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 ; CHECK-DAG: vuphb [[REG2:%v[0-9]+]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61 ; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], [[REG0]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62 ; CHECK-DAG: vuphb [[REG1]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63 ; CHECK-DAG: vceqh [[REG3:%v[0-9]+]], %v28, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64 ; CHECK-DAG: vceqh [[REG4:%v[0-9]+]], %v30, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 ; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 ; CHECK-DAG: vl [[REG6:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 ; CHECK-DAG: vo [[REG7:%v[0-9]+]], %v2, [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 ; CHECK-DAG: vo [[REG8:%v[0-9]+]], [[REG2]], [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69 ; CHECK-DAG: vsel %v24, %v29, [[REG6]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70 ; CHECK-DAG: vsel %v26, %v31, [[REG5]], [[REG7]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72 %cmp0 = icmp eq <16 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 %cmp1 = icmp eq <16 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
74 %and = or <16 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
75 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
76 ret <16 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
77 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
78
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
79 define <32 x i8> @fun4(<32 x i8> %val1, <32 x i8> %val2, <32 x i8> %val3, <32 x i8> %val4, <32 x i8> %val5, <32 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
80 ; CHECK-LABEL: fun4:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
81 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
82 ; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
83 ; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
84 ; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v25, %v29
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
85 ; CHECK-DAG: vceqb [[REG3:%v[0-9]+]], %v27, %v31
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
86 ; CHECK-DAG: vl [[REG4:%v[0-9]+]], 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
87 ; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
88 ; CHECK-DAG: vl [[REG6:%v[0-9]+]], 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
89 ; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
90 ; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG1]], [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
91 ; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG0]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
92 ; CHECK-DAG: vsel %v24, [[REG7]], [[REG6]], [[REG9]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
93 ; CHECK-DAG: vsel %v26, [[REG5]], [[REG4]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
94 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
95 %cmp0 = icmp eq <32 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
96 %cmp1 = icmp eq <32 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
97 %and = xor <32 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
98 %sel = select <32 x i1> %and, <32 x i8> %val5, <32 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
99 ret <32 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
100 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
101
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
102 define <2 x i8> @fun5(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i8> %val5, <2 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
103 ; CHECK-LABEL: fun5:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
104 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
105 ; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
106 ; CHECK-DAG: vpkh [[REG1:%v[0-9]+]], [[REG0]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
107 ; CHECK-DAG: vceqb [[REG2:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
108 ; CHECK-DAG: vo %v0, [[REG1]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
109 ; CHECK-DAG: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
110 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
111 %cmp0 = icmp eq <2 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
112 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
113 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
114 %sel = select <2 x i1> %and, <2 x i8> %val5, <2 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
115 ret <2 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
116 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
117
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
118 define <2 x i16> @fun6(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i16> %val5, <2 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
119 ; CHECK-LABEL: fun6:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
120 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
121 ; CHECK-NEXT: vceqb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
122 ; CHECK-NEXT: vceqh %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
123 ; CHECK-NEXT: vuphb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
124 ; CHECK-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
125 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
126 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
127 %cmp0 = icmp eq <2 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
128 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
129 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
130 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
131 ret <2 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
132 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
133
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
134 define <2 x i32> @fun7(<2 x i16> %val1, <2 x i16> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x i32> %val5, <2 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
135 ; CHECK-LABEL: fun7:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
136 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
137 ; CHECK-NEXT: vceqb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
138 ; CHECK-NEXT: vceqh %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
139 ; CHECK-NEXT: vuphb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
140 ; CHECK-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
141 ; CHECK-NEXT: vuphh %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
142 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
143 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
144 %cmp0 = icmp eq <2 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
145 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
146 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
147 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
148 ret <2 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
149 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
150
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
151 define <8 x i8> @fun8(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i8> %val5, <8 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
152 ; CHECK-LABEL: fun8:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
153 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
154 ; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
155 ; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
156 ; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
157 ; CHECK-NEXT: vpkh %v0, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
158 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
159 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
160 %cmp0 = icmp eq <8 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
161 %cmp1 = icmp eq <8 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
162 %and = xor <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
163 %sel = select <8 x i1> %and, <8 x i8> %val5, <8 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
164 ret <8 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
165 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
166
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
167 define <8 x i16> @fun9(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i16> %val5, <8 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
168 ; CHECK-LABEL: fun9:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
169 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
170 ; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
171 ; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
172 ; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
173 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
174 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
175 %cmp0 = icmp eq <8 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
176 %cmp1 = icmp eq <8 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
177 %and = xor <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
178 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
179 ret <8 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
180 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
181
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
182 define <8 x i32> @fun10(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x i16> %val4, <8 x i32> %val5, <8 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
183 ; CHECK-LABEL: fun10:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
184 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
185 ; CHECK-DAG: vceqh [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
186 ; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
187 ; CHECK-NEXT: vx [[REG2:%v[0-9]+]], [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
188 ; CHECK-DAG: vuphh [[REG3:%v[0-9]+]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
189 ; CHECK-DAG: vmrlg [[REG4:%v[0-9]+]], [[REG2]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
190 ; CHECK-DAG: vuphh [[REG5:%v[0-9]+]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
191 ; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
192 ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG5]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
193 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
194 %cmp0 = icmp eq <8 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
195 %cmp1 = icmp eq <8 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
196 %and = xor <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
197 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
198 ret <8 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
199 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
200
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
201 define <16 x i8> @fun11(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i8> %val5, <16 x i8> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
202 ; CHECK-LABEL: fun11:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
203 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
204 ; CHECK-DAG: vl [[REG0:%v[0-9]+]], 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
205 ; CHECK-DAG: vl [[REG1:%v[0-9]+]], 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
206 ; CHECK-DAG: vl [[REG2:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
207 ; CHECK-DAG: vl [[REG3:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
208 ; CHECK-DAG: vceqf [[REG4:%v[0-9]+]], %v27, [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
209 ; CHECK-DAG: vceqf [[REG5:%v[0-9]+]], %v25, [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
210 ; CHECK-DAG: vceqf [[REG6:%v[0-9]+]], %v31, [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
211 ; CHECK-DAG: vceqf [[REG7:%v[0-9]+]], %v29, [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
212 ; CHECK-DAG: vceqh [[REG8:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
213 ; CHECK-DAG: vceqh [[REG9:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
214 ; CHECK-DAG: vpkf [[REG10:%v[0-9]+]], [[REG5]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
215 ; CHECK-DAG: vpkf [[REG11:%v[0-9]+]], [[REG7]], [[REG6]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
216 ; CHECK-DAG: vn [[REG12:%v[0-9]+]], [[REG9]], [[REG11]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
217 ; CHECK-DAG: vn [[REG13:%v[0-9]+]], [[REG8]], [[REG10]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
218 ; CHECK-DAG: vl [[REG14:%v[0-9]+]], 240(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
219 ; CHECK-DAG: vl [[REG15:%v[0-9]+]], 224(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
220 ; CHECK-DAG: vpkh [[REG16:%v[0-9]+]], [[REG13]], [[REG12]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
221 ; CHECK-NEXT: vsel %v24, [[REG15]], [[REG14]], [[REG16]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
222 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
223 %cmp0 = icmp eq <16 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
224 %cmp1 = icmp eq <16 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
225 %and = and <16 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
226 %sel = select <16 x i1> %and, <16 x i8> %val5, <16 x i8> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
227 ret <16 x i8> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
228 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
229
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
230 define <16 x i16> @fun12(<16 x i16> %val1, <16 x i16> %val2, <16 x i32> %val3, <16 x i32> %val4, <16 x i16> %val5, <16 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
231 ; CHECK-LABEL: fun12:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
232 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
233 ; CHECK-DAG: vl [[REG0:%v[0-9]+]], 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
234 ; CHECK-DAG: vl [[REG1:%v[0-9]+]], 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
235 ; CHECK-DAG: vl [[REG2:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
236 ; CHECK-DAG: vl [[REG3:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
237 ; CHECK-DAG: vceqf [[REG4:%v[0-9]+]], %v27, [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
238 ; CHECK-DAG: vceqf [[REG5:%v[0-9]+]], %v25, [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
239 ; CHECK-DAG: vceqf [[REG6:%v[0-9]+]], %v31, [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
240 ; CHECK-DAG: vceqf [[REG7:%v[0-9]+]], %v29, [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
241 ; CHECK-DAG: vceqh [[REG8:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
242 ; CHECK-DAG: vceqh [[REG9:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
243 ; CHECK-DAG: vpkf [[REG10:%v[0-9]+]], [[REG5]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
244 ; CHECK-DAG: vpkf [[REG11:%v[0-9]+]], [[REG7]], [[REG6]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
245 ; CHECK-DAG: vl [[REG12:%v[0-9]+]], 272(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
246 ; CHECK-DAG: vl [[REG13:%v[0-9]+]], 240(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
247 ; CHECK-DAG: vl [[REG14:%v[0-9]+]], 256(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
248 ; CHECK-DAG: vl [[REG15:%v[0-9]+]], 224(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
249 ; CHECK-DAG: vn [[REG16:%v[0-9]+]], [[REG9]], [[REG11]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
250 ; CHECK-DAG: vn [[REG17:%v[0-9]+]], [[REG8]], [[REG10]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
251 ; CHECK-DAG: vsel %v24, [[REG15]], [[REG14]], [[REG17]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
252 ; CHECK-DAG: vsel %v26, [[REG13]], [[REG12]], [[REG16]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
253 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
254 %cmp0 = icmp eq <16 x i16> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
255 %cmp1 = icmp eq <16 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
256 %and = and <16 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
257 %sel = select <16 x i1> %and, <16 x i16> %val5, <16 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
258 ret <16 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
259 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
260
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
261 define <2 x i16> @fun13(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i16> %val5, <2 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
262 ; CHECK-LABEL: fun13:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
263 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
264 ; CHECK-NEXT: vceqg %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
265 ; CHECK-NEXT: vceqf %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
266 ; CHECK-NEXT: vpkg %v1, %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
267 ; CHECK-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
268 ; CHECK-NEXT: vpkf %v0, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
269 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
270 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
271 %cmp0 = icmp eq <2 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
272 %cmp1 = icmp eq <2 x i64> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
273 %and = xor <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
274 %sel = select <2 x i1> %and, <2 x i16> %val5, <2 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
275 ret <2 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
276 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
277
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
278 define <2 x i32> @fun14(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
279 ; CHECK-LABEL: fun14:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
280 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
281 ; CHECK-NEXT: vceqg %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
282 ; CHECK-NEXT: vceqf %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
283 ; CHECK-NEXT: vpkg %v1, %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
284 ; CHECK-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
285 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
286 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
287 %cmp0 = icmp eq <2 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
288 %cmp1 = icmp eq <2 x i64> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
289 %and = xor <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
290 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
291 ret <2 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
292 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
293
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
294 define <2 x i64> @fun15(<2 x i32> %val1, <2 x i32> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
295 ; CHECK-LABEL: fun15:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
296 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
297 ; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
298 ; CHECK-DAG: vuphf [[REG1:%v[0-9]+]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
299 ; CHECK-DAG: vceqg [[REG2:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
300 ; CHECK-NEXT: vx %v0, [[REG1]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
301 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
302 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
303 %cmp0 = icmp eq <2 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
304 %cmp1 = icmp eq <2 x i64> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
305 %and = xor <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
306 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
307 ret <2 x i64> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
308 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
309
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
310 define <4 x i16> @fun16(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i16> %val5, <4 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
311 ; CHECK-LABEL: fun16:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
312 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
313 ; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
314 ; CHECK-DAG: vpkf [[REG1:%v[0-9]+]], [[REG0]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
315 ; CHECK-DAG: vceqh [[REG2:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
316 ; CHECK-NEXT: vn %v0, [[REG1]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
317 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
318 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
319 %cmp0 = icmp eq <4 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
320 %cmp1 = icmp eq <4 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
321 %and = and <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
322 %sel = select <4 x i1> %and, <4 x i16> %val5, <4 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
323 ret <4 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
324 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
325
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
326 define <4 x i32> @fun17(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i32> %val5, <4 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
327 ; CHECK-LABEL: fun17:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
328 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
329 ; CHECK-NEXT: vceqh %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
330 ; CHECK-NEXT: vceqf %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
331 ; CHECK-NEXT: vuphh %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
332 ; CHECK-NEXT: vn %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
333 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
334 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
335 %cmp0 = icmp eq <4 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
336 %cmp1 = icmp eq <4 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
337 %and = and <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
338 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
339 ret <4 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
340 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
341
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
342 define <4 x i64> @fun18(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x i16> %val4, <4 x i64> %val5, <4 x i64> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
343 ; CHECK-LABEL: fun18:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
344 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
345 ; CHECK-NEXT: vceqh %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
346 ; CHECK-NEXT: vceqf %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
347 ; CHECK-NEXT: vuphh %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
348 ; CHECK-NEXT: vn %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
349 ; CHECK-DAG: vuphf [[REG0:%v[0-9]+]], %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
350 ; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
351 ; CHECK-DAG: vuphf [[REG2:%v[0-9]+]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
352 ; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
353 ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
354 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
355 %cmp0 = icmp eq <4 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
356 %cmp1 = icmp eq <4 x i16> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
357 %and = and <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
358 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
359 ret <4 x i64> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
360 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
361
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
362 define <8 x i16> @fun19(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i16> %val5, <8 x i16> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
363 ; CHECK-LABEL: fun19:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
364 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
365 ; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
366 ; CHECK-DAG: vceqf [[REG1:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
367 ; CHECK-DAG: vceqf [[REG2:%v[0-9]+]], %v25, %v29
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
368 ; CHECK-DAG: vceqf [[REG3:%v[0-9]+]], %v27, %v31
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
369 ; CHECK-DAG: vo [[REG4:%v[0-9]+]], [[REG1]], [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
370 ; CHECK-DAG: vo [[REG5:%v[0-9]+]], [[REG0]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
371 ; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
372 ; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
373 ; CHECK-DAG: vpkf [[REG8:%v[0-9]+]], [[REG5]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
374 ; CHECK-NEXT: vsel %v24, [[REG7]], [[REG6]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
375 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
376 %cmp0 = icmp eq <8 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
377 %cmp1 = icmp eq <8 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
378 %and = or <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
379 %sel = select <8 x i1> %and, <8 x i16> %val5, <8 x i16> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
380 ret <8 x i16> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
381 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
382
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
383 define <8 x i32> @fun20(<8 x i32> %val1, <8 x i32> %val2, <8 x i32> %val3, <8 x i32> %val4, <8 x i32> %val5, <8 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
384 ; CHECK-LABEL: fun20:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
385 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
386 ; CHECK-DAG: vceqf [[REG0:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
387 ; CHECK-DAG: vceqf [[REG1:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
388 ; CHECK-DAG: vceqf [[REG2:%v[0-9]+]], %v25, %v29
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
389 ; CHECK-DAG: vceqf [[REG3:%v[0-9]+]], %v27, %v31
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
390 ; CHECK-DAG: vl [[REG4:%v[0-9]+]], 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
391 ; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
392 ; CHECK-DAG: vl [[REG6:%v[0-9]+]], 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
393 ; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
394 ; CHECK-DAG: vo [[REG8:%v[0-9]+]], [[REG1]], [[REG3]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
395 ; CHECK-DAG: vo [[REG9:%v[0-9]+]], [[REG0]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
396 ; CHECK-DAG: vsel %v24, [[REG7]], [[REG6]], [[REG9]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
397 ; CHECK-DAG: vsel %v26, [[REG5]], [[REG4]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
398 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
399 %cmp0 = icmp eq <8 x i32> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
400 %cmp1 = icmp eq <8 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
401 %and = or <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
402 %sel = select <8 x i1> %and, <8 x i32> %val5, <8 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
403 ret <8 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
404 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
405
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
406 define <2 x i32> @fun21(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i32> %val5, <2 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
407 ; CHECK-LABEL: fun21:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
408 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
409 ; CHECK-DAG: vceqg [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
410 ; CHECK-DAG: vceqg [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
411 ; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
412 ; CHECK-NEXT: vpkg %v0, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
413 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
414 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
415 %cmp0 = icmp eq <2 x i64> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
416 %cmp1 = icmp eq <2 x i64> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
417 %and = and <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
418 %sel = select <2 x i1> %and, <2 x i32> %val5, <2 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
419 ret <2 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
420 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
421
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
422 define <2 x i64> @fun22(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3, <2 x i64> %val4, <2 x i64> %val5, <2 x i64> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
423 ; CHECK-LABEL: fun22:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
424 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
425 ; CHECK-DAG: vceqg [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
426 ; CHECK-DAG: vceqg [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
427 ; CHECK-NEXT: vn %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
428 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
429 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
430 %cmp0 = icmp eq <2 x i64> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
431 %cmp1 = icmp eq <2 x i64> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
432 %and = and <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
433 %sel = select <2 x i1> %and, <2 x i64> %val5, <2 x i64> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
434 ret <2 x i64> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
435 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
436
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
437 define <4 x i32> @fun23(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i32> %val5, <4 x i32> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
438 ; CHECK-LABEL: fun23:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
439 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
440 ; CHECK-NEXT: vceqg %v0, %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
441 ; CHECK-NEXT: vceqg %v1, %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
442 ; CHECK-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
443 ; CHECK-NEXT: vceqf %v1, %v25, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
444 ; CHECK-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
445 ; CHECK-NEXT: vsel %v24, %v29, %v31, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
446 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
447 %cmp0 = icmp eq <4 x i64> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
448 %cmp1 = icmp eq <4 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
449 %and = xor <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
450 %sel = select <4 x i1> %and, <4 x i32> %val5, <4 x i32> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
451 ret <4 x i32> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
452 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
453
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
454 define <4 x i64> @fun24(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x i32> %val4, <4 x i64> %val5, <4 x i64> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
455 ; CHECK-LABEL: fun24:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
456 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
457 ; CHECK-NEXT: vceqf [[REG0:%v[0-9]+]], %v25, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
458 ; CHECK-NEXT: vuphf [[REG1:%v[0-9]+]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
459 ; CHECK-NEXT: vmrlg [[REG2:%v[0-9]+]], [[REG0]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
460 ; CHECK-NEXT: vceqg [[REG3:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
461 ; CHECK-NEXT: vceqg [[REG4:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
462 ; CHECK-NEXT: vuphf [[REG5:%v[0-9]+]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
463 ; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
464 ; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
465 ; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG4]], [[REG5]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
466 ; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG3]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
467 ; CHECK-DAG: vsel %v24, %v29, [[REG7]], [[REG9]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
468 ; CHECK-DAG: vsel %v26, %v31, [[REG6]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
469 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
470 %cmp0 = icmp eq <4 x i64> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
471 %cmp1 = icmp eq <4 x i32> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
472 %and = xor <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
473 %sel = select <4 x i1> %and, <4 x i64> %val5, <4 x i64> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
474 ret <4 x i64> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
475 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
476
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
477 define <2 x float> @fun25(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
478 ; CHECK-LABEL: fun25:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
479 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
480 ; CHECK-NEXT: vmrlf %v0, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
481 ; CHECK-NEXT: vmrlf %v1, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
482 ; CHECK-NEXT: vldeb %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
483 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
484 ; CHECK-NEXT: vfchdb %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
485 ; CHECK-NEXT: vmrhf %v1, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
486 ; CHECK-NEXT: vmrhf %v2, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
487 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
488 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
489 ; CHECK-NEXT: vfchdb %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
490 ; CHECK-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
491 ; CHECK-NEXT: vfchdb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
492 ; CHECK-NEXT: vpkg %v1, %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
493 ; CHECK-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
494 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
495 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
496 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
497 ; CHECK-Z14-LABEL: fun25:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
498 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
499 ; CHECK-Z14-NEXT: vfchdb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
500 ; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
501 ; CHECK-Z14-NEXT: vpkg %v1, %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
502 ; CHECK-Z14-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
503 ; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
504 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
505 %cmp0 = fcmp ogt <2 x float> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
506 %cmp1 = fcmp ogt <2 x double> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
507 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
508 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
509 ret <2 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
510 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
511
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
512 define <2 x double> @fun26(<2 x float> %val1, <2 x float> %val2, <2 x double> %val3, <2 x double> %val4, <2 x double> %val5, <2 x double> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
513 ; CHECK-LABEL: fun26:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
514 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
515 ; CHECK-NEXT: vmrlf %v0, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
516 ; CHECK-NEXT: vmrlf %v1, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
517 ; CHECK-NEXT: vldeb %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
518 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
519 ; CHECK-NEXT: vfchdb %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
520 ; CHECK-NEXT: vmrhf %v1, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
521 ; CHECK-NEXT: vmrhf %v2, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
522 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
523 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
524 ; CHECK-NEXT: vfchdb %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
525 ; CHECK-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
526 ; CHECK-NEXT: vuphf %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
527 ; CHECK-NEXT: vfchdb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
528 ; CHECK-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
529 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
530 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
531 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
532 ; CHECK-Z14-LABEL: fun26:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
533 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
534 ; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
535 ; CHECK-Z14-NEXT: vuphf %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
536 ; CHECK-Z14-NEXT: vfchdb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
537 ; CHECK-Z14-NEXT: vo %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
538 ; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
539 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
540 %cmp0 = fcmp ogt <2 x float> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
541 %cmp1 = fcmp ogt <2 x double> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
542 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
543 %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
544 ret <2 x double> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
545 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
546
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
547 ; Also check a widening select of a vector of floats
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
548 define <2 x float> @fun27(<2 x i8> %val1, <2 x i8> %val2, <2 x i8> %val3, <2 x i8> %val4, <2 x float> %val5, <2 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
549 ; CHECK-LABEL: fun27:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
550 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
551 ; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
552 ; CHECK-DAG: vceqb [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
553 ; CHECK-NEXT: vo %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
554 ; CHECK-NEXT: vuphb %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
555 ; CHECK-NEXT: vuphh %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
556 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
557 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
558 %cmp0 = icmp eq <2 x i8> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
559 %cmp1 = icmp eq <2 x i8> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
560 %and = or <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
561 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
562 ret <2 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
563 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
564
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
565 define <4 x float> @fun28(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
566 ; CHECK-LABEL: fun28:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
567 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
568 ; CHECK-DAG: vmrlf [[REG0:%v[0-9]+]], %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
569 ; CHECK-DAG: vmrlf [[REG1:%v[0-9]+]], %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
570 ; CHECK-DAG: vldeb [[REG2:%v[0-9]+]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
571 ; CHECK-DAG: vldeb [[REG3:%v[0-9]+]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
572 ; CHECK-DAG: vfchdb [[REG4:%v[0-9]+]], [[REG3]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
573 ; CHECK-DAG: vmrhf [[REG5:%v[0-9]+]], %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
574 ; CHECK-DAG: vmrhf [[REG6:%v[0-9]+]], %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
575 ; CHECK-DAG: vldeb [[REG7:%v[0-9]+]], [[REG5]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
576 ; CHECK-DAG: vmrhf [[REG8:%v[0-9]+]], %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
577 ; CHECK-DAG: vldeb [[REG9:%v[0-9]+]], [[REG6]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
578 ; CHECK-DAG: vfchdb [[REG10:%v[0-9]+]], [[REG9]], [[REG7]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
579 ; CHECK-DAG: vpkg [[REG11:%v[0-9]+]], [[REG10]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
580 ; CHECK-DAG: vmrlf [[REG12:%v[0-9]+]], %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
581 ; CHECK-DAG: vmrlf [[REG13:%v[0-9]+]], %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
582 ; CHECK-DAG: vldeb [[REG14:%v[0-9]+]], [[REG12]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
583 ; CHECK-DAG: vldeb [[REG15:%v[0-9]+]], [[REG13]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
584 ; CHECK-DAG: vfchdb [[REG16:%v[0-9]+]], [[REG15]], [[REG14]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
585 ; CHECK-DAG: vmrhf [[REG17:%v[0-9]+]], %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
586 ; CHECK-DAG: vldeb [[REG19:%v[0-9]+]], [[REG17]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
587 ; CHECK-DAG: vldeb [[REG20:%v[0-9]+]], [[REG8]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
588 ; CHECK-NEXT: vfchdb %v2, [[REG20]], [[REG19]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
589 ; CHECK-NEXT: vpkg [[REG21:%v[0-9]+]], %v2, [[REG16]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
590 ; CHECK-NEXT: vx %v0, [[REG11]], [[REG21]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
591 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
592 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
593 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
594 ; CHECK-Z14-LABEL: fun28:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
595 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
596 ; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
597 ; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
598 ; CHECK-Z14-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
599 ; CHECK-Z14-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
600 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
601 %cmp0 = fcmp ogt <4 x float> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
602 %cmp1 = fcmp ogt <4 x float> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
603 %and = xor <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
604 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
605 ret <4 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
606 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
607
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
608 define <4 x double> @fun29(<4 x float> %val1, <4 x float> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
609 ; CHECK-LABEL: fun29:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
610 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
611 ; CHECK-NEXT: vmrlf %v0, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
612 ; CHECK-NEXT: vmrlf %v1, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
613 ; CHECK-NEXT: vldeb %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
614 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
615 ; CHECK-NEXT: vfchdb %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
616 ; CHECK-NEXT: vmrhf %v1, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
617 ; CHECK-NEXT: vmrhf %v2, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
618 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
619 ; CHECK-NEXT: vmrhf %v3, %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
620 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
621 ; CHECK-NEXT: vfchdb %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
622 ; CHECK-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
623 ; CHECK-NEXT: vmrlf %v1, %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
624 ; CHECK-NEXT: vmrlf %v2, %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
625 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
626 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
627 ; CHECK-NEXT: vfchdb %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
628 ; CHECK-NEXT: vmrhf %v2, %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
629 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
630 ; CHECK-NEXT: vldeb %v3, %v3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
631 ; CHECK-NEXT: vfchdb %v2, %v3, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
632 ; CHECK-NEXT: vpkg %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
633 ; CHECK-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
634 ; CHECK-NEXT: vmrlg %v1, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
635 ; CHECK-NEXT: vuphf %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
636 ; CHECK-NEXT: vuphf %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
637 ; CHECK-NEXT: vsel %v24, %v25, %v29, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
638 ; CHECK-NEXT: vsel %v26, %v27, %v31, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
639 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
640 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
641 ; CHECK-Z14-LABEL: fun29:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
642 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
643 ; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
644 ; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
645 ; CHECK-Z14-NEXT: vx %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
646 ; CHECK-Z14-NEXT: vmrlg %v1, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
647 ; CHECK-Z14-NEXT: vuphf %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
648 ; CHECK-Z14-NEXT: vuphf %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
649 ; CHECK-Z14-NEXT: vsel %v24, %v25, %v29, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
650 ; CHECK-Z14-NEXT: vsel %v26, %v27, %v31, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
651 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
652 %cmp0 = fcmp ogt <4 x float> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
653 %cmp1 = fcmp ogt <4 x float> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
654 %and = xor <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
655 %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
656 ret <4 x double> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
657 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
658
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
659 define <8 x float> @fun30(<8 x float> %val1, <8 x float> %val2, <8 x double> %val3, <8 x double> %val4, <8 x float> %val5, <8 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
660 ; CHECK-LABEL: fun30:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
661 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
662 ; CHECK-NEXT: vmrlf %v16, %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
663 ; CHECK-NEXT: vmrlf %v17, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
664 ; CHECK-NEXT: vldeb %v16, %v16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
665 ; CHECK-NEXT: vldeb %v17, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
666 ; CHECK-NEXT: vfchdb %v16, %v17, %v16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
667 ; CHECK-NEXT: vmrhf %v17, %v28, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
668 ; CHECK-NEXT: vmrhf %v18, %v24, %v24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
669 ; CHECK-NEXT: vldeb %v17, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
670 ; CHECK-NEXT: vl %v4, 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
671 ; CHECK-NEXT: vldeb %v18, %v18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
672 ; CHECK-NEXT: vl %v5, 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
673 ; CHECK-NEXT: vl %v6, 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
674 ; CHECK-NEXT: vl %v7, 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
675 ; CHECK-NEXT: vl %v0, 272(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
676 ; CHECK-NEXT: vl %v1, 240(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
677 ; CHECK-NEXT: vfchdb %v17, %v18, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
678 ; CHECK-NEXT: vl %v2, 256(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
679 ; CHECK-NEXT: vl %v3, 224(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
680 ; CHECK-NEXT: vpkg %v16, %v17, %v16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
681 ; CHECK-NEXT: vmrlf %v17, %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
682 ; CHECK-NEXT: vmrlf %v18, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
683 ; CHECK-NEXT: vmrhf %v19, %v26, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
684 ; CHECK-NEXT: vfchdb %v7, %v27, %v7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
685 ; CHECK-NEXT: vfchdb %v6, %v25, %v6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
686 ; CHECK-NEXT: vfchdb %v5, %v31, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
687 ; CHECK-NEXT: vfchdb %v4, %v29, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
688 ; CHECK-NEXT: vpkg %v6, %v6, %v7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
689 ; CHECK-NEXT: vpkg %v4, %v4, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
690 ; CHECK-NEXT: vn %v5, %v16, %v6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
691 ; CHECK-NEXT: vsel %v24, %v3, %v2, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
692 ; CHECK-NEXT: vldeb %v17, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
693 ; CHECK-NEXT: vldeb %v18, %v18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
694 ; CHECK-NEXT: vfchdb %v17, %v18, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
695 ; CHECK-NEXT: vmrhf %v18, %v30, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
696 ; CHECK-NEXT: vldeb %v18, %v18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
697 ; CHECK-NEXT: vldeb %v19, %v19
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
698 ; CHECK-NEXT: vfchdb %v18, %v19, %v18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
699 ; CHECK-NEXT: vpkg %v17, %v18, %v17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
700 ; CHECK-NEXT: vn %v4, %v17, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
701 ; CHECK-NEXT: vsel %v26, %v1, %v0, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
702 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
703 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
704 ; CHECK-Z14-LABEL: fun30:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
705 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
706 ; CHECK-Z14-NEXT: vl %v4, 192(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
707 ; CHECK-Z14-NEXT: vl %v5, 208(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
708 ; CHECK-Z14-NEXT: vl %v6, 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
709 ; CHECK-Z14-NEXT: vl %v7, 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
710 ; CHECK-Z14-NEXT: vfchdb %v7, %v27, %v7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
711 ; CHECK-Z14-NEXT: vfchdb %v6, %v25, %v6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
712 ; CHECK-Z14-NEXT: vfchdb %v5, %v31, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
713 ; CHECK-Z14-NEXT: vfchdb %v4, %v29, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
714 ; CHECK-Z14-NEXT: vfchsb %v16, %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
715 ; CHECK-Z14-NEXT: vfchsb %v17, %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
716 ; CHECK-Z14-NEXT: vpkg %v6, %v6, %v7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
717 ; CHECK-Z14-NEXT: vpkg %v4, %v4, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
718 ; CHECK-Z14-NEXT: vl %v0, 272(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
719 ; CHECK-Z14-NEXT: vl %v1, 240(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
720 ; CHECK-Z14-NEXT: vl %v2, 256(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
721 ; CHECK-Z14-NEXT: vl %v3, 224(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
722 ; CHECK-Z14-NEXT: vn %v4, %v17, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
723 ; CHECK-Z14-NEXT: vn %v5, %v16, %v6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
724 ; CHECK-Z14-NEXT: vsel %v24, %v3, %v2, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
725 ; CHECK-Z14-NEXT: vsel %v26, %v1, %v0, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
726 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
727 %cmp0 = fcmp ogt <8 x float> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
728 %cmp1 = fcmp ogt <8 x double> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
729 %and = and <8 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
730 %sel = select <8 x i1> %and, <8 x float> %val5, <8 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
731 ret <8 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
732 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
733
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
734 define <2 x float> @fun31(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4, <2 x float> %val5, <2 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
735 ; CHECK-LABEL: fun31:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
736 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
737 ; CHECK-DAG: vfchdb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
738 ; CHECK-DAG: vfchdb [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
739 ; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
740 ; CHECK-NEXT: vpkg %v0, %v0, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
741 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
742 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
743 %cmp0 = fcmp ogt <2 x double> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
744 %cmp1 = fcmp ogt <2 x double> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
745 %and = xor <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
746 %sel = select <2 x i1> %and, <2 x float> %val5, <2 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
747 ret <2 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
748 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
749
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
750 define <2 x double> @fun32(<2 x double> %val1, <2 x double> %val2, <2 x double> %val3, <2 x double> %val4, <2 x double> %val5, <2 x double> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
751 ; CHECK-LABEL: fun32:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
752 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
753 ; CHECK-DAG: vfchdb [[REG0:%v[0-9]+]], %v24, %v26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
754 ; CHECK-DAG: vfchdb [[REG1:%v[0-9]+]], %v28, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
755 ; CHECK-NEXT: vx %v0, [[REG0]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
756 ; CHECK-NEXT: vsel %v24, %v25, %v27, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
757 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
758 %cmp0 = fcmp ogt <2 x double> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
759 %cmp1 = fcmp ogt <2 x double> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
760 %and = xor <2 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
761 %sel = select <2 x i1> %and, <2 x double> %val5, <2 x double> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
762 ret <2 x double> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
763 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
764
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
765 define <4 x float> @fun33(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4, <4 x float> %val5, <4 x float> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
766 ; CHECK-LABEL: fun33:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
767 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
768 ; CHECK-NEXT: vfchdb %v0, %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
769 ; CHECK-NEXT: vfchdb %v1, %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
770 ; CHECK-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
771 ; CHECK-NEXT: vmrlf %v1, %v27, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
772 ; CHECK-NEXT: vmrlf %v2, %v25, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
773 ; CHECK-NEXT: vldeb %v1, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
774 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
775 ; CHECK-NEXT: vfchdb %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
776 ; CHECK-NEXT: vmrhf %v2, %v27, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
777 ; CHECK-NEXT: vmrhf %v3, %v25, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
778 ; CHECK-NEXT: vldeb %v2, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
779 ; CHECK-NEXT: vldeb %v3, %v3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
780 ; CHECK-NEXT: vfchdb %v2, %v3, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
781 ; CHECK-NEXT: vpkg %v1, %v2, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
782 ; CHECK-NEXT: vn %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
783 ; CHECK-NEXT: vsel %v24, %v29, %v31, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
784 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
785 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
786 ; CHECK-Z14-LABEL: fun33:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
787 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
788 ; CHECK-Z14-NEXT: vfchdb %v0, %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
789 ; CHECK-Z14-NEXT: vfchdb %v1, %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
790 ; CHECK-Z14-NEXT: vpkg %v0, %v1, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
791 ; CHECK-Z14-NEXT: vfchsb %v1, %v25, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
792 ; CHECK-Z14-NEXT: vn %v0, %v0, %v1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
793 ; CHECK-Z14-NEXT: vsel %v24, %v29, %v31, %v0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
794 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
795 %cmp0 = fcmp ogt <4 x double> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
796 %cmp1 = fcmp ogt <4 x float> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
797 %and = and <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
798 %sel = select <4 x i1> %and, <4 x float> %val5, <4 x float> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
799 ret <4 x float> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
800 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
801
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
802 define <4 x double> @fun34(<4 x double> %val1, <4 x double> %val2, <4 x float> %val3, <4 x float> %val4, <4 x double> %val5, <4 x double> %val6) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
803 ; CHECK-LABEL: fun34:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
804 ; CHECK: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
805 ; CHECK-NEXT: vmrlf [[REG0:%v[0-9]+]], %v27, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
806 ; CHECK-NEXT: vmrlf [[REG1:%v[0-9]+]], %v25, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
807 ; CHECK-NEXT: vldeb [[REG2:%v[0-9]+]], [[REG0]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
808 ; CHECK-NEXT: vldeb [[REG3:%v[0-9]+]], [[REG1]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
809 ; CHECK-NEXT: vfchdb [[REG4:%v[0-9]+]], [[REG3]], [[REG2]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
810 ; CHECK-NEXT: vmrhf [[REG5:%v[0-9]+]], %v27, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
811 ; CHECK-NEXT: vmrhf [[REG6:%v[0-9]+]], %v25, %v25
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
812 ; CHECK-DAG: vldeb [[REG7:%v[0-9]+]], [[REG5]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
813 ; CHECK-DAG: vl [[REG8:%v[0-9]+]], 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
814 ; CHECK-DAG: vldeb [[REG9:%v[0-9]+]], [[REG6]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
815 ; CHECK-DAG: vl [[REG10:%v[0-9]+]], 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
816 ; CHECK-DAG: vfchdb [[REG11:%v[0-9]+]], [[REG9]], [[REG7]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
817 ; CHECK-DAG: vpkg [[REG12:%v[0-9]+]], [[REG11]], [[REG4]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
818 ; CHECK-DAG: vuphf [[REG13:%v[0-9]+]], [[REG12]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
819 ; CHECK-DAG: vmrlg [[REG14:%v[0-9]+]], [[REG12]], [[REG12]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
820 ; CHECK-NEXT: vfchdb [[REG15:%v[0-9]+]], %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
821 ; CHECK-NEXT: vfchdb [[REG16:%v[0-9]+]], %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
822 ; CHECK-NEXT: vuphf [[REG17:%v[0-9]+]], [[REG14]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
823 ; CHECK-NEXT: vn [[REG18:%v[0-9]+]], [[REG16]], [[REG17]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
824 ; CHECK-NEXT: vn [[REG19:%v[0-9]+]], [[REG15]], [[REG13]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
825 ; CHECK-NEXT: vsel %v24, %v29, [[REG10]], [[REG19]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
826 ; CHECK-NEXT: vsel %v26, %v31, [[REG8]], [[REG18]]
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
827 ; CHECK-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
828 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
829 ; CHECK-Z14-LABEL: fun34:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
830 ; CHECK-Z14: # BB#0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
831 ; CHECK-Z14-NEXT: vfchsb %v4, %v25, %v27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
832 ; CHECK-Z14-NEXT: vuphf %v5, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
833 ; CHECK-Z14-NEXT: vmrlg %v4, %v4, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
834 ; CHECK-Z14-NEXT: vfchdb %v2, %v24, %v28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
835 ; CHECK-Z14-NEXT: vfchdb %v3, %v26, %v30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
836 ; CHECK-Z14-NEXT: vuphf %v4, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
837 ; CHECK-Z14-NEXT: vl %v0, 176(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
838 ; CHECK-Z14-NEXT: vl %v1, 160(%r15)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
839 ; CHECK-Z14-NEXT: vn %v3, %v3, %v4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
840 ; CHECK-Z14-NEXT: vn %v2, %v2, %v5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
841 ; CHECK-Z14-NEXT: vsel %v24, %v29, %v1, %v2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
842 ; CHECK-Z14-NEXT: vsel %v26, %v31, %v0, %v3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
843 ; CHECK-Z14-NEXT: br %r14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
844 %cmp0 = fcmp ogt <4 x double> %val1, %val2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
845 %cmp1 = fcmp ogt <4 x float> %val3, %val4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
846 %and = and <4 x i1> %cmp0, %cmp1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
847 %sel = select <4 x i1> %and, <4 x double> %val5, <4 x double> %val6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
848 ret <4 x double> %sel
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
849 }