1 ; Note: This test is disabled until VSX is enabled for LE, as otherwise
2 ; we don't get the correct code gen.
3 ; RUN: llc -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s
4 ; FIXME: Remove this and all above lines when VSX is enabled for LE.
6 ; R;UN: llc -mcpu=pwr8 -mattr=+vsx -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
8 define <2 x double> @test00(<2 x double>* %p1, <2 x double>* %p2) {
9 %v1 = load <2 x double>* %p1
10 %v2 = load <2 x double>* %p2
11 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 0>
15 ; CHECK: lxvd2x 0, 0, 3
16 ; CHECK: xxpermdi 0, 0, 0, 2
17 ; CHECK: xxpermdi 34, 0, 0, 3
20 define <2 x double> @test01(<2 x double>* %p1, <2 x double>* %p2) {
21 %v1 = load <2 x double>* %p1
22 %v2 = load <2 x double>* %p2
23 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 1>
27 ; CHECK: lxvd2x 0, 0, 3
28 ; CHECK: xxpermdi 34, 0, 0, 2
31 define <2 x double> @test02(<2 x double>* %p1, <2 x double>* %p2) {
32 %v1 = load <2 x double>* %p1
33 %v2 = load <2 x double>* %p2
34 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 2>
37 ; CHECK-LABEL: @test02
38 ; CHECK: lxvd2x 0, 0, 3
39 ; CHECK: lxvd2x 1, 0, 4
40 ; CHECK: xxpermdi 0, 0, 0, 2
41 ; CHECK: xxpermdi 1, 1, 1, 2
42 ; CHECK: xxpermdi 34, 1, 0, 3
45 define <2 x double> @test03(<2 x double>* %p1, <2 x double>* %p2) {
46 %v1 = load <2 x double>* %p1
47 %v2 = load <2 x double>* %p2
48 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 3>
51 ; CHECK-LABEL: @test03
52 ; CHECK: lxvd2x 0, 0, 3
53 ; CHECK: lxvd2x 1, 0, 4
54 ; CHECK: xxpermdi 0, 0, 0, 2
55 ; CHECK: xxpermdi 1, 1, 1, 2
56 ; CHECK: xxpermdi 34, 1, 0, 1
59 define <2 x double> @test10(<2 x double>* %p1, <2 x double>* %p2) {
60 %v1 = load <2 x double>* %p1
61 %v2 = load <2 x double>* %p2
62 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 0>
65 ; CHECK-LABEL: @test10
66 ; CHECK: lxvd2x 0, 0, 3
67 ; CHECK: xxpermdi 0, 0, 0, 2
68 ; CHECK: xxpermdi 34, 0, 0, 2
71 define <2 x double> @test11(<2 x double>* %p1, <2 x double>* %p2) {
72 %v1 = load <2 x double>* %p1
73 %v2 = load <2 x double>* %p2
74 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 1>
77 ; CHECK-LABEL: @test11
78 ; CHECK: lxvd2x 0, 0, 3
79 ; CHECK: xxpermdi 0, 0, 0, 2
80 ; CHECK: xxpermdi 34, 0, 0, 0
83 define <2 x double> @test12(<2 x double>* %p1, <2 x double>* %p2) {
84 %v1 = load <2 x double>* %p1
85 %v2 = load <2 x double>* %p2
86 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 2>
89 ; CHECK-LABEL: @test12
90 ; CHECK: lxvd2x 0, 0, 3
91 ; CHECK: lxvd2x 1, 0, 4
92 ; CHECK: xxpermdi 0, 0, 0, 2
93 ; CHECK: xxpermdi 1, 1, 1, 2
94 ; CHECK: xxpermdi 34, 1, 0, 2
97 define <2 x double> @test13(<2 x double>* %p1, <2 x double>* %p2) {
98 %v1 = load <2 x double>* %p1
99 %v2 = load <2 x double>* %p2
100 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 3>
103 ; CHECK-LABEL: @test13
104 ; CHECK: lxvd2x 0, 0, 3
105 ; CHECK: lxvd2x 1, 0, 4
106 ; CHECK: xxpermdi 0, 0, 0, 2
107 ; CHECK: xxpermdi 1, 1, 1, 2
108 ; CHECK: xxpermdi 34, 1, 0, 0
111 define <2 x double> @test20(<2 x double>* %p1, <2 x double>* %p2) {
112 %v1 = load <2 x double>* %p1
113 %v2 = load <2 x double>* %p2
114 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 0>
117 ; CHECK-LABEL: @test20
118 ; CHECK: lxvd2x 0, 0, 3
119 ; CHECK: lxvd2x 1, 0, 4
120 ; CHECK: xxpermdi 0, 0, 0, 2
121 ; CHECK: xxpermdi 1, 1, 1, 2
122 ; CHECK: xxpermdi 34, 0, 1, 3
125 define <2 x double> @test21(<2 x double>* %p1, <2 x double>* %p2) {
126 %v1 = load <2 x double>* %p1
127 %v2 = load <2 x double>* %p2
128 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 1>
131 ; CHECK-LABEL: @test21
132 ; CHECK: lxvd2x 0, 0, 3
133 ; CHECK: lxvd2x 1, 0, 4
134 ; CHECK: xxpermdi 0, 0, 0, 2
135 ; CHECK: xxpermdi 1, 1, 1, 2
136 ; CHECK: xxpermdi 34, 0, 1, 1
139 define <2 x double> @test22(<2 x double>* %p1, <2 x double>* %p2) {
140 %v1 = load <2 x double>* %p1
141 %v2 = load <2 x double>* %p2
142 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 2>
145 ; CHECK-LABEL: @test22
146 ; CHECK: lxvd2x 0, 0, 4
147 ; CHECK: xxpermdi 0, 0, 0, 2
148 ; CHECK: xxpermdi 34, 0, 0, 3
151 define <2 x double> @test23(<2 x double>* %p1, <2 x double>* %p2) {
152 %v1 = load <2 x double>* %p1
153 %v2 = load <2 x double>* %p2
154 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 3>
157 ; CHECK-LABEL: @test23
158 ; CHECK: lxvd2x 0, 0, 4
159 ; CHECK: xxpermdi 34, 0, 0, 2
162 define <2 x double> @test30(<2 x double>* %p1, <2 x double>* %p2) {
163 %v1 = load <2 x double>* %p1
164 %v2 = load <2 x double>* %p2
165 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 0>
168 ; CHECK-LABEL: @test30
169 ; CHECK: lxvd2x 0, 0, 3
170 ; CHECK: lxvd2x 1, 0, 4
171 ; CHECK: xxpermdi 0, 0, 0, 2
172 ; CHECK: xxpermdi 1, 1, 1, 2
173 ; CHECK: xxpermdi 34, 0, 1, 2
176 define <2 x double> @test31(<2 x double>* %p1, <2 x double>* %p2) {
177 %v1 = load <2 x double>* %p1
178 %v2 = load <2 x double>* %p2
179 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 1>
182 ; CHECK-LABEL: @test31
183 ; CHECK: lxvd2x 0, 0, 3
184 ; CHECK: lxvd2x 1, 0, 4
185 ; CHECK: xxpermdi 0, 0, 0, 2
186 ; CHECK: xxpermdi 1, 1, 1, 2
187 ; CHECK: xxpermdi 34, 0, 1, 0
190 define <2 x double> @test32(<2 x double>* %p1, <2 x double>* %p2) {
191 %v1 = load <2 x double>* %p1
192 %v2 = load <2 x double>* %p2
193 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 2>
196 ; CHECK-LABEL: @test32
197 ; CHECK: lxvd2x 0, 0, 4
198 ; CHECK: xxpermdi 0, 0, 0, 2
199 ; CHECK: xxpermdi 34, 0, 0, 2
202 define <2 x double> @test33(<2 x double>* %p1, <2 x double>* %p2) {
203 %v1 = load <2 x double>* %p1
204 %v2 = load <2 x double>* %p2
205 %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 3>
208 ; CHECK-LABEL: @test33
209 ; CHECK: lxvd2x 0, 0, 4
210 ; CHECK: xxpermdi 0, 0, 0, 2
211 ; CHECK: xxpermdi 34, 0, 0, 0