@@ -878,56 +878,63 @@ pow2.dst:
878878define void @switch_large_enough_for_clustering (i32 %x , ptr %dst ) {
879879; CHECK-LABEL: switch_large_enough_for_clustering:
880880; CHECK: ; %bb.0: ; %entry
881- ; CHECK-NEXT: cmp w0, #3
882- ; CHECK-NEXT: b.gt LBB12_4
881+ ; CHECK-NEXT: cmp w0, #1
882+ ; CHECK-NEXT: b.le LBB12_5
883883; CHECK-NEXT: ; %bb.1: ; %entry
884- ; CHECK-NEXT: tst w0, #0xfffffffd
885- ; CHECK-NEXT: b.ne LBB12_7
886- ; CHECK-NEXT: ; %bb.2: ; %succ.1
887- ; CHECK-NEXT: strb wzr, [x1]
888- ; CHECK-NEXT: LBB12_3: ; %exit
889- ; CHECK-NEXT: ret
890- ; CHECK-NEXT: LBB12_4: ; %entry
884+ ; CHECK-NEXT: cmp w0, #7
885+ ; CHECK-NEXT: b.eq LBB12_9
886+ ; CHECK-NEXT: ; %bb.2: ; %entry
891887; CHECK-NEXT: cmp w0, #4
888+ ; CHECK-NEXT: b.eq LBB12_7
889+ ; CHECK-NEXT: ; %bb.3: ; %entry
890+ ; CHECK-NEXT: cmp w0, #2
892891; CHECK-NEXT: b.eq LBB12_8
893- ; CHECK-NEXT: ; %bb.5: ; %entry
894- ; CHECK-NEXT: cmp w0, #7
895- ; CHECK-NEXT: b.ne LBB12_3
896- ; CHECK-NEXT: ; %bb.6: ; %succ.3
897- ; CHECK-NEXT: strh wzr, [x1]
892+ ; CHECK-NEXT: LBB12_4: ; %exit
898893; CHECK-NEXT: ret
899- ; CHECK-NEXT: LBB12_7: ; %entry
894+ ; CHECK-NEXT: LBB12_5: ; %entry
895+ ; CHECK-NEXT: cbz w0, LBB12_8
896+ ; CHECK-NEXT: ; %bb.6: ; %entry
900897; CHECK-NEXT: cmp w0, #1
901- ; CHECK-NEXT: b.ne LBB12_3
902- ; CHECK-NEXT: LBB12_8 : ; %succ.2
898+ ; CHECK-NEXT: b.ne LBB12_4
899+ ; CHECK-NEXT: LBB12_7 : ; %succ.2
903900; CHECK-NEXT: str wzr, [x1]
904901; CHECK-NEXT: ret
902+ ; CHECK-NEXT: LBB12_8: ; %succ.1
903+ ; CHECK-NEXT: strb wzr, [x1]
904+ ; CHECK-NEXT: ret
905+ ; CHECK-NEXT: LBB12_9: ; %succ.3
906+ ; CHECK-NEXT: strh wzr, [x1]
907+ ; CHECK-NEXT: ret
905908;
906909; GISEL-LABEL: switch_large_enough_for_clustering:
907910; GISEL: ; %bb.0: ; %entry
908- ; GISEL-NEXT: cmp w0, #4
909- ; GISEL-NEXT: b.ge LBB12_4
911+ ; GISEL-NEXT: cmp w0, #2
912+ ; GISEL-NEXT: b.lt LBB12_5
910913; GISEL-NEXT: ; %bb.1: ; %entry
911- ; GISEL-NEXT: cmn w0, #3
912- ; GISEL-NEXT: b.ne LBB12_7
913- ; GISEL-NEXT: ; %bb.2: ; %succ.1
914- ; GISEL-NEXT: strb wzr, [x1]
915- ; GISEL-NEXT: LBB12_3: ; %exit
916- ; GISEL-NEXT: ret
917- ; GISEL-NEXT: LBB12_4: ; %entry
918- ; GISEL-NEXT: b.eq LBB12_8
919- ; GISEL-NEXT: ; %bb.5: ; %entry
920914; GISEL-NEXT: cmp w0, #7
921- ; GISEL-NEXT: b.ne LBB12_3
922- ; GISEL-NEXT: ; %bb.6: ; %succ.3
923- ; GISEL-NEXT: strh wzr, [x1]
915+ ; GISEL-NEXT: b.eq LBB12_9
916+ ; GISEL-NEXT: ; %bb.2: ; %entry
917+ ; GISEL-NEXT: cmp w0, #4
918+ ; GISEL-NEXT: b.eq LBB12_7
919+ ; GISEL-NEXT: ; %bb.3: ; %entry
920+ ; GISEL-NEXT: cmp w0, #2
921+ ; GISEL-NEXT: b.eq LBB12_8
922+ ; GISEL-NEXT: LBB12_4: ; %exit
924923; GISEL-NEXT: ret
925- ; GISEL-NEXT: LBB12_7: ; %entry
924+ ; GISEL-NEXT: LBB12_5: ; %entry
925+ ; GISEL-NEXT: cbz w0, LBB12_8
926+ ; GISEL-NEXT: ; %bb.6: ; %entry
926927; GISEL-NEXT: cmp w0, #1
927- ; GISEL-NEXT: b.ne LBB12_3
928- ; GISEL-NEXT: LBB12_8 : ; %succ.2
928+ ; GISEL-NEXT: b.ne LBB12_4
929+ ; GISEL-NEXT: LBB12_7 : ; %succ.2
929930; GISEL-NEXT: str wzr, [x1]
930931; GISEL-NEXT: ret
932+ ; GISEL-NEXT: LBB12_8: ; %succ.1
933+ ; GISEL-NEXT: strb wzr, [x1]
934+ ; GISEL-NEXT: ret
935+ ; GISEL-NEXT: LBB12_9: ; %succ.3
936+ ; GISEL-NEXT: strh wzr, [x1]
937+ ; GISEL-NEXT: ret
931938entry:
932939 switch i32 %x , label %exit [
933940 i32 0 , label %succ.1
0 commit comments