@@ -91,30 +91,27 @@ define i32 @cmov_sle_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
91
91
; RV32I: # %bb.0:
92
92
; RV32I-NEXT: bge a2, a1, .LBB3_2
93
93
; RV32I-NEXT: # %bb.1:
94
- ; RV32I-NEXT: mv a3, a0
95
- ; RV32I-NEXT: .LBB3_2:
96
94
; RV32I-NEXT: mv a0, a3
95
+ ; RV32I-NEXT: .LBB3_2:
97
96
; RV32I-NEXT: ret
98
97
;
99
98
; RV32IB-LABEL: cmov_sle_i32:
100
99
; RV32IB: # %bb.0:
101
100
; RV32IB-NEXT: bge a2, a1, .LBB3_2
102
101
; RV32IB-NEXT: # %bb.1:
103
- ; RV32IB-NEXT: mv a3, a0
104
- ; RV32IB-NEXT: .LBB3_2:
105
102
; RV32IB-NEXT: mv a0, a3
103
+ ; RV32IB-NEXT: .LBB3_2:
106
104
; RV32IB-NEXT: ret
107
105
;
108
106
; RV32IBT-LABEL: cmov_sle_i32:
109
107
; RV32IBT: # %bb.0:
110
108
; RV32IBT-NEXT: bge a2, a1, .LBB3_2
111
109
; RV32IBT-NEXT: # %bb.1:
112
- ; RV32IBT-NEXT: mv a3, a0
113
- ; RV32IBT-NEXT: .LBB3_2:
114
110
; RV32IBT-NEXT: mv a0, a3
111
+ ; RV32IBT-NEXT: .LBB3_2:
115
112
; RV32IBT-NEXT: ret
116
113
%tobool = icmp sle i32 %b , %c
117
- %cond = select i1 %tobool , i32 %d , i32 %a
114
+ %cond = select i1 %tobool , i32 %a , i32 %d
118
115
ret i32 %cond
119
116
}
120
117
@@ -123,30 +120,27 @@ define i32 @cmov_sge_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
123
120
; RV32I: # %bb.0:
124
121
; RV32I-NEXT: bge a1, a2, .LBB4_2
125
122
; RV32I-NEXT: # %bb.1:
126
- ; RV32I-NEXT: mv a3, a0
127
- ; RV32I-NEXT: .LBB4_2:
128
123
; RV32I-NEXT: mv a0, a3
124
+ ; RV32I-NEXT: .LBB4_2:
129
125
; RV32I-NEXT: ret
130
126
;
131
127
; RV32IB-LABEL: cmov_sge_i32:
132
128
; RV32IB: # %bb.0:
133
129
; RV32IB-NEXT: bge a1, a2, .LBB4_2
134
130
; RV32IB-NEXT: # %bb.1:
135
- ; RV32IB-NEXT: mv a3, a0
136
- ; RV32IB-NEXT: .LBB4_2:
137
131
; RV32IB-NEXT: mv a0, a3
132
+ ; RV32IB-NEXT: .LBB4_2:
138
133
; RV32IB-NEXT: ret
139
134
;
140
135
; RV32IBT-LABEL: cmov_sge_i32:
141
136
; RV32IBT: # %bb.0:
142
137
; RV32IBT-NEXT: bge a1, a2, .LBB4_2
143
138
; RV32IBT-NEXT: # %bb.1:
144
- ; RV32IBT-NEXT: mv a3, a0
145
- ; RV32IBT-NEXT: .LBB4_2:
146
139
; RV32IBT-NEXT: mv a0, a3
140
+ ; RV32IBT-NEXT: .LBB4_2:
147
141
; RV32IBT-NEXT: ret
148
142
%tobool = icmp sge i32 %b , %c
149
- %cond = select i1 %tobool , i32 %d , i32 %a
143
+ %cond = select i1 %tobool , i32 %a , i32 %d
150
144
ret i32 %cond
151
145
}
152
146
@@ -155,30 +149,27 @@ define i32 @cmov_ule_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
155
149
; RV32I: # %bb.0:
156
150
; RV32I-NEXT: bgeu a2, a1, .LBB5_2
157
151
; RV32I-NEXT: # %bb.1:
158
- ; RV32I-NEXT: mv a3, a0
159
- ; RV32I-NEXT: .LBB5_2:
160
152
; RV32I-NEXT: mv a0, a3
153
+ ; RV32I-NEXT: .LBB5_2:
161
154
; RV32I-NEXT: ret
162
155
;
163
156
; RV32IB-LABEL: cmov_ule_i32:
164
157
; RV32IB: # %bb.0:
165
158
; RV32IB-NEXT: bgeu a2, a1, .LBB5_2
166
159
; RV32IB-NEXT: # %bb.1:
167
- ; RV32IB-NEXT: mv a3, a0
168
- ; RV32IB-NEXT: .LBB5_2:
169
160
; RV32IB-NEXT: mv a0, a3
161
+ ; RV32IB-NEXT: .LBB5_2:
170
162
; RV32IB-NEXT: ret
171
163
;
172
164
; RV32IBT-LABEL: cmov_ule_i32:
173
165
; RV32IBT: # %bb.0:
174
166
; RV32IBT-NEXT: bgeu a2, a1, .LBB5_2
175
167
; RV32IBT-NEXT: # %bb.1:
176
- ; RV32IBT-NEXT: mv a3, a0
177
- ; RV32IBT-NEXT: .LBB5_2:
178
168
; RV32IBT-NEXT: mv a0, a3
169
+ ; RV32IBT-NEXT: .LBB5_2:
179
170
; RV32IBT-NEXT: ret
180
171
%tobool = icmp ule i32 %b , %c
181
- %cond = select i1 %tobool , i32 %d , i32 %a
172
+ %cond = select i1 %tobool , i32 %a , i32 %d
182
173
ret i32 %cond
183
174
}
184
175
@@ -187,30 +178,27 @@ define i32 @cmov_uge_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
187
178
; RV32I: # %bb.0:
188
179
; RV32I-NEXT: bgeu a1, a2, .LBB6_2
189
180
; RV32I-NEXT: # %bb.1:
190
- ; RV32I-NEXT: mv a3, a0
191
- ; RV32I-NEXT: .LBB6_2:
192
181
; RV32I-NEXT: mv a0, a3
182
+ ; RV32I-NEXT: .LBB6_2:
193
183
; RV32I-NEXT: ret
194
184
;
195
185
; RV32IB-LABEL: cmov_uge_i32:
196
186
; RV32IB: # %bb.0:
197
187
; RV32IB-NEXT: bgeu a1, a2, .LBB6_2
198
188
; RV32IB-NEXT: # %bb.1:
199
- ; RV32IB-NEXT: mv a3, a0
200
- ; RV32IB-NEXT: .LBB6_2:
201
189
; RV32IB-NEXT: mv a0, a3
190
+ ; RV32IB-NEXT: .LBB6_2:
202
191
; RV32IB-NEXT: ret
203
192
;
204
193
; RV32IBT-LABEL: cmov_uge_i32:
205
194
; RV32IBT: # %bb.0:
206
195
; RV32IBT-NEXT: bgeu a1, a2, .LBB6_2
207
196
; RV32IBT-NEXT: # %bb.1:
208
- ; RV32IBT-NEXT: mv a3, a0
209
- ; RV32IBT-NEXT: .LBB6_2:
210
197
; RV32IBT-NEXT: mv a0, a3
198
+ ; RV32IBT-NEXT: .LBB6_2:
211
199
; RV32IBT-NEXT: ret
212
200
%tobool = icmp uge i32 %b , %c
213
- %cond = select i1 %tobool , i32 %d , i32 %a
201
+ %cond = select i1 %tobool , i32 %a , i32 %d
214
202
ret i32 %cond
215
203
}
216
204
@@ -259,11 +247,9 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
259
247
; RV32I-NEXT: xori a2, a2, 1
260
248
; RV32I-NEXT: bnez a2, .LBB8_4
261
249
; RV32I-NEXT: .LBB8_3:
262
- ; RV32I-NEXT: mv a6, a0
263
- ; RV32I-NEXT: mv a7, a1
264
- ; RV32I-NEXT: .LBB8_4:
265
250
; RV32I-NEXT: mv a0, a6
266
251
; RV32I-NEXT: mv a1, a7
252
+ ; RV32I-NEXT: .LBB8_4:
267
253
; RV32I-NEXT: ret
268
254
;
269
255
; RV32IB-LABEL: cmov_sle_i64:
@@ -279,11 +265,9 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
279
265
; RV32IB-NEXT: xori a2, a2, 1
280
266
; RV32IB-NEXT: bnez a2, .LBB8_4
281
267
; RV32IB-NEXT: .LBB8_3:
282
- ; RV32IB-NEXT: mv a6, a0
283
- ; RV32IB-NEXT: mv a7, a1
284
- ; RV32IB-NEXT: .LBB8_4:
285
268
; RV32IB-NEXT: mv a0, a6
286
269
; RV32IB-NEXT: mv a1, a7
270
+ ; RV32IB-NEXT: .LBB8_4:
287
271
; RV32IB-NEXT: ret
288
272
;
289
273
; RV32IBT-LABEL: cmov_sle_i64:
@@ -299,14 +283,12 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
299
283
; RV32IBT-NEXT: xori a2, a2, 1
300
284
; RV32IBT-NEXT: bnez a2, .LBB8_4
301
285
; RV32IBT-NEXT: .LBB8_3:
302
- ; RV32IBT-NEXT: mv a6, a0
303
- ; RV32IBT-NEXT: mv a7, a1
304
- ; RV32IBT-NEXT: .LBB8_4:
305
286
; RV32IBT-NEXT: mv a0, a6
306
287
; RV32IBT-NEXT: mv a1, a7
288
+ ; RV32IBT-NEXT: .LBB8_4:
307
289
; RV32IBT-NEXT: ret
308
290
%tobool = icmp sle i64 %b , %c
309
- %cond = select i1 %tobool , i64 %d , i64 %a
291
+ %cond = select i1 %tobool , i64 %a , i64 %d
310
292
ret i64 %cond
311
293
}
312
294
@@ -324,11 +306,9 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
324
306
; RV32I-NEXT: xori a2, a2, 1
325
307
; RV32I-NEXT: bnez a2, .LBB9_4
326
308
; RV32I-NEXT: .LBB9_3:
327
- ; RV32I-NEXT: mv a6, a0
328
- ; RV32I-NEXT: mv a7, a1
329
- ; RV32I-NEXT: .LBB9_4:
330
309
; RV32I-NEXT: mv a0, a6
331
310
; RV32I-NEXT: mv a1, a7
311
+ ; RV32I-NEXT: .LBB9_4:
332
312
; RV32I-NEXT: ret
333
313
;
334
314
; RV32IB-LABEL: cmov_sge_i64:
@@ -344,11 +324,9 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
344
324
; RV32IB-NEXT: xori a2, a2, 1
345
325
; RV32IB-NEXT: bnez a2, .LBB9_4
346
326
; RV32IB-NEXT: .LBB9_3:
347
- ; RV32IB-NEXT: mv a6, a0
348
- ; RV32IB-NEXT: mv a7, a1
349
- ; RV32IB-NEXT: .LBB9_4:
350
327
; RV32IB-NEXT: mv a0, a6
351
328
; RV32IB-NEXT: mv a1, a7
329
+ ; RV32IB-NEXT: .LBB9_4:
352
330
; RV32IB-NEXT: ret
353
331
;
354
332
; RV32IBT-LABEL: cmov_sge_i64:
@@ -364,14 +342,12 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
364
342
; RV32IBT-NEXT: xori a2, a2, 1
365
343
; RV32IBT-NEXT: bnez a2, .LBB9_4
366
344
; RV32IBT-NEXT: .LBB9_3:
367
- ; RV32IBT-NEXT: mv a6, a0
368
- ; RV32IBT-NEXT: mv a7, a1
369
- ; RV32IBT-NEXT: .LBB9_4:
370
345
; RV32IBT-NEXT: mv a0, a6
371
346
; RV32IBT-NEXT: mv a1, a7
347
+ ; RV32IBT-NEXT: .LBB9_4:
372
348
; RV32IBT-NEXT: ret
373
349
%tobool = icmp sge i64 %b , %c
374
- %cond = select i1 %tobool , i64 %d , i64 %a
350
+ %cond = select i1 %tobool , i64 %a , i64 %d
375
351
ret i64 %cond
376
352
}
377
353
@@ -389,11 +365,9 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
389
365
; RV32I-NEXT: xori a2, a2, 1
390
366
; RV32I-NEXT: bnez a2, .LBB10_4
391
367
; RV32I-NEXT: .LBB10_3:
392
- ; RV32I-NEXT: mv a6, a0
393
- ; RV32I-NEXT: mv a7, a1
394
- ; RV32I-NEXT: .LBB10_4:
395
368
; RV32I-NEXT: mv a0, a6
396
369
; RV32I-NEXT: mv a1, a7
370
+ ; RV32I-NEXT: .LBB10_4:
397
371
; RV32I-NEXT: ret
398
372
;
399
373
; RV32IB-LABEL: cmov_ule_i64:
@@ -409,11 +383,9 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
409
383
; RV32IB-NEXT: xori a2, a2, 1
410
384
; RV32IB-NEXT: bnez a2, .LBB10_4
411
385
; RV32IB-NEXT: .LBB10_3:
412
- ; RV32IB-NEXT: mv a6, a0
413
- ; RV32IB-NEXT: mv a7, a1
414
- ; RV32IB-NEXT: .LBB10_4:
415
386
; RV32IB-NEXT: mv a0, a6
416
387
; RV32IB-NEXT: mv a1, a7
388
+ ; RV32IB-NEXT: .LBB10_4:
417
389
; RV32IB-NEXT: ret
418
390
;
419
391
; RV32IBT-LABEL: cmov_ule_i64:
@@ -429,14 +401,12 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
429
401
; RV32IBT-NEXT: xori a2, a2, 1
430
402
; RV32IBT-NEXT: bnez a2, .LBB10_4
431
403
; RV32IBT-NEXT: .LBB10_3:
432
- ; RV32IBT-NEXT: mv a6, a0
433
- ; RV32IBT-NEXT: mv a7, a1
434
- ; RV32IBT-NEXT: .LBB10_4:
435
404
; RV32IBT-NEXT: mv a0, a6
436
405
; RV32IBT-NEXT: mv a1, a7
406
+ ; RV32IBT-NEXT: .LBB10_4:
437
407
; RV32IBT-NEXT: ret
438
408
%tobool = icmp ule i64 %b , %c
439
- %cond = select i1 %tobool , i64 %d , i64 %a
409
+ %cond = select i1 %tobool , i64 %a , i64 %d
440
410
ret i64 %cond
441
411
}
442
412
@@ -454,11 +424,9 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
454
424
; RV32I-NEXT: xori a2, a2, 1
455
425
; RV32I-NEXT: bnez a2, .LBB11_4
456
426
; RV32I-NEXT: .LBB11_3:
457
- ; RV32I-NEXT: mv a6, a0
458
- ; RV32I-NEXT: mv a7, a1
459
- ; RV32I-NEXT: .LBB11_4:
460
427
; RV32I-NEXT: mv a0, a6
461
428
; RV32I-NEXT: mv a1, a7
429
+ ; RV32I-NEXT: .LBB11_4:
462
430
; RV32I-NEXT: ret
463
431
;
464
432
; RV32IB-LABEL: cmov_uge_i64:
@@ -474,11 +442,9 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
474
442
; RV32IB-NEXT: xori a2, a2, 1
475
443
; RV32IB-NEXT: bnez a2, .LBB11_4
476
444
; RV32IB-NEXT: .LBB11_3:
477
- ; RV32IB-NEXT: mv a6, a0
478
- ; RV32IB-NEXT: mv a7, a1
479
- ; RV32IB-NEXT: .LBB11_4:
480
445
; RV32IB-NEXT: mv a0, a6
481
446
; RV32IB-NEXT: mv a1, a7
447
+ ; RV32IB-NEXT: .LBB11_4:
482
448
; RV32IB-NEXT: ret
483
449
;
484
450
; RV32IBT-LABEL: cmov_uge_i64:
@@ -494,14 +460,12 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
494
460
; RV32IBT-NEXT: xori a2, a2, 1
495
461
; RV32IBT-NEXT: bnez a2, .LBB11_4
496
462
; RV32IBT-NEXT: .LBB11_3:
497
- ; RV32IBT-NEXT: mv a6, a0
498
- ; RV32IBT-NEXT: mv a7, a1
499
- ; RV32IBT-NEXT: .LBB11_4:
500
463
; RV32IBT-NEXT: mv a0, a6
501
464
; RV32IBT-NEXT: mv a1, a7
465
+ ; RV32IBT-NEXT: .LBB11_4:
502
466
; RV32IBT-NEXT: ret
503
467
%tobool = icmp uge i64 %b , %c
504
- %cond = select i1 %tobool , i64 %d , i64 %a
468
+ %cond = select i1 %tobool , i64 %a , i64 %d
505
469
ret i64 %cond
506
470
}
507
471
0 commit comments