Skip to content

Commit bf1aa5d

Browse files
mundaymlenary
authored andcommitted
[RISCV][NFC] Fix order of parameters in cmov ge/le tests
The first parameter should be selected if the condition is true and the last parameter if the condition is false. Prior to this change it was the other way round which was confusing. Differential Revision: https://reviews.llvm.org/D94729
1 parent 5bf47e1 commit bf1aa5d

File tree

2 files changed

+64
-124
lines changed

2 files changed

+64
-124
lines changed

llvm/test/CodeGen/RISCV/rv32Zbt.ll

Lines changed: 32 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -91,30 +91,27 @@ define i32 @cmov_sle_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
9191
; RV32I: # %bb.0:
9292
; RV32I-NEXT: bge a2, a1, .LBB3_2
9393
; RV32I-NEXT: # %bb.1:
94-
; RV32I-NEXT: mv a3, a0
95-
; RV32I-NEXT: .LBB3_2:
9694
; RV32I-NEXT: mv a0, a3
95+
; RV32I-NEXT: .LBB3_2:
9796
; RV32I-NEXT: ret
9897
;
9998
; RV32IB-LABEL: cmov_sle_i32:
10099
; RV32IB: # %bb.0:
101100
; RV32IB-NEXT: bge a2, a1, .LBB3_2
102101
; RV32IB-NEXT: # %bb.1:
103-
; RV32IB-NEXT: mv a3, a0
104-
; RV32IB-NEXT: .LBB3_2:
105102
; RV32IB-NEXT: mv a0, a3
103+
; RV32IB-NEXT: .LBB3_2:
106104
; RV32IB-NEXT: ret
107105
;
108106
; RV32IBT-LABEL: cmov_sle_i32:
109107
; RV32IBT: # %bb.0:
110108
; RV32IBT-NEXT: bge a2, a1, .LBB3_2
111109
; RV32IBT-NEXT: # %bb.1:
112-
; RV32IBT-NEXT: mv a3, a0
113-
; RV32IBT-NEXT: .LBB3_2:
114110
; RV32IBT-NEXT: mv a0, a3
111+
; RV32IBT-NEXT: .LBB3_2:
115112
; RV32IBT-NEXT: ret
116113
%tobool = icmp sle i32 %b, %c
117-
%cond = select i1 %tobool, i32 %d, i32 %a
114+
%cond = select i1 %tobool, i32 %a, i32 %d
118115
ret i32 %cond
119116
}
120117

@@ -123,30 +120,27 @@ define i32 @cmov_sge_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
123120
; RV32I: # %bb.0:
124121
; RV32I-NEXT: bge a1, a2, .LBB4_2
125122
; RV32I-NEXT: # %bb.1:
126-
; RV32I-NEXT: mv a3, a0
127-
; RV32I-NEXT: .LBB4_2:
128123
; RV32I-NEXT: mv a0, a3
124+
; RV32I-NEXT: .LBB4_2:
129125
; RV32I-NEXT: ret
130126
;
131127
; RV32IB-LABEL: cmov_sge_i32:
132128
; RV32IB: # %bb.0:
133129
; RV32IB-NEXT: bge a1, a2, .LBB4_2
134130
; RV32IB-NEXT: # %bb.1:
135-
; RV32IB-NEXT: mv a3, a0
136-
; RV32IB-NEXT: .LBB4_2:
137131
; RV32IB-NEXT: mv a0, a3
132+
; RV32IB-NEXT: .LBB4_2:
138133
; RV32IB-NEXT: ret
139134
;
140135
; RV32IBT-LABEL: cmov_sge_i32:
141136
; RV32IBT: # %bb.0:
142137
; RV32IBT-NEXT: bge a1, a2, .LBB4_2
143138
; RV32IBT-NEXT: # %bb.1:
144-
; RV32IBT-NEXT: mv a3, a0
145-
; RV32IBT-NEXT: .LBB4_2:
146139
; RV32IBT-NEXT: mv a0, a3
140+
; RV32IBT-NEXT: .LBB4_2:
147141
; RV32IBT-NEXT: ret
148142
%tobool = icmp sge i32 %b, %c
149-
%cond = select i1 %tobool, i32 %d, i32 %a
143+
%cond = select i1 %tobool, i32 %a, i32 %d
150144
ret i32 %cond
151145
}
152146

@@ -155,30 +149,27 @@ define i32 @cmov_ule_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
155149
; RV32I: # %bb.0:
156150
; RV32I-NEXT: bgeu a2, a1, .LBB5_2
157151
; RV32I-NEXT: # %bb.1:
158-
; RV32I-NEXT: mv a3, a0
159-
; RV32I-NEXT: .LBB5_2:
160152
; RV32I-NEXT: mv a0, a3
153+
; RV32I-NEXT: .LBB5_2:
161154
; RV32I-NEXT: ret
162155
;
163156
; RV32IB-LABEL: cmov_ule_i32:
164157
; RV32IB: # %bb.0:
165158
; RV32IB-NEXT: bgeu a2, a1, .LBB5_2
166159
; RV32IB-NEXT: # %bb.1:
167-
; RV32IB-NEXT: mv a3, a0
168-
; RV32IB-NEXT: .LBB5_2:
169160
; RV32IB-NEXT: mv a0, a3
161+
; RV32IB-NEXT: .LBB5_2:
170162
; RV32IB-NEXT: ret
171163
;
172164
; RV32IBT-LABEL: cmov_ule_i32:
173165
; RV32IBT: # %bb.0:
174166
; RV32IBT-NEXT: bgeu a2, a1, .LBB5_2
175167
; RV32IBT-NEXT: # %bb.1:
176-
; RV32IBT-NEXT: mv a3, a0
177-
; RV32IBT-NEXT: .LBB5_2:
178168
; RV32IBT-NEXT: mv a0, a3
169+
; RV32IBT-NEXT: .LBB5_2:
179170
; RV32IBT-NEXT: ret
180171
%tobool = icmp ule i32 %b, %c
181-
%cond = select i1 %tobool, i32 %d, i32 %a
172+
%cond = select i1 %tobool, i32 %a, i32 %d
182173
ret i32 %cond
183174
}
184175

@@ -187,30 +178,27 @@ define i32 @cmov_uge_i32(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
187178
; RV32I: # %bb.0:
188179
; RV32I-NEXT: bgeu a1, a2, .LBB6_2
189180
; RV32I-NEXT: # %bb.1:
190-
; RV32I-NEXT: mv a3, a0
191-
; RV32I-NEXT: .LBB6_2:
192181
; RV32I-NEXT: mv a0, a3
182+
; RV32I-NEXT: .LBB6_2:
193183
; RV32I-NEXT: ret
194184
;
195185
; RV32IB-LABEL: cmov_uge_i32:
196186
; RV32IB: # %bb.0:
197187
; RV32IB-NEXT: bgeu a1, a2, .LBB6_2
198188
; RV32IB-NEXT: # %bb.1:
199-
; RV32IB-NEXT: mv a3, a0
200-
; RV32IB-NEXT: .LBB6_2:
201189
; RV32IB-NEXT: mv a0, a3
190+
; RV32IB-NEXT: .LBB6_2:
202191
; RV32IB-NEXT: ret
203192
;
204193
; RV32IBT-LABEL: cmov_uge_i32:
205194
; RV32IBT: # %bb.0:
206195
; RV32IBT-NEXT: bgeu a1, a2, .LBB6_2
207196
; RV32IBT-NEXT: # %bb.1:
208-
; RV32IBT-NEXT: mv a3, a0
209-
; RV32IBT-NEXT: .LBB6_2:
210197
; RV32IBT-NEXT: mv a0, a3
198+
; RV32IBT-NEXT: .LBB6_2:
211199
; RV32IBT-NEXT: ret
212200
%tobool = icmp uge i32 %b, %c
213-
%cond = select i1 %tobool, i32 %d, i32 %a
201+
%cond = select i1 %tobool, i32 %a, i32 %d
214202
ret i32 %cond
215203
}
216204

@@ -259,11 +247,9 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
259247
; RV32I-NEXT: xori a2, a2, 1
260248
; RV32I-NEXT: bnez a2, .LBB8_4
261249
; RV32I-NEXT: .LBB8_3:
262-
; RV32I-NEXT: mv a6, a0
263-
; RV32I-NEXT: mv a7, a1
264-
; RV32I-NEXT: .LBB8_4:
265250
; RV32I-NEXT: mv a0, a6
266251
; RV32I-NEXT: mv a1, a7
252+
; RV32I-NEXT: .LBB8_4:
267253
; RV32I-NEXT: ret
268254
;
269255
; RV32IB-LABEL: cmov_sle_i64:
@@ -279,11 +265,9 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
279265
; RV32IB-NEXT: xori a2, a2, 1
280266
; RV32IB-NEXT: bnez a2, .LBB8_4
281267
; RV32IB-NEXT: .LBB8_3:
282-
; RV32IB-NEXT: mv a6, a0
283-
; RV32IB-NEXT: mv a7, a1
284-
; RV32IB-NEXT: .LBB8_4:
285268
; RV32IB-NEXT: mv a0, a6
286269
; RV32IB-NEXT: mv a1, a7
270+
; RV32IB-NEXT: .LBB8_4:
287271
; RV32IB-NEXT: ret
288272
;
289273
; RV32IBT-LABEL: cmov_sle_i64:
@@ -299,14 +283,12 @@ define i64 @cmov_sle_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
299283
; RV32IBT-NEXT: xori a2, a2, 1
300284
; RV32IBT-NEXT: bnez a2, .LBB8_4
301285
; RV32IBT-NEXT: .LBB8_3:
302-
; RV32IBT-NEXT: mv a6, a0
303-
; RV32IBT-NEXT: mv a7, a1
304-
; RV32IBT-NEXT: .LBB8_4:
305286
; RV32IBT-NEXT: mv a0, a6
306287
; RV32IBT-NEXT: mv a1, a7
288+
; RV32IBT-NEXT: .LBB8_4:
307289
; RV32IBT-NEXT: ret
308290
%tobool = icmp sle i64 %b, %c
309-
%cond = select i1 %tobool, i64 %d, i64 %a
291+
%cond = select i1 %tobool, i64 %a, i64 %d
310292
ret i64 %cond
311293
}
312294

@@ -324,11 +306,9 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
324306
; RV32I-NEXT: xori a2, a2, 1
325307
; RV32I-NEXT: bnez a2, .LBB9_4
326308
; RV32I-NEXT: .LBB9_3:
327-
; RV32I-NEXT: mv a6, a0
328-
; RV32I-NEXT: mv a7, a1
329-
; RV32I-NEXT: .LBB9_4:
330309
; RV32I-NEXT: mv a0, a6
331310
; RV32I-NEXT: mv a1, a7
311+
; RV32I-NEXT: .LBB9_4:
332312
; RV32I-NEXT: ret
333313
;
334314
; RV32IB-LABEL: cmov_sge_i64:
@@ -344,11 +324,9 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
344324
; RV32IB-NEXT: xori a2, a2, 1
345325
; RV32IB-NEXT: bnez a2, .LBB9_4
346326
; RV32IB-NEXT: .LBB9_3:
347-
; RV32IB-NEXT: mv a6, a0
348-
; RV32IB-NEXT: mv a7, a1
349-
; RV32IB-NEXT: .LBB9_4:
350327
; RV32IB-NEXT: mv a0, a6
351328
; RV32IB-NEXT: mv a1, a7
329+
; RV32IB-NEXT: .LBB9_4:
352330
; RV32IB-NEXT: ret
353331
;
354332
; RV32IBT-LABEL: cmov_sge_i64:
@@ -364,14 +342,12 @@ define i64 @cmov_sge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
364342
; RV32IBT-NEXT: xori a2, a2, 1
365343
; RV32IBT-NEXT: bnez a2, .LBB9_4
366344
; RV32IBT-NEXT: .LBB9_3:
367-
; RV32IBT-NEXT: mv a6, a0
368-
; RV32IBT-NEXT: mv a7, a1
369-
; RV32IBT-NEXT: .LBB9_4:
370345
; RV32IBT-NEXT: mv a0, a6
371346
; RV32IBT-NEXT: mv a1, a7
347+
; RV32IBT-NEXT: .LBB9_4:
372348
; RV32IBT-NEXT: ret
373349
%tobool = icmp sge i64 %b, %c
374-
%cond = select i1 %tobool, i64 %d, i64 %a
350+
%cond = select i1 %tobool, i64 %a, i64 %d
375351
ret i64 %cond
376352
}
377353

@@ -389,11 +365,9 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
389365
; RV32I-NEXT: xori a2, a2, 1
390366
; RV32I-NEXT: bnez a2, .LBB10_4
391367
; RV32I-NEXT: .LBB10_3:
392-
; RV32I-NEXT: mv a6, a0
393-
; RV32I-NEXT: mv a7, a1
394-
; RV32I-NEXT: .LBB10_4:
395368
; RV32I-NEXT: mv a0, a6
396369
; RV32I-NEXT: mv a1, a7
370+
; RV32I-NEXT: .LBB10_4:
397371
; RV32I-NEXT: ret
398372
;
399373
; RV32IB-LABEL: cmov_ule_i64:
@@ -409,11 +383,9 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
409383
; RV32IB-NEXT: xori a2, a2, 1
410384
; RV32IB-NEXT: bnez a2, .LBB10_4
411385
; RV32IB-NEXT: .LBB10_3:
412-
; RV32IB-NEXT: mv a6, a0
413-
; RV32IB-NEXT: mv a7, a1
414-
; RV32IB-NEXT: .LBB10_4:
415386
; RV32IB-NEXT: mv a0, a6
416387
; RV32IB-NEXT: mv a1, a7
388+
; RV32IB-NEXT: .LBB10_4:
417389
; RV32IB-NEXT: ret
418390
;
419391
; RV32IBT-LABEL: cmov_ule_i64:
@@ -429,14 +401,12 @@ define i64 @cmov_ule_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
429401
; RV32IBT-NEXT: xori a2, a2, 1
430402
; RV32IBT-NEXT: bnez a2, .LBB10_4
431403
; RV32IBT-NEXT: .LBB10_3:
432-
; RV32IBT-NEXT: mv a6, a0
433-
; RV32IBT-NEXT: mv a7, a1
434-
; RV32IBT-NEXT: .LBB10_4:
435404
; RV32IBT-NEXT: mv a0, a6
436405
; RV32IBT-NEXT: mv a1, a7
406+
; RV32IBT-NEXT: .LBB10_4:
437407
; RV32IBT-NEXT: ret
438408
%tobool = icmp ule i64 %b, %c
439-
%cond = select i1 %tobool, i64 %d, i64 %a
409+
%cond = select i1 %tobool, i64 %a, i64 %d
440410
ret i64 %cond
441411
}
442412

@@ -454,11 +424,9 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
454424
; RV32I-NEXT: xori a2, a2, 1
455425
; RV32I-NEXT: bnez a2, .LBB11_4
456426
; RV32I-NEXT: .LBB11_3:
457-
; RV32I-NEXT: mv a6, a0
458-
; RV32I-NEXT: mv a7, a1
459-
; RV32I-NEXT: .LBB11_4:
460427
; RV32I-NEXT: mv a0, a6
461428
; RV32I-NEXT: mv a1, a7
429+
; RV32I-NEXT: .LBB11_4:
462430
; RV32I-NEXT: ret
463431
;
464432
; RV32IB-LABEL: cmov_uge_i64:
@@ -474,11 +442,9 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
474442
; RV32IB-NEXT: xori a2, a2, 1
475443
; RV32IB-NEXT: bnez a2, .LBB11_4
476444
; RV32IB-NEXT: .LBB11_3:
477-
; RV32IB-NEXT: mv a6, a0
478-
; RV32IB-NEXT: mv a7, a1
479-
; RV32IB-NEXT: .LBB11_4:
480445
; RV32IB-NEXT: mv a0, a6
481446
; RV32IB-NEXT: mv a1, a7
447+
; RV32IB-NEXT: .LBB11_4:
482448
; RV32IB-NEXT: ret
483449
;
484450
; RV32IBT-LABEL: cmov_uge_i64:
@@ -494,14 +460,12 @@ define i64 @cmov_uge_i64(i64 %a, i64 %b, i64 %c, i64 %d) nounwind {
494460
; RV32IBT-NEXT: xori a2, a2, 1
495461
; RV32IBT-NEXT: bnez a2, .LBB11_4
496462
; RV32IBT-NEXT: .LBB11_3:
497-
; RV32IBT-NEXT: mv a6, a0
498-
; RV32IBT-NEXT: mv a7, a1
499-
; RV32IBT-NEXT: .LBB11_4:
500463
; RV32IBT-NEXT: mv a0, a6
501464
; RV32IBT-NEXT: mv a1, a7
465+
; RV32IBT-NEXT: .LBB11_4:
502466
; RV32IBT-NEXT: ret
503467
%tobool = icmp uge i64 %b, %c
504-
%cond = select i1 %tobool, i64 %d, i64 %a
468+
%cond = select i1 %tobool, i64 %a, i64 %d
505469
ret i64 %cond
506470
}
507471

0 commit comments

Comments
 (0)