@@ -130,3 +130,113 @@ define i1 @and_ugt_fail(i8 %xx) {
130
130
%r = icmp ugt i8 %x_p2 , 127
131
131
ret i1 %r
132
132
}
133
+
134
+ define i1 @urem_okay (i8 %x ) {
135
+ ; CHECK-LABEL: @urem_okay(
136
+ ; CHECK-NEXT: [[VAL:%.*]] = urem i8 34, [[X:%.*]]
137
+ ; CHECK-NEXT: [[R:%.*]] = icmp ule i8 [[VAL]], 35
138
+ ; CHECK-NEXT: ret i1 [[R]]
139
+ ;
140
+ %val = urem i8 34 , %x
141
+ %r = icmp ule i8 %val , 35
142
+ ret i1 %r
143
+ }
144
+
145
+ define i1 @urem_fail (i8 %x ) {
146
+ ; CHECK-LABEL: @urem_fail(
147
+ ; CHECK-NEXT: [[VAL:%.*]] = urem i8 34, [[X:%.*]]
148
+ ; CHECK-NEXT: [[R:%.*]] = icmp ule i8 [[VAL]], 33
149
+ ; CHECK-NEXT: ret i1 [[R]]
150
+ ;
151
+ %val = urem i8 34 , %x
152
+ %r = icmp ule i8 %val , 33
153
+ ret i1 %r
154
+ }
155
+
156
+ define i1 @srem_posC_okay0 (i8 %x ) {
157
+ ; CHECK-LABEL: @srem_posC_okay0(
158
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
159
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 34
160
+ ; CHECK-NEXT: ret i1 [[R]]
161
+ ;
162
+ %val = srem i8 34 , %x
163
+ %r = icmp sle i8 %val , 34
164
+ ret i1 %r
165
+ }
166
+
167
+ define i1 @srem_posC_okay1 (i8 %x ) {
168
+ ; CHECK-LABEL: @srem_posC_okay1(
169
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
170
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -3
171
+ ; CHECK-NEXT: ret i1 [[R]]
172
+ ;
173
+ %val = srem i8 34 , %x
174
+ %r = icmp sge i8 %val , -3
175
+ ret i1 %r
176
+ }
177
+
178
+ define i1 @srem_negC_okay0 (i8 %x ) {
179
+ ; CHECK-LABEL: @srem_negC_okay0(
180
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
181
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 0
182
+ ; CHECK-NEXT: ret i1 [[R]]
183
+ ;
184
+ %val = srem i8 -34 , %x
185
+ %r = icmp sle i8 %val , 0
186
+ ret i1 %r
187
+ }
188
+
189
+ define i1 @srem_negC_okay1 (i8 %x ) {
190
+ ; CHECK-LABEL: @srem_negC_okay1(
191
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
192
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -34
193
+ ; CHECK-NEXT: ret i1 [[R]]
194
+ ;
195
+ %val = srem i8 -34 , %x
196
+ %r = icmp sge i8 %val , -34
197
+ ret i1 %r
198
+ }
199
+
200
+ define i1 @srem_posC_fail0 (i8 %x ) {
201
+ ; CHECK-LABEL: @srem_posC_fail0(
202
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
203
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 32
204
+ ; CHECK-NEXT: ret i1 [[R]]
205
+ ;
206
+ %val = srem i8 34 , %x
207
+ %r = icmp sle i8 %val , 32
208
+ ret i1 %r
209
+ }
210
+
211
+ define i1 @srem_posC_fail1 (i8 %x ) {
212
+ ; CHECK-LABEL: @srem_posC_fail1(
213
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
214
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], 1
215
+ ; CHECK-NEXT: ret i1 [[R]]
216
+ ;
217
+ %val = srem i8 34 , %x
218
+ %r = icmp sge i8 %val , 1
219
+ ret i1 %r
220
+ }
221
+
222
+ define i1 @srem_negC_fail0 (i8 %x ) {
223
+ ; CHECK-LABEL: @srem_negC_fail0(
224
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
225
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], -1
226
+ ; CHECK-NEXT: ret i1 [[R]]
227
+ ;
228
+ %val = srem i8 -34 , %x
229
+ %r = icmp sle i8 %val , -1
230
+ ret i1 %r
231
+ }
232
+
233
+ define i1 @srem_negC_fail1 (i8 %x ) {
234
+ ; CHECK-LABEL: @srem_negC_fail1(
235
+ ; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
236
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -33
237
+ ; CHECK-NEXT: ret i1 [[R]]
238
+ ;
239
+ %val = srem i8 -34 , %x
240
+ %r = icmp sge i8 %val , -33
241
+ ret i1 %r
242
+ }
0 commit comments