comparison test/CodeGen/SystemZ/or-05.ll @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents afa8332a0e37
children
comparison
equal deleted inserted replaced
134:3a76565eade5 147:c2174574ed3a
5 ; Check the lowest useful constant, expressed as a signed integer. 5 ; Check the lowest useful constant, expressed as a signed integer.
6 define void @f1(i8 *%ptr) { 6 define void @f1(i8 *%ptr) {
7 ; CHECK-LABEL: f1: 7 ; CHECK-LABEL: f1:
8 ; CHECK: oi 0(%r2), 1 8 ; CHECK: oi 0(%r2), 1
9 ; CHECK: br %r14 9 ; CHECK: br %r14
10 %val = load i8 , i8 *%ptr 10 %val = load i8, i8 *%ptr
11 %or = or i8 %val, -255 11 %or = or i8 %val, -255
12 store i8 %or, i8 *%ptr 12 store i8 %or, i8 *%ptr
13 ret void 13 ret void
14 } 14 }
15 15
16 ; Check the highest useful constant, expressed as a signed integer. 16 ; Check the highest useful constant, expressed as a signed integer.
17 define void @f2(i8 *%ptr) { 17 define void @f2(i8 *%ptr) {
18 ; CHECK-LABEL: f2: 18 ; CHECK-LABEL: f2:
19 ; CHECK: oi 0(%r2), 254 19 ; CHECK: oi 0(%r2), 254
20 ; CHECK: br %r14 20 ; CHECK: br %r14
21 %val = load i8 , i8 *%ptr 21 %val = load i8, i8 *%ptr
22 %or = or i8 %val, -2 22 %or = or i8 %val, -2
23 store i8 %or, i8 *%ptr 23 store i8 %or, i8 *%ptr
24 ret void 24 ret void
25 } 25 }
26 26
27 ; Check the lowest useful constant, expressed as an unsigned integer. 27 ; Check the lowest useful constant, expressed as an unsigned integer.
28 define void @f3(i8 *%ptr) { 28 define void @f3(i8 *%ptr) {
29 ; CHECK-LABEL: f3: 29 ; CHECK-LABEL: f3:
30 ; CHECK: oi 0(%r2), 1 30 ; CHECK: oi 0(%r2), 1
31 ; CHECK: br %r14 31 ; CHECK: br %r14
32 %val = load i8 , i8 *%ptr 32 %val = load i8, i8 *%ptr
33 %or = or i8 %val, 1 33 %or = or i8 %val, 1
34 store i8 %or, i8 *%ptr 34 store i8 %or, i8 *%ptr
35 ret void 35 ret void
36 } 36 }
37 37
38 ; Check the highest useful constant, expressed as a unsigned integer. 38 ; Check the highest useful constant, expressed as a unsigned integer.
39 define void @f4(i8 *%ptr) { 39 define void @f4(i8 *%ptr) {
40 ; CHECK-LABEL: f4: 40 ; CHECK-LABEL: f4:
41 ; CHECK: oi 0(%r2), 254 41 ; CHECK: oi 0(%r2), 254
42 ; CHECK: br %r14 42 ; CHECK: br %r14
43 %val = load i8 , i8 *%ptr 43 %val = load i8, i8 *%ptr
44 %or = or i8 %val, 254 44 %or = or i8 %val, 254
45 store i8 %or, i8 *%ptr 45 store i8 %or, i8 *%ptr
46 ret void 46 ret void
47 } 47 }
48 48
50 define void @f5(i8 *%src) { 50 define void @f5(i8 *%src) {
51 ; CHECK-LABEL: f5: 51 ; CHECK-LABEL: f5:
52 ; CHECK: oi 4095(%r2), 127 52 ; CHECK: oi 4095(%r2), 127
53 ; CHECK: br %r14 53 ; CHECK: br %r14
54 %ptr = getelementptr i8, i8 *%src, i64 4095 54 %ptr = getelementptr i8, i8 *%src, i64 4095
55 %val = load i8 , i8 *%ptr 55 %val = load i8, i8 *%ptr
56 %or = or i8 %val, 127 56 %or = or i8 %val, 127
57 store i8 %or, i8 *%ptr 57 store i8 %or, i8 *%ptr
58 ret void 58 ret void
59 } 59 }
60 60
62 define void @f6(i8 *%src) { 62 define void @f6(i8 *%src) {
63 ; CHECK-LABEL: f6: 63 ; CHECK-LABEL: f6:
64 ; CHECK: oiy 4096(%r2), 127 64 ; CHECK: oiy 4096(%r2), 127
65 ; CHECK: br %r14 65 ; CHECK: br %r14
66 %ptr = getelementptr i8, i8 *%src, i64 4096 66 %ptr = getelementptr i8, i8 *%src, i64 4096
67 %val = load i8 , i8 *%ptr 67 %val = load i8, i8 *%ptr
68 %or = or i8 %val, 127 68 %or = or i8 %val, 127
69 store i8 %or, i8 *%ptr 69 store i8 %or, i8 *%ptr
70 ret void 70 ret void
71 } 71 }
72 72
74 define void @f7(i8 *%src) { 74 define void @f7(i8 *%src) {
75 ; CHECK-LABEL: f7: 75 ; CHECK-LABEL: f7:
76 ; CHECK: oiy 524287(%r2), 127 76 ; CHECK: oiy 524287(%r2), 127
77 ; CHECK: br %r14 77 ; CHECK: br %r14
78 %ptr = getelementptr i8, i8 *%src, i64 524287 78 %ptr = getelementptr i8, i8 *%src, i64 524287
79 %val = load i8 , i8 *%ptr 79 %val = load i8, i8 *%ptr
80 %or = or i8 %val, 127 80 %or = or i8 %val, 127
81 store i8 %or, i8 *%ptr 81 store i8 %or, i8 *%ptr
82 ret void 82 ret void
83 } 83 }
84 84
88 ; CHECK-LABEL: f8: 88 ; CHECK-LABEL: f8:
89 ; CHECK: agfi %r2, 524288 89 ; CHECK: agfi %r2, 524288
90 ; CHECK: oi 0(%r2), 127 90 ; CHECK: oi 0(%r2), 127
91 ; CHECK: br %r14 91 ; CHECK: br %r14
92 %ptr = getelementptr i8, i8 *%src, i64 524288 92 %ptr = getelementptr i8, i8 *%src, i64 524288
93 %val = load i8 , i8 *%ptr 93 %val = load i8, i8 *%ptr
94 %or = or i8 %val, 127 94 %or = or i8 %val, 127
95 store i8 %or, i8 *%ptr 95 store i8 %or, i8 *%ptr
96 ret void 96 ret void
97 } 97 }
98 98
100 define void @f9(i8 *%src) { 100 define void @f9(i8 *%src) {
101 ; CHECK-LABEL: f9: 101 ; CHECK-LABEL: f9:
102 ; CHECK: oiy -1(%r2), 127 102 ; CHECK: oiy -1(%r2), 127
103 ; CHECK: br %r14 103 ; CHECK: br %r14
104 %ptr = getelementptr i8, i8 *%src, i64 -1 104 %ptr = getelementptr i8, i8 *%src, i64 -1
105 %val = load i8 , i8 *%ptr 105 %val = load i8, i8 *%ptr
106 %or = or i8 %val, 127 106 %or = or i8 %val, 127
107 store i8 %or, i8 *%ptr 107 store i8 %or, i8 *%ptr
108 ret void 108 ret void
109 } 109 }
110 110
112 define void @f10(i8 *%src) { 112 define void @f10(i8 *%src) {
113 ; CHECK-LABEL: f10: 113 ; CHECK-LABEL: f10:
114 ; CHECK: oiy -524288(%r2), 127 114 ; CHECK: oiy -524288(%r2), 127
115 ; CHECK: br %r14 115 ; CHECK: br %r14
116 %ptr = getelementptr i8, i8 *%src, i64 -524288 116 %ptr = getelementptr i8, i8 *%src, i64 -524288
117 %val = load i8 , i8 *%ptr 117 %val = load i8, i8 *%ptr
118 %or = or i8 %val, 127 118 %or = or i8 %val, 127
119 store i8 %or, i8 *%ptr 119 store i8 %or, i8 *%ptr
120 ret void 120 ret void
121 } 121 }
122 122
126 ; CHECK-LABEL: f11: 126 ; CHECK-LABEL: f11:
127 ; CHECK: agfi %r2, -524289 127 ; CHECK: agfi %r2, -524289
128 ; CHECK: oi 0(%r2), 127 128 ; CHECK: oi 0(%r2), 127
129 ; CHECK: br %r14 129 ; CHECK: br %r14
130 %ptr = getelementptr i8, i8 *%src, i64 -524289 130 %ptr = getelementptr i8, i8 *%src, i64 -524289
131 %val = load i8 , i8 *%ptr 131 %val = load i8, i8 *%ptr
132 %or = or i8 %val, 127 132 %or = or i8 %val, 127
133 store i8 %or, i8 *%ptr 133 store i8 %or, i8 *%ptr
134 ret void 134 ret void
135 } 135 }
136 136
141 ; CHECK: oi 4095(%r2), 127 141 ; CHECK: oi 4095(%r2), 127
142 ; CHECK: br %r14 142 ; CHECK: br %r14
143 %add1 = add i64 %src, %index 143 %add1 = add i64 %src, %index
144 %add2 = add i64 %add1, 4095 144 %add2 = add i64 %add1, 4095
145 %ptr = inttoptr i64 %add2 to i8 * 145 %ptr = inttoptr i64 %add2 to i8 *
146 %val = load i8 , i8 *%ptr 146 %val = load i8, i8 *%ptr
147 %or = or i8 %val, 127 147 %or = or i8 %val, 127
148 store i8 %or, i8 *%ptr 148 store i8 %or, i8 *%ptr
149 ret void 149 ret void
150 } 150 }
151 151
156 ; CHECK: oiy 4096(%r2), 127 156 ; CHECK: oiy 4096(%r2), 127
157 ; CHECK: br %r14 157 ; CHECK: br %r14
158 %add1 = add i64 %src, %index 158 %add1 = add i64 %src, %index
159 %add2 = add i64 %add1, 4096 159 %add2 = add i64 %add1, 4096
160 %ptr = inttoptr i64 %add2 to i8 * 160 %ptr = inttoptr i64 %add2 to i8 *
161 %val = load i8 , i8 *%ptr 161 %val = load i8, i8 *%ptr
162 %or = or i8 %val, 127 162 %or = or i8 %val, 127
163 store i8 %or, i8 *%ptr 163 store i8 %or, i8 *%ptr
164 ret void 164 ret void
165 } 165 }