@@ -62,37 +62,30 @@ define i64 @rotate_l_nez(i64 %x, i64 %rot.amt, i1 %cond) {
6262; RV32ZICOND-LABEL: rotate_l_nez: 
6363; RV32ZICOND:       # %bb.0: 
6464; RV32ZICOND-NEXT:    andi a4, a4, 1 
65- ; RV32ZICOND-NEXT:    bexti a3, a2, 5 
66- ; RV32ZICOND-NEXT:    not a5, a2 
67- ; RV32ZICOND-NEXT:    czero.nez a6, a1, a3 
68- ; RV32ZICOND-NEXT:    czero.eqz a7, a0, a3 
69- ; RV32ZICOND-NEXT:    czero.nez t0, a0, a3 
70- ; RV32ZICOND-NEXT:    czero.eqz a3, a1, a3 
71- ; RV32ZICOND-NEXT:    czero.eqz a0, a0, a4 
72- ; RV32ZICOND-NEXT:    czero.eqz a1, a1, a4 
73- ; RV32ZICOND-NEXT:    or a6, a7, a6 
74- ; RV32ZICOND-NEXT:    or a3, a3, t0 
75- ; RV32ZICOND-NEXT:    sll a7, a6, a2 
76- ; RV32ZICOND-NEXT:    srli t0, a3, 1 
77- ; RV32ZICOND-NEXT:    sll a2, a3, a2 
78- ; RV32ZICOND-NEXT:    srli a3, a6, 1 
79- ; RV32ZICOND-NEXT:    srl a6, t0, a5 
80- ; RV32ZICOND-NEXT:    srl a3, a3, a5 
81- ; RV32ZICOND-NEXT:    or a5, a7, a6 
82- ; RV32ZICOND-NEXT:    or a2, a2, a3 
8365; RV32ZICOND-NEXT:    czero.nez a2, a2, a4 
84- ; RV32ZICOND-NEXT:    czero.nez a3, a5, a4 
85- ; RV32ZICOND-NEXT:    or a0, a0, a2 
86- ; RV32ZICOND-NEXT:    or a1, a1, a3 
66+ ; RV32ZICOND-NEXT:    bexti a3, a2, 5 
67+ ; RV32ZICOND-NEXT:    czero.nez a4, a0, a3 
68+ ; RV32ZICOND-NEXT:    czero.eqz a5, a1, a3 
69+ ; RV32ZICOND-NEXT:    czero.nez a1, a1, a3 
70+ ; RV32ZICOND-NEXT:    czero.eqz a0, a0, a3 
71+ ; RV32ZICOND-NEXT:    not a3, a2 
72+ ; RV32ZICOND-NEXT:    or a4, a5, a4 
73+ ; RV32ZICOND-NEXT:    or a0, a0, a1 
74+ ; RV32ZICOND-NEXT:    sll a1, a4, a2 
75+ ; RV32ZICOND-NEXT:    srli a5, a0, 1 
76+ ; RV32ZICOND-NEXT:    sll a2, a0, a2 
77+ ; RV32ZICOND-NEXT:    srli a4, a4, 1 
78+ ; RV32ZICOND-NEXT:    srl a0, a5, a3 
79+ ; RV32ZICOND-NEXT:    srl a3, a4, a3 
80+ ; RV32ZICOND-NEXT:    or a0, a1, a0 
81+ ; RV32ZICOND-NEXT:    or a1, a2, a3 
8782; RV32ZICOND-NEXT:    ret 
8883; 
8984; RV64ZICOND-LABEL: rotate_l_nez: 
9085; RV64ZICOND:       # %bb.0: 
9186; RV64ZICOND-NEXT:    andi a2, a2, 1 
92- ; RV64ZICOND-NEXT:    rol a1, a0, a1 
9387; RV64ZICOND-NEXT:    czero.nez a1, a1, a2 
94- ; RV64ZICOND-NEXT:    czero.eqz a0, a0, a2 
95- ; RV64ZICOND-NEXT:    or a0, a0, a1 
88+ ; RV64ZICOND-NEXT:    rol a0, a0, a1 
9689; RV64ZICOND-NEXT:    ret 
9790  %6  = call  i64  @llvm.fshl.i64 (i64  %x , i64  %x , i64  %rot.amt )
9891  %7  = select  i1  %cond , i64  %x , i64  %6 
@@ -104,37 +97,30 @@ define i64 @rotate_l_eqz(i64 %x, i64 %rot.amt, i1 %cond) {
10497; RV32ZICOND-LABEL: rotate_l_eqz: 
10598; RV32ZICOND:       # %bb.0: 
10699; RV32ZICOND-NEXT:    andi a4, a4, 1 
107- ; RV32ZICOND-NEXT:    bexti a3, a2, 5 
108- ; RV32ZICOND-NEXT:    not a5, a2 
109- ; RV32ZICOND-NEXT:    czero.nez a6, a1, a3 
110- ; RV32ZICOND-NEXT:    czero.eqz a7, a0, a3 
111- ; RV32ZICOND-NEXT:    czero.nez t0, a0, a3 
112- ; RV32ZICOND-NEXT:    czero.eqz a3, a1, a3 
113- ; RV32ZICOND-NEXT:    czero.nez a0, a0, a4 
114- ; RV32ZICOND-NEXT:    czero.nez a1, a1, a4 
115- ; RV32ZICOND-NEXT:    or a6, a7, a6 
116- ; RV32ZICOND-NEXT:    or a3, a3, t0 
117- ; RV32ZICOND-NEXT:    sll a7, a6, a2 
118- ; RV32ZICOND-NEXT:    srli t0, a3, 1 
119- ; RV32ZICOND-NEXT:    sll a2, a3, a2 
120- ; RV32ZICOND-NEXT:    srli a3, a6, 1 
121- ; RV32ZICOND-NEXT:    srl a6, t0, a5 
122- ; RV32ZICOND-NEXT:    srl a3, a3, a5 
123- ; RV32ZICOND-NEXT:    or a5, a7, a6 
124- ; RV32ZICOND-NEXT:    or a2, a2, a3 
125100; RV32ZICOND-NEXT:    czero.eqz a2, a2, a4 
126- ; RV32ZICOND-NEXT:    czero.eqz a3, a5, a4 
127- ; RV32ZICOND-NEXT:    or a0, a2, a0 
128- ; RV32ZICOND-NEXT:    or a1, a3, a1 
101+ ; RV32ZICOND-NEXT:    bexti a3, a2, 5 
102+ ; RV32ZICOND-NEXT:    czero.nez a4, a0, a3 
103+ ; RV32ZICOND-NEXT:    czero.eqz a5, a1, a3 
104+ ; RV32ZICOND-NEXT:    czero.nez a1, a1, a3 
105+ ; RV32ZICOND-NEXT:    czero.eqz a0, a0, a3 
106+ ; RV32ZICOND-NEXT:    not a3, a2 
107+ ; RV32ZICOND-NEXT:    or a4, a5, a4 
108+ ; RV32ZICOND-NEXT:    or a0, a0, a1 
109+ ; RV32ZICOND-NEXT:    sll a1, a4, a2 
110+ ; RV32ZICOND-NEXT:    srli a5, a0, 1 
111+ ; RV32ZICOND-NEXT:    sll a2, a0, a2 
112+ ; RV32ZICOND-NEXT:    srli a4, a4, 1 
113+ ; RV32ZICOND-NEXT:    srl a0, a5, a3 
114+ ; RV32ZICOND-NEXT:    srl a3, a4, a3 
115+ ; RV32ZICOND-NEXT:    or a0, a1, a0 
116+ ; RV32ZICOND-NEXT:    or a1, a2, a3 
129117; RV32ZICOND-NEXT:    ret 
130118; 
131119; RV64ZICOND-LABEL: rotate_l_eqz: 
132120; RV64ZICOND:       # %bb.0: 
133121; RV64ZICOND-NEXT:    andi a2, a2, 1 
134- ; RV64ZICOND-NEXT:    rol a1, a0, a1 
135- ; RV64ZICOND-NEXT:    czero.nez a0, a0, a2 
136122; RV64ZICOND-NEXT:    czero.eqz a1, a1, a2 
137- ; RV64ZICOND-NEXT:    or  a0, a1, a0  
123+ ; RV64ZICOND-NEXT:    rol  a0, a0, a1  
138124; RV64ZICOND-NEXT:    ret 
139125  %6  = call  i64  @llvm.fshl.i64 (i64  %x , i64  %x , i64  %rot.amt )
140126  %7  = select  i1  %cond , i64  %6 , i64  %x 
0 commit comments