@@ -62,37 +62,30 @@ define i64 @rotate_l_nez(i64 %x, i64 %rot.amt, i1 %cond) {
62
62
; RV32ZICOND-LABEL: rotate_l_nez:
63
63
; RV32ZICOND: # %bb.0:
64
64
; 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
83
65
; 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
87
82
; RV32ZICOND-NEXT: ret
88
83
;
89
84
; RV64ZICOND-LABEL: rotate_l_nez:
90
85
; RV64ZICOND: # %bb.0:
91
86
; RV64ZICOND-NEXT: andi a2, a2, 1
92
- ; RV64ZICOND-NEXT: rol a1, a0, a1
93
87
; 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
96
89
; RV64ZICOND-NEXT: ret
97
90
%6 = call i64 @llvm.fshl.i64 (i64 %x , i64 %x , i64 %rot.amt )
98
91
%7 = select i1 %cond , i64 %x , i64 %6
@@ -104,37 +97,30 @@ define i64 @rotate_l_eqz(i64 %x, i64 %rot.amt, i1 %cond) {
104
97
; RV32ZICOND-LABEL: rotate_l_eqz:
105
98
; RV32ZICOND: # %bb.0:
106
99
; 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
125
100
; 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
129
117
; RV32ZICOND-NEXT: ret
130
118
;
131
119
; RV64ZICOND-LABEL: rotate_l_eqz:
132
120
; RV64ZICOND: # %bb.0:
133
121
; RV64ZICOND-NEXT: andi a2, a2, 1
134
- ; RV64ZICOND-NEXT: rol a1, a0, a1
135
- ; RV64ZICOND-NEXT: czero.nez a0, a0, a2
136
122
; RV64ZICOND-NEXT: czero.eqz a1, a1, a2
137
- ; RV64ZICOND-NEXT: or a0, a1, a0
123
+ ; RV64ZICOND-NEXT: rol a0, a0, a1
138
124
; RV64ZICOND-NEXT: ret
139
125
%6 = call i64 @llvm.fshl.i64 (i64 %x , i64 %x , i64 %rot.amt )
140
126
%7 = select i1 %cond , i64 %6 , i64 %x
0 commit comments