OSDN Git Service

ee9e5e9b5c3222358402183636874fa6034662ca
[android-x86/external-llvm.git] / test / CodeGen / SystemZ / 02-MemArith.ll
1 ; RUN: llc < %s -march=systemz | FileCheck %s
2
3 define signext i32 @foo1(i32 %a, i32 *%b, i64 %idx)  {
4 ; CHECK: foo1:
5 ; CHECK:  a %r2, 4(%r1,%r3)
6 entry:
7     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
8     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
9     %c = load i32* %ptr
10     %d = add i32 %a, %c
11     ret i32 %d
12 }
13
14 define signext i32 @foo2(i32 %a, i32 *%b, i64 %idx) {
15 ; CHECK: foo2:
16 ; CHECK:  ay %r2, -4(%r1,%r3)
17 entry:
18     %idx2 = add i64 %idx, -1         ; <i64> [#uses=1]
19     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
20     %c = load i32* %ptr
21     %d = add i32 %a, %c
22     ret i32 %d
23 }
24
25 define signext i64 @foo3(i64 %a, i64 *%b, i64 %idx)  {
26 ; CHECK: foo3:
27 ; CHECK:  ag %r2, 8(%r1,%r3)
28 entry:
29     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
30     %ptr = getelementptr i64* %b, i64 %idx2          ; <i64*> [#uses=1]
31     %c = load i64* %ptr
32     %d = add i64 %a, %c
33     ret i64 %d
34 }
35
36 define signext i32 @foo4(i32 %a, i32 *%b, i64 %idx)  {
37 ; CHECK: foo4:
38 ; CHECK:  n %r2, 4(%r1,%r3)
39 entry:
40     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
41     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
42     %c = load i32* %ptr
43     %d = and i32 %a, %c
44     ret i32 %d
45 }
46
47 define signext i32 @foo5(i32 %a, i32 *%b, i64 %idx) {
48 ; CHECK: foo5:
49 ; CHECK:  ny %r2, -4(%r1,%r3)
50 entry:
51     %idx2 = add i64 %idx, -1         ; <i64> [#uses=1]
52     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
53     %c = load i32* %ptr
54     %d = and i32 %a, %c
55     ret i32 %d
56 }
57
58 define signext i64 @foo6(i64 %a, i64 *%b, i64 %idx)  {
59 ; CHECK: foo6:
60 ; CHECK:  ng %r2, 8(%r1,%r3)
61 entry:
62     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
63     %ptr = getelementptr i64* %b, i64 %idx2          ; <i64*> [#uses=1]
64     %c = load i64* %ptr
65     %d = and i64 %a, %c
66     ret i64 %d
67 }
68
69 define signext i32 @foo7(i32 %a, i32 *%b, i64 %idx) {
70 ; CHECK: foo7:
71 ; CHECK:  o %r2, 4(%r1,%r3)
72 entry:
73     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
74     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
75     %c = load i32* %ptr
76     %d = or i32 %a, %c
77     ret i32 %d
78 }
79
80 define signext i32 @foo8(i32 %a, i32 *%b, i64 %idx)  {
81 ; CHECK: foo8:
82 ; CHECK:  oy %r2, -4(%r1,%r3)
83 entry:
84     %idx2 = add i64 %idx, -1         ; <i64> [#uses=1]
85     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
86     %c = load i32* %ptr
87     %d = or i32 %a, %c
88     ret i32 %d
89 }
90
91 define signext i64 @foo9(i64 %a, i64 *%b, i64 %idx)  {
92 ; CHECK: foo9:
93 ; CHECK:  og %r2, 8(%r1,%r3)
94 entry:
95     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
96     %ptr = getelementptr i64* %b, i64 %idx2          ; <i64*> [#uses=1]
97     %c = load i64* %ptr
98     %d = or i64 %a, %c
99     ret i64 %d
100 }
101
102 define signext i32 @foo10(i32 %a, i32 *%b, i64 %idx)  {
103 ; CHECK: foo10:
104 ; CHECK:  x %r2, 4(%r1,%r3)
105 entry:
106     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
107     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
108     %c = load i32* %ptr
109     %d = xor i32 %a, %c
110     ret i32 %d
111 }
112
113 define signext i32 @foo11(i32 %a, i32 *%b, i64 %idx)  {
114 ; CHECK: foo11:
115 ; CHECK:  xy %r2, -4(%r1,%r3)
116 entry:
117     %idx2 = add i64 %idx, -1         ; <i64> [#uses=1]
118     %ptr = getelementptr i32* %b, i64 %idx2          ; <i32*> [#uses=1]
119     %c = load i32* %ptr
120     %d = xor i32 %a, %c
121     ret i32 %d
122 }
123
124 define signext i64 @foo12(i64 %a, i64 *%b, i64 %idx)  {
125 ; CHECK: foo12:
126 ; CHECK:  xg %r2, 8(%r1,%r3)
127 entry:
128     %idx2 = add i64 %idx, 1         ; <i64> [#uses=1]
129     %ptr = getelementptr i64* %b, i64 %idx2          ; <i64*> [#uses=1]
130     %c = load i64* %ptr
131     %d = xor i64 %a, %c
132     ret i64 %d
133 }