@@ -52,9 +52,9 @@ define signext i32 @ctlz_i32(i32 signext %a) nounwind {
5252;
5353; RV64XTHEADBB-NOB-LABEL: ctlz_i32:
5454; RV64XTHEADBB-NOB: # %bb.0:
55- ; RV64XTHEADBB-NOB-NEXT: not a0, a0
56- ; RV64XTHEADBB-NOB-NEXT: slli a0, a0, 32
57- ; RV64XTHEADBB-NOB-NEXT: th.ff0 a0, a0
55+ ; RV64XTHEADBB-NOB-NEXT: th.extu a0, a0, 31, 0
56+ ; RV64XTHEADBB-NOB-NEXT: th.ff1 a0, a0
57+ ; RV64XTHEADBB-NOB-NEXT: addi a0, a0, -32
5858; RV64XTHEADBB-NOB-NEXT: ret
5959;
6060; RV64XTHEADBB-B-LABEL: ctlz_i32:
@@ -112,10 +112,9 @@ define signext i32 @log2_i32(i32 signext %a) nounwind {
112112;
113113; RV64XTHEADBB-NOB-LABEL: log2_i32:
114114; RV64XTHEADBB-NOB: # %bb.0:
115- ; RV64XTHEADBB-NOB-NEXT: not a0, a0
116- ; RV64XTHEADBB-NOB-NEXT: slli a0, a0, 32
117- ; RV64XTHEADBB-NOB-NEXT: th.ff0 a0, a0
118- ; RV64XTHEADBB-NOB-NEXT: li a1, 31
115+ ; RV64XTHEADBB-NOB-NEXT: th.extu a0, a0, 31, 0
116+ ; RV64XTHEADBB-NOB-NEXT: th.ff1 a0, a0
117+ ; RV64XTHEADBB-NOB-NEXT: li a1, 63
119118; RV64XTHEADBB-NOB-NEXT: sub a0, a1, a0
120119; RV64XTHEADBB-NOB-NEXT: ret
121120;
@@ -177,10 +176,9 @@ define signext i32 @log2_ceil_i32(i32 signext %a) nounwind {
177176; RV64XTHEADBB-NOB-LABEL: log2_ceil_i32:
178177; RV64XTHEADBB-NOB: # %bb.0:
179178; RV64XTHEADBB-NOB-NEXT: addi a0, a0, -1
180- ; RV64XTHEADBB-NOB-NEXT: not a0, a0
181- ; RV64XTHEADBB-NOB-NEXT: slli a0, a0, 32
182- ; RV64XTHEADBB-NOB-NEXT: th.ff0 a0, a0
183- ; RV64XTHEADBB-NOB-NEXT: li a1, 32
179+ ; RV64XTHEADBB-NOB-NEXT: th.extu a0, a0, 31, 0
180+ ; RV64XTHEADBB-NOB-NEXT: th.ff1 a0, a0
181+ ; RV64XTHEADBB-NOB-NEXT: li a1, 64
184182; RV64XTHEADBB-NOB-NEXT: sub a0, a1, a0
185183; RV64XTHEADBB-NOB-NEXT: ret
186184;
@@ -309,9 +307,8 @@ define i32 @ctlz_lshr_i32(i32 signext %a) {
309307; RV64XTHEADBB-NOB-LABEL: ctlz_lshr_i32:
310308; RV64XTHEADBB-NOB: # %bb.0:
311309; RV64XTHEADBB-NOB-NEXT: srliw a0, a0, 1
312- ; RV64XTHEADBB-NOB-NEXT: not a0, a0
313- ; RV64XTHEADBB-NOB-NEXT: slli a0, a0, 32
314- ; RV64XTHEADBB-NOB-NEXT: th.ff0 a0, a0
310+ ; RV64XTHEADBB-NOB-NEXT: th.ff1 a0, a0
311+ ; RV64XTHEADBB-NOB-NEXT: addi a0, a0, -32
315312; RV64XTHEADBB-NOB-NEXT: ret
316313;
317314; RV64XTHEADBB-B-LABEL: ctlz_lshr_i32:
0 commit comments