44
55;; TODO: Add optimization to ISD::ROTL
66
7- define i32 @rotl_32 (i32 %x , i32 %y ) nounwind {
7+ define signext i32 @rotl_32 (i32 signext %x , i32 signext %y ) nounwind {
88; LA32-LABEL: rotl_32:
99; LA32: # %bb.0:
1010; LA32-NEXT: ori $a2, $zero, 32
@@ -26,7 +26,7 @@ define i32 @rotl_32(i32 %x, i32 %y) nounwind {
2626 ret i32 %d
2727}
2828
29- define i32 @rotr_32 (i32 %x , i32 %y ) nounwind {
29+ define signext i32 @rotr_32 (i32 signext %x , i32 signext %y ) nounwind {
3030; LA32-LABEL: rotr_32:
3131; LA32: # %bb.0:
3232; LA32-NEXT: rotr.w $a0, $a0, $a1
@@ -143,7 +143,7 @@ define i64 @rotr_64(i64 %x, i64 %y) nounwind {
143143 ret i64 %d
144144}
145145
146- define i32 @rotl_32_mask (i32 %x , i32 %y ) nounwind {
146+ define signext i32 @rotl_32_mask (i32 signext %x , i32 signext %y ) nounwind {
147147; LA32-LABEL: rotl_32_mask:
148148; LA32: # %bb.0:
149149; LA32-NEXT: sub.w $a1, $zero, $a1
@@ -165,7 +165,7 @@ define i32 @rotl_32_mask(i32 %x, i32 %y) nounwind {
165165 ret i32 %d
166166}
167167
168- define i32 @rotl_32_mask_and_63_and_31 (i32 %x , i32 %y ) nounwind {
168+ define signext i32 @rotl_32_mask_and_63_and_31 (i32 signext %x , i32 signext %y ) nounwind {
169169; LA32-LABEL: rotl_32_mask_and_63_and_31:
170170; LA32: # %bb.0:
171171; LA32-NEXT: sub.w $a1, $zero, $a1
@@ -188,7 +188,7 @@ define i32 @rotl_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
188188 ret i32 %f
189189}
190190
191- define i32 @rotl_32_mask_or_64_or_32 (i32 %x , i32 %y ) nounwind {
191+ define signext i32 @rotl_32_mask_or_64_or_32 (i32 signext %x , i32 signext %y ) nounwind {
192192; LA32-LABEL: rotl_32_mask_or_64_or_32:
193193; LA32: # %bb.0:
194194; LA32-NEXT: sub.w $a1, $zero, $a1
@@ -211,7 +211,7 @@ define i32 @rotl_32_mask_or_64_or_32(i32 %x, i32 %y) nounwind {
211211 ret i32 %f
212212}
213213
214- define i32 @rotr_32_mask (i32 %x , i32 %y ) nounwind {
214+ define signext i32 @rotr_32_mask (i32 signext %x , i32 signext %y ) nounwind {
215215; LA32-LABEL: rotr_32_mask:
216216; LA32: # %bb.0:
217217; LA32-NEXT: rotr.w $a0, $a0, $a1
@@ -229,7 +229,7 @@ define i32 @rotr_32_mask(i32 %x, i32 %y) nounwind {
229229 ret i32 %d
230230}
231231
232- define i32 @rotr_32_mask_and_63_and_31 (i32 %x , i32 %y ) nounwind {
232+ define signext i32 @rotr_32_mask_and_63_and_31 (i32 signext %x , i32 signext %y ) nounwind {
233233; LA32-LABEL: rotr_32_mask_and_63_and_31:
234234; LA32: # %bb.0:
235235; LA32-NEXT: rotr.w $a0, $a0, $a1
@@ -248,7 +248,7 @@ define i32 @rotr_32_mask_and_63_and_31(i32 %x, i32 %y) nounwind {
248248 ret i32 %f
249249}
250250
251- define i32 @rotr_32_mask_or_64_or_32 (i32 %x , i32 %y ) nounwind {
251+ define signext i32 @rotr_32_mask_or_64_or_32 (i32 signext %x , i32 signext %y ) nounwind {
252252; LA32-LABEL: rotr_32_mask_or_64_or_32:
253253; LA32: # %bb.0:
254254; LA32-NEXT: rotr.w $a0, $a0, $a1
@@ -510,7 +510,7 @@ define i64 @rotr_64_mask_or_128_or_64(i64 %x, i64 %y) nounwind {
510510 ret i64 %f
511511}
512512
513- define i32 @rotri_i32 (i32 %a ) nounwind {
513+ define signext i32 @rotri_i32 (i32 signext %a ) nounwind {
514514; LA32-LABEL: rotri_i32:
515515; LA32: # %bb.0:
516516; LA32-NEXT: rotri.w $a0, $a0, 16
0 commit comments