@@ -221,8 +221,7 @@ define i8 @lrb_anyext(ptr %a, i64 %b) {
221
221
;
222
222
; RV32IZBAXQCISLS-LABEL: lrb_anyext:
223
223
; RV32IZBAXQCISLS: # %bb.0:
224
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
225
- ; RV32IZBAXQCISLS-NEXT: lbu a0, 0(a0)
224
+ ; RV32IZBAXQCISLS-NEXT: qc.lrbu a0, a0, a1, 0
226
225
; RV32IZBAXQCISLS-NEXT: ret
227
226
%1 = getelementptr i8 , ptr %a , i64 %b
228
227
%2 = load i8 , ptr %1 , align 1
@@ -254,8 +253,7 @@ define i64 @lrb(ptr %a, i64 %b) {
254
253
;
255
254
; RV32IZBAXQCISLS-LABEL: lrb:
256
255
; RV32IZBAXQCISLS: # %bb.0:
257
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
258
- ; RV32IZBAXQCISLS-NEXT: lb a1, 0(a0)
256
+ ; RV32IZBAXQCISLS-NEXT: qc.lrb a1, a0, a1, 0
259
257
; RV32IZBAXQCISLS-NEXT: srai a2, a1, 31
260
258
; RV32IZBAXQCISLS-NEXT: add a0, a1, a1
261
259
; RV32IZBAXQCISLS-NEXT: sltu a1, a0, a1
@@ -284,8 +282,7 @@ define i8 @lurb_anyext(ptr %a, i32 %b) {
284
282
;
285
283
; RV32IZBAXQCISLS-LABEL: lurb_anyext:
286
284
; RV32IZBAXQCISLS: # %bb.0:
287
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
288
- ; RV32IZBAXQCISLS-NEXT: lbu a0, 0(a0)
285
+ ; RV32IZBAXQCISLS-NEXT: qc.lrbu a0, a0, a1, 0
289
286
; RV32IZBAXQCISLS-NEXT: ret
290
287
%1 = zext i32 %b to i64
291
288
%2 = getelementptr i8 , ptr %a , i64 %1
@@ -318,8 +315,7 @@ define i64 @lurb(ptr %a, i32 %b) {
318
315
;
319
316
; RV32IZBAXQCISLS-LABEL: lurb:
320
317
; RV32IZBAXQCISLS: # %bb.0:
321
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
322
- ; RV32IZBAXQCISLS-NEXT: lb a1, 0(a0)
318
+ ; RV32IZBAXQCISLS-NEXT: qc.lrb a1, a0, a1, 0
323
319
; RV32IZBAXQCISLS-NEXT: srai a2, a1, 31
324
320
; RV32IZBAXQCISLS-NEXT: add a0, a1, a1
325
321
; RV32IZBAXQCISLS-NEXT: sltu a1, a0, a1
@@ -353,8 +349,7 @@ define i64 @lrbu(ptr %a, i64 %b) {
353
349
;
354
350
; RV32IZBAXQCISLS-LABEL: lrbu:
355
351
; RV32IZBAXQCISLS: # %bb.0:
356
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
357
- ; RV32IZBAXQCISLS-NEXT: lbu a1, 0(a0)
352
+ ; RV32IZBAXQCISLS-NEXT: qc.lrbu a1, a0, a1, 0
358
353
; RV32IZBAXQCISLS-NEXT: add a0, a1, a1
359
354
; RV32IZBAXQCISLS-NEXT: sltu a1, a0, a1
360
355
; RV32IZBAXQCISLS-NEXT: ret
@@ -384,8 +379,7 @@ define i64 @lurbu(ptr %a, i32 %b) {
384
379
;
385
380
; RV32IZBAXQCISLS-LABEL: lurbu:
386
381
; RV32IZBAXQCISLS: # %bb.0:
387
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
388
- ; RV32IZBAXQCISLS-NEXT: lbu a1, 0(a0)
382
+ ; RV32IZBAXQCISLS-NEXT: qc.lrbu a1, a0, a1, 0
389
383
; RV32IZBAXQCISLS-NEXT: add a0, a1, a1
390
384
; RV32IZBAXQCISLS-NEXT: sltu a1, a0, a1
391
385
; RV32IZBAXQCISLS-NEXT: ret
@@ -423,13 +417,14 @@ define i64 @lrd_2(ptr %a, i64 %b) {
423
417
;
424
418
; RV32IZBAXQCISLS-LABEL: lrd_2:
425
419
; RV32IZBAXQCISLS: # %bb.0:
426
- ; RV32IZBAXQCISLS-NEXT: sh3add a0, a1, a0
427
- ; RV32IZBAXQCISLS-NEXT: lw a1, 96(a0)
428
- ; RV32IZBAXQCISLS-NEXT: lw a2, 100(a0)
429
- ; RV32IZBAXQCISLS-NEXT: add a0, a1, a1
430
- ; RV32IZBAXQCISLS-NEXT: sltu a1, a0, a1
431
- ; RV32IZBAXQCISLS-NEXT: add a2, a2, a2
432
- ; RV32IZBAXQCISLS-NEXT: add a1, a2, a1
420
+ ; RV32IZBAXQCISLS-NEXT: addi a2, a0, 96
421
+ ; RV32IZBAXQCISLS-NEXT: qc.lrw a2, a2, a1, 3
422
+ ; RV32IZBAXQCISLS-NEXT: addi a0, a0, 100
423
+ ; RV32IZBAXQCISLS-NEXT: qc.lrw a1, a0, a1, 3
424
+ ; RV32IZBAXQCISLS-NEXT: add a0, a2, a2
425
+ ; RV32IZBAXQCISLS-NEXT: sltu a2, a0, a2
426
+ ; RV32IZBAXQCISLS-NEXT: add a1, a1, a1
427
+ ; RV32IZBAXQCISLS-NEXT: add a1, a1, a2
433
428
; RV32IZBAXQCISLS-NEXT: ret
434
429
%1 = add i64 %b , 12
435
430
%2 = getelementptr i64 , ptr %a , i64 %1
@@ -456,8 +451,7 @@ define void @srb(ptr %a, i64 %b, i8 %c) {
456
451
; RV32IZBAXQCISLS-LABEL: srb:
457
452
; RV32IZBAXQCISLS: # %bb.0:
458
453
; RV32IZBAXQCISLS-NEXT: add a3, a3, a3
459
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
460
- ; RV32IZBAXQCISLS-NEXT: sb a3, 0(a0)
454
+ ; RV32IZBAXQCISLS-NEXT: qc.srb a3, a0, a1, 0
461
455
; RV32IZBAXQCISLS-NEXT: ret
462
456
%1 = add i8 %c , %c
463
457
%2 = getelementptr i8 , ptr %a , i64 %b
@@ -483,8 +477,7 @@ define void @surb(ptr %a, i32 %b, i8 %c) {
483
477
; RV32IZBAXQCISLS-LABEL: surb:
484
478
; RV32IZBAXQCISLS: # %bb.0:
485
479
; RV32IZBAXQCISLS-NEXT: add a2, a2, a2
486
- ; RV32IZBAXQCISLS-NEXT: add a0, a0, a1
487
- ; RV32IZBAXQCISLS-NEXT: sb a2, 0(a0)
480
+ ; RV32IZBAXQCISLS-NEXT: qc.srb a2, a0, a1, 0
488
481
; RV32IZBAXQCISLS-NEXT: ret
489
482
%1 = zext i32 %b to i64
490
483
%2 = add i8 %c , %c
@@ -512,10 +505,10 @@ define i64 @lrd_large_shift(ptr %a, i64 %b) {
512
505
;
513
506
; RV32IZBAXQCISLS-LABEL: lrd_large_shift:
514
507
; RV32IZBAXQCISLS: # %bb.0:
515
- ; RV32IZBAXQCISLS-NEXT: slli a1, a1, 5
516
- ; RV32IZBAXQCISLS-NEXT: add a1, a1, a0
517
- ; RV32IZBAXQCISLS-NEXT: lw a0, 384(a1)
518
- ; RV32IZBAXQCISLS-NEXT: lw a1, 388(a1)
508
+ ; RV32IZBAXQCISLS-NEXT: addi a2, a0, 384
509
+ ; RV32IZBAXQCISLS-NEXT: addi a3, a0, 388
510
+ ; RV32IZBAXQCISLS-NEXT: qc.lrw a0, a2, a1, 5
511
+ ; RV32IZBAXQCISLS-NEXT: qc.lrw a1, a3, a1, 5
519
512
; RV32IZBAXQCISLS-NEXT: ret
520
513
%1 = add i64 %b , 12
521
514
%2 = shl i64 %1 , 2
0 commit comments