Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / CodeGen / PowerPC / eqv-andc-orc-nor.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep eqv | wc -l  | grep 3 &&
2 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 -mcpu=g5 | grep andc | wc -l | grep 3 &&
3 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep orc | wc -l  | grep 2 &&
4 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 -mcpu=g5 | grep nor | wc -l  | grep 3 &&
5 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep nand | wc -l  | grep 1
6
7 int %EQV1(int %X, int %Y) {
8         %A = xor int %X, %Y
9         %B = xor int %A, -1
10         ret int %B
11 }
12
13 int %EQV2(int %X, int %Y) {
14         %A = xor int %X, -1
15         %B = xor int %A, %Y
16         ret int %B
17 }
18
19 int %EQV3(int %X, int %Y) {
20         %A = xor int %X, -1
21         %B = xor int %Y, %A
22         ret int %B
23 }
24
25 int %ANDC1(int %X, int %Y) {
26         %A = xor int %Y, -1
27         %B = and int %X, %A
28         ret int %B
29 }
30
31 int %ANDC2(int %X, int %Y) {
32         %A = xor int %X, -1
33         %B = and int %A, %Y
34         ret int %B
35 }
36
37 int %ORC1(int %X, int %Y) {
38         %A = xor int %Y, -1
39         %B = or  int %X, %A
40         ret int %B
41 }
42
43 int %ORC2(int %X, int %Y) {
44         %A = xor int %X, -1
45         %B = or  int %A, %Y
46         ret int %B
47 }
48
49 int %NOR1(int %X) {
50         %Y = xor int %X, -1
51         ret int %Y
52 }
53
54 int %NOR2(int %X, int %Y) {
55         %Z = or int %X, %Y
56         %R = xor int %Z, -1
57         ret int %R
58 }
59
60 int %NAND1(int %X, int %Y) {
61         %Z = and int %X, %Y
62         %W = xor int %Z, -1
63         ret int %W
64 }
65
66 void %VNOR(<4 x float>* %P, <4 x float>* %Q) {
67         %tmp = load <4 x float>* %P
68         %tmp = cast <4 x float> %tmp to <4 x int>
69         %tmp2 = load <4 x float>* %Q
70         %tmp2 = cast <4 x float> %tmp2 to <4 x int>
71         %tmp3 = or <4 x int> %tmp, %tmp2
72         %tmp4 = xor <4 x int> %tmp3, < int -1, int -1, int -1, int -1 >
73         %tmp4 = cast <4 x int> %tmp4 to <4 x float>
74         store <4 x float> %tmp4, <4 x float>* %P
75         ret void
76 }
77
78 void %VANDC(<4 x float>* %P, <4 x float>* %Q) {
79         %tmp = load <4 x float>* %P
80         %tmp = cast <4 x float> %tmp to <4 x int>
81         %tmp2 = load <4 x float>* %Q
82         %tmp2 = cast <4 x float> %tmp2 to <4 x int>
83         %tmp4 = xor <4 x int> %tmp2, < int -1, int -1, int -1, int -1 >
84         %tmp3 = and <4 x int> %tmp, %tmp4
85         %tmp4 = cast <4 x int> %tmp3 to <4 x float>
86         store <4 x float> %tmp4, <4 x float>* %P
87         ret void
88 }
89