@@ -45,12 +45,16 @@ body: |
4545 ; RV64I-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
4646 ; RV64I-NEXT: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C6]]
4747 ; RV64I-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
48- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND8]], [[C]]
49- ; RV64I-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[MUL]], [[C7]](s32)
48+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND8]](s32)
49+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s32)
50+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
51+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
52+ ; RV64I-NEXT: [[AND9:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C1]]
53+ ; RV64I-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[AND9]], [[C7]](s32)
5054 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
5155 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C8]], [[LSHR6]]
52- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
53- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
56+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
57+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
5458 ; RV64I-NEXT: PseudoRET implicit $x10
5559 ;
5660 ; RV64ZBB-LABEL: name: ctlz_i8
@@ -120,13 +124,16 @@ body: |
120124 ; RV64I-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 3855
121125 ; RV64I-NEXT: [[AND9:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C7]]
122126 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 257
123- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND9]], [[C8]]
124- ; RV64I-NEXT: [[AND10:%[0-9]+]]:_(s32) = G_AND [[MUL]], [[C1]]
127+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND9]](s32)
128+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C8]](s32)
129+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
130+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
131+ ; RV64I-NEXT: [[AND10:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C1]]
125132 ; RV64I-NEXT: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[AND10]], [[C4]](s32)
126133 ; RV64I-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
127134 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C9]], [[LSHR7]]
128- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
129- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
135+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
136+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
130137 ; RV64I-NEXT: PseudoRET implicit $x10
131138 ;
132139 ; RV64ZBB-LABEL: name: ctlz_i16
@@ -192,12 +199,15 @@ body: |
192199 ; RV64I-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C7]]
193200 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 16843009
194201 ; RV64I-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
195- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND3]], [[C8]]
196- ; RV64I-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[MUL]], [[C9]](s32)
202+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND3]](s32)
203+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C8]](s32)
204+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
205+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
206+ ; RV64I-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC1]], [[C9]](s32)
197207 ; RV64I-NEXT: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
198208 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C10]], [[LSHR8]]
199- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
200- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
209+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
210+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
201211 ; RV64I-NEXT: PseudoRET implicit $x10
202212 ;
203213 ; RV64ZBB-LABEL: name: ctlz_i32
@@ -319,12 +329,16 @@ body: |
319329 ; RV64I-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
320330 ; RV64I-NEXT: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C6]]
321331 ; RV64I-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
322- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND8]], [[C]]
323- ; RV64I-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[MUL]], [[C7]](s32)
332+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND8]](s32)
333+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s32)
334+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
335+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
336+ ; RV64I-NEXT: [[AND9:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C1]]
337+ ; RV64I-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[AND9]], [[C7]](s32)
324338 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
325339 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C8]], [[LSHR6]]
326- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
327- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
340+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
341+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
328342 ; RV64I-NEXT: PseudoRET implicit $x10
329343 ;
330344 ; RV64ZBB-LABEL: name: ctlz_zero_undef_i8
@@ -394,13 +408,16 @@ body: |
394408 ; RV64I-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 3855
395409 ; RV64I-NEXT: [[AND9:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C7]]
396410 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 257
397- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND9]], [[C8]]
398- ; RV64I-NEXT: [[AND10:%[0-9]+]]:_(s32) = G_AND [[MUL]], [[C1]]
411+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND9]](s32)
412+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C8]](s32)
413+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
414+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
415+ ; RV64I-NEXT: [[AND10:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C1]]
399416 ; RV64I-NEXT: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[AND10]], [[C4]](s32)
400417 ; RV64I-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
401418 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C9]], [[LSHR7]]
402- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
403- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
419+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
420+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
404421 ; RV64I-NEXT: PseudoRET implicit $x10
405422 ;
406423 ; RV64ZBB-LABEL: name: ctlz_zero_undef_i16
@@ -466,12 +483,15 @@ body: |
466483 ; RV64I-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ADD1]], [[C7]]
467484 ; RV64I-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 16843009
468485 ; RV64I-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
469- ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[AND3]], [[C8]]
470- ; RV64I-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[MUL]], [[C9]](s32)
486+ ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[AND3]](s32)
487+ ; RV64I-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C8]](s32)
488+ ; RV64I-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ANYEXT]], [[ANYEXT1]]
489+ ; RV64I-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[MUL]](s64)
490+ ; RV64I-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC1]], [[C9]](s32)
471491 ; RV64I-NEXT: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
472492 ; RV64I-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C10]], [[LSHR8]]
473- ; RV64I-NEXT: [[ANYEXT :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
474- ; RV64I-NEXT: $x10 = COPY [[ANYEXT ]](s64)
493+ ; RV64I-NEXT: [[ANYEXT2 :%[0-9]+]]:_(s64) = G_ANYEXT [[SUB1]](s32)
494+ ; RV64I-NEXT: $x10 = COPY [[ANYEXT2 ]](s64)
475495 ; RV64I-NEXT: PseudoRET implicit $x10
476496 ;
477497 ; RV64ZBB-LABEL: name: ctlz_zero_undef_i32
0 commit comments