Add test cases that were inadvertently omitted from r223783 and r223788
[oota-llvm.git] / test / CodeGen / PowerPC / vsx_insert_extract_le.ll
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.
5
6 ; R;UN: llc -mcpu=pwr8 -mattr=+vsx -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
7
8 define <2 x double> @testi0(<2 x double>* %p1, double* %p2) {
9   %v = load <2 x double>* %p1
10   %s = load double* %p2
11   %r = insertelement <2 x double> %v, double %s, i32 0
12   ret <2 x double> %r
13
14 ; CHECK-LABEL: testi0
15 ; CHECK: lxvd2x 0, 0, 3
16 ; CHECK: lxsdx 34, 0, 4
17 ; CHECK: xxpermdi 0, 0, 0, 2
18 ; CHECK: xxpermdi 1, 34, 34, 0
19 ; CHECK: xxpermdi 34, 0, 1, 1
20 }
21
22 define <2 x double> @testi1(<2 x double>* %p1, double* %p2) {
23   %v = load <2 x double>* %p1
24   %s = load double* %p2
25   %r = insertelement <2 x double> %v, double %s, i32 1
26   ret <2 x double> %r
27
28 ; CHECK-LABEL: testi1
29 ; CHECK: lxvd2x 0, 0, 3
30 ; CHECK: lxsdx 34, 0, 4
31 ; CHECK: xxpermdi 0, 0, 0, 2
32 ; CHECK: xxpermdi 1, 34, 34, 0
33 ; CHECK: xxpermdi 34, 1, 0, 3
34 }
35
36 define double @teste0(<2 x double>* %p1) {
37   %v = load <2 x double>* %p1
38   %r = extractelement <2 x double> %v, i32 0
39   ret double %r
40
41 ; FIXME: Swap optimization will collapse this into lxvd2x 1, 0, 3.
42
43 ; CHECK-LABEL: teste0
44 ; CHECK: lxvd2x 0, 0, 3
45 ; CHECK: xxpermdi 0, 0, 0, 2
46 ; CHECK: xxpermdi 1, 0, 0, 2
47 }
48
49 define double @teste1(<2 x double>* %p1) {
50   %v = load <2 x double>* %p1
51   %r = extractelement <2 x double> %v, i32 1
52   ret double %r
53
54 ; CHECK-LABEL: teste1
55 ; CHECK: lxvd2x 0, 0, 3
56 ; CHECK: xxpermdi 1, 0, 0, 2
57 }