@@ -516,20 +516,15 @@ define i32 @rotl_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
516516define i32 @rotl_32_mask_or_64_or_32 (i32 %x , i32 %y ) nounwind {
517517; RV32I-LABEL: rotl_32_mask_or_64_or_32:
518518; RV32I: # %bb.0:
519- ; RV32I-NEXT: ori a2, a1, 64
520- ; RV32I-NEXT: sll a2, a0, a2
521519; RV32I-NEXT: neg a1, a1
522520; RV32I-NEXT: ori a1, a1, 32
523521; RV32I-NEXT: srl a0, a0, a1
524- ; RV32I-NEXT: or a0, a2, a0
525522; RV32I-NEXT: ret
526523;
527524; RV64I-LABEL: rotl_32_mask_or_64_or_32:
528525; RV64I: # %bb.0:
529- ; RV64I-NEXT: sllw a2, a0, a1
530526; RV64I-NEXT: negw a1, a1
531527; RV64I-NEXT: srlw a0, a0, a1
532- ; RV64I-NEXT: or a0, a2, a0
533528; RV64I-NEXT: ret
534529;
535530; RV32ZBB-LABEL: rotl_32_mask_or_64_or_32:
@@ -670,20 +665,13 @@ define i32 @rotr_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
670665define i32 @rotr_32_mask_or_64_or_32 (i32 %x , i32 %y ) nounwind {
671666; RV32I-LABEL: rotr_32_mask_or_64_or_32:
672667; RV32I: # %bb.0:
673- ; RV32I-NEXT: ori a2, a1, 64
674- ; RV32I-NEXT: srl a2, a0, a2
675- ; RV32I-NEXT: neg a1, a1
676- ; RV32I-NEXT: ori a1, a1, 32
677- ; RV32I-NEXT: sll a0, a0, a1
678- ; RV32I-NEXT: or a0, a2, a0
668+ ; RV32I-NEXT: ori a1, a1, 64
669+ ; RV32I-NEXT: srl a0, a0, a1
679670; RV32I-NEXT: ret
680671;
681672; RV64I-LABEL: rotr_32_mask_or_64_or_32:
682673; RV64I: # %bb.0:
683- ; RV64I-NEXT: srlw a2, a0, a1
684- ; RV64I-NEXT: negw a1, a1
685- ; RV64I-NEXT: sllw a0, a0, a1
686- ; RV64I-NEXT: or a0, a2, a0
674+ ; RV64I-NEXT: srlw a0, a0, a1
687675; RV64I-NEXT: ret
688676;
689677; RV32ZBB-LABEL: rotr_32_mask_or_64_or_32:
@@ -1013,28 +1001,23 @@ define i64 @rotl_64_mask_and_127_and_63(i64 %x, i64 %y) nounwind {
10131001define i64 @rotl_64_mask_or_128_or_64 (i64 %x , i64 %y ) nounwind {
10141002; RV32I-LABEL: rotl_64_mask_or_128_or_64:
10151003; RV32I: # %bb.0:
1016- ; RV32I-NEXT: sll a3, a0, a2
10171004; RV32I-NEXT: neg a0, a2
10181005; RV32I-NEXT: srl a0, a1, a0
1019- ; RV32I-NEXT: mv a1, a3
1006+ ; RV32I-NEXT: li a1, 0
10201007; RV32I-NEXT: ret
10211008;
10221009; RV64I-LABEL: rotl_64_mask_or_128_or_64:
10231010; RV64I: # %bb.0:
1024- ; RV64I-NEXT: ori a2, a1, 128
1025- ; RV64I-NEXT: sll a2, a0, a2
10261011; RV64I-NEXT: negw a1, a1
10271012; RV64I-NEXT: ori a1, a1, 64
10281013; RV64I-NEXT: srl a0, a0, a1
1029- ; RV64I-NEXT: or a0, a2, a0
10301014; RV64I-NEXT: ret
10311015;
10321016; RV32ZBB-LABEL: rotl_64_mask_or_128_or_64:
10331017; RV32ZBB: # %bb.0:
1034- ; RV32ZBB-NEXT: sll a3, a0, a2
10351018; RV32ZBB-NEXT: neg a0, a2
10361019; RV32ZBB-NEXT: srl a0, a1, a0
1037- ; RV32ZBB-NEXT: mv a1, a3
1020+ ; RV32ZBB-NEXT: li a1, 0
10381021; RV32ZBB-NEXT: ret
10391022;
10401023; RV64ZBB-LABEL: rotl_64_mask_or_128_or_64:
@@ -1044,10 +1027,9 @@ define i64 @rotl_64_mask_or_128_or_64(i64 %x, i64 %y) nounwind {
10441027;
10451028; RV32XTHEADBB-LABEL: rotl_64_mask_or_128_or_64:
10461029; RV32XTHEADBB: # %bb.0:
1047- ; RV32XTHEADBB-NEXT: sll a3, a0, a2
10481030; RV32XTHEADBB-NEXT: neg a0, a2
10491031; RV32XTHEADBB-NEXT: srl a0, a1, a0
1050- ; RV32XTHEADBB-NEXT: mv a1, a3
1032+ ; RV32XTHEADBB-NEXT: li a1, 0
10511033; RV32XTHEADBB-NEXT: ret
10521034;
10531035; RV64XTHEADBB-LABEL: rotl_64_mask_or_128_or_64:
@@ -1359,28 +1341,20 @@ define i64 @rotr_64_mask_and_127_and_63(i64 %x, i64 %y) nounwind {
13591341define i64 @rotr_64_mask_or_128_or_64 (i64 %x , i64 %y ) nounwind {
13601342; RV32I-LABEL: rotr_64_mask_or_128_or_64:
13611343; RV32I: # %bb.0:
1362- ; RV32I-NEXT: srl a3, a1, a2
1363- ; RV32I-NEXT: neg a1, a2
1364- ; RV32I-NEXT: sll a1, a0, a1
1365- ; RV32I-NEXT: mv a0, a3
1344+ ; RV32I-NEXT: srl a0, a1, a2
1345+ ; RV32I-NEXT: li a1, 0
13661346; RV32I-NEXT: ret
13671347;
13681348; RV64I-LABEL: rotr_64_mask_or_128_or_64:
13691349; RV64I: # %bb.0:
1370- ; RV64I-NEXT: ori a2, a1, 128
1371- ; RV64I-NEXT: srl a2, a0, a2
1372- ; RV64I-NEXT: negw a1, a1
1373- ; RV64I-NEXT: ori a1, a1, 64
1374- ; RV64I-NEXT: sll a0, a0, a1
1375- ; RV64I-NEXT: or a0, a2, a0
1350+ ; RV64I-NEXT: ori a1, a1, 128
1351+ ; RV64I-NEXT: srl a0, a0, a1
13761352; RV64I-NEXT: ret
13771353;
13781354; RV32ZBB-LABEL: rotr_64_mask_or_128_or_64:
13791355; RV32ZBB: # %bb.0:
1380- ; RV32ZBB-NEXT: srl a3, a1, a2
1381- ; RV32ZBB-NEXT: neg a1, a2
1382- ; RV32ZBB-NEXT: sll a1, a0, a1
1383- ; RV32ZBB-NEXT: mv a0, a3
1356+ ; RV32ZBB-NEXT: srl a0, a1, a2
1357+ ; RV32ZBB-NEXT: li a1, 0
13841358; RV32ZBB-NEXT: ret
13851359;
13861360; RV64ZBB-LABEL: rotr_64_mask_or_128_or_64:
@@ -1390,10 +1364,8 @@ define i64 @rotr_64_mask_or_128_or_64(i64 %x, i64 %y) nounwind {
13901364;
13911365; RV32XTHEADBB-LABEL: rotr_64_mask_or_128_or_64:
13921366; RV32XTHEADBB: # %bb.0:
1393- ; RV32XTHEADBB-NEXT: srl a3, a1, a2
1394- ; RV32XTHEADBB-NEXT: neg a1, a2
1395- ; RV32XTHEADBB-NEXT: sll a1, a0, a1
1396- ; RV32XTHEADBB-NEXT: mv a0, a3
1367+ ; RV32XTHEADBB-NEXT: srl a0, a1, a2
1368+ ; RV32XTHEADBB-NEXT: li a1, 0
13971369; RV32XTHEADBB-NEXT: ret
13981370;
13991371; RV64XTHEADBB-LABEL: rotr_64_mask_or_128_or_64:
0 commit comments