@@ -316,28 +316,28 @@ define i64 @bextr64_a0(i64 %val, i64 %numskipbits, i64 %numlowbits) nounwind {
316316;
317317; V7A-LABEL: bextr64_a0:
318318; V7A: @ %bb.0:
319- ; V7A-NEXT: .save {r4, lr}
320- ; V7A-NEXT: push {r4, lr}
321- ; V7A-NEXT: ldr r12 , [sp, #8 ]
322- ; V7A-NEXT: mov lr , #1
319+ ; V7A-NEXT: .save {r4, r5, r11, lr}
320+ ; V7A-NEXT: push {r4, r5, r11, lr}
321+ ; V7A-NEXT: ldr lr , [sp, #16 ]
322+ ; V7A-NEXT: mov r5 , #1
323323; V7A-NEXT: lsr r0, r0, r2
324- ; V7A-NEXT: rsb r3, r12 , #32
325- ; V7A-NEXT: subs r4, r12 , #32
326- ; V7A-NEXT: lsr r3, lr, r3
327- ; V7A-NEXT: lslpl r3, lr , r4
328- ; V7A-NEXT: lsl r4, lr, r12
329- ; V7A-NEXT: movwpl r4 , #0
330- ; V7A-NEXT: subs r4, r4 , #1
331- ; V7A-NEXT: sbc r12, r3 , #0
332- ; V7A-NEXT: rsb r3, r2 , #32
333- ; V7A-NEXT: orr r0, r0, r1, lsl r3
334- ; V7A-NEXT: subs r3 , r2, #32
335- ; V7A-NEXT: lsrpl r0, r1, r3
324+ ; V7A-NEXT: rsb r12, lr , #32
325+ ; V7A-NEXT: subs r4, lr , #32
326+ ; V7A-NEXT: lsr r3, r5, r12
327+ ; V7A-NEXT: lslpl r3, r5 , r4
328+ ; V7A-NEXT: lsl r5, r5, lr
329+ ; V7A-NEXT: movwpl r5 , #0
330+ ; V7A-NEXT: rsb r4, r2 , #32
331+ ; V7A-NEXT: subs r5, r5 , #1
332+ ; V7A-NEXT: sbc r3, r3 , #0
333+ ; V7A-NEXT: orr r0, r0, r1, lsl r4
334+ ; V7A-NEXT: subs r4 , r2, #32
335+ ; V7A-NEXT: lsrpl r0, r1, r4
336336; V7A-NEXT: lsr r1, r1, r2
337337; V7A-NEXT: movwpl r1, #0
338- ; V7A-NEXT: and r0, r4 , r0
339- ; V7A-NEXT: and r1, r12 , r1
340- ; V7A-NEXT: pop {r4, pc}
338+ ; V7A-NEXT: and r0, r5 , r0
339+ ; V7A-NEXT: and r1, r3 , r1
340+ ; V7A-NEXT: pop {r4, r5, r11, pc}
341341;
342342; V7A-T-LABEL: bextr64_a0:
343343; V7A-T: @ %bb.0:
@@ -434,28 +434,28 @@ define i64 @bextr64_a0_arithmetic(i64 %val, i64 %numskipbits, i64 %numlowbits) n
434434;
435435; V7A-LABEL: bextr64_a0_arithmetic:
436436; V7A: @ %bb.0:
437- ; V7A-NEXT: .save {r4, lr}
438- ; V7A-NEXT: push {r4, lr}
439- ; V7A-NEXT: ldr r12 , [sp, #8 ]
440- ; V7A-NEXT: mov lr , #1
437+ ; V7A-NEXT: .save {r4, r5, r11, lr}
438+ ; V7A-NEXT: push {r4, r5, r11, lr}
439+ ; V7A-NEXT: ldr lr , [sp, #16 ]
440+ ; V7A-NEXT: mov r5 , #1
441441; V7A-NEXT: lsr r0, r0, r2
442- ; V7A-NEXT: rsb r3, r12 , #32
443- ; V7A-NEXT: subs r4, r12 , #32
444- ; V7A-NEXT: lsr r3, lr, r3
445- ; V7A-NEXT: lslpl r3, lr , r4
446- ; V7A-NEXT: lsl r4, lr, r12
447- ; V7A-NEXT: movwpl r4 , #0
448- ; V7A-NEXT: subs r4, r4 , #1
449- ; V7A-NEXT: sbc r12, r3 , #0
450- ; V7A-NEXT: rsb r3, r2 , #32
451- ; V7A-NEXT: orr r0, r0, r1, lsl r3
452- ; V7A-NEXT: subs r3 , r2, #32
442+ ; V7A-NEXT: rsb r12, lr , #32
443+ ; V7A-NEXT: subs r4, lr , #32
444+ ; V7A-NEXT: lsr r3, r5, r12
445+ ; V7A-NEXT: lslpl r3, r5 , r4
446+ ; V7A-NEXT: lsl r5, r5, lr
447+ ; V7A-NEXT: movwpl r5 , #0
448+ ; V7A-NEXT: rsb r4, r2 , #32
449+ ; V7A-NEXT: subs r5, r5 , #1
450+ ; V7A-NEXT: sbc r3, r3 , #0
451+ ; V7A-NEXT: orr r0, r0, r1, lsl r4
452+ ; V7A-NEXT: subs r4 , r2, #32
453453; V7A-NEXT: asr r2, r1, r2
454- ; V7A-NEXT: asrpl r0, r1, r3
455454; V7A-NEXT: asrpl r2, r1, #31
456- ; V7A-NEXT: and r0, r4, r0
457- ; V7A-NEXT: and r1, r12, r2
458- ; V7A-NEXT: pop {r4, pc}
455+ ; V7A-NEXT: asrpl r0, r1, r4
456+ ; V7A-NEXT: and r1, r3, r2
457+ ; V7A-NEXT: and r0, r5, r0
458+ ; V7A-NEXT: pop {r4, r5, r11, pc}
459459;
460460; V7A-T-LABEL: bextr64_a0_arithmetic:
461461; V7A-T: @ %bb.0:
@@ -911,28 +911,28 @@ define i64 @bextr64_a4_commutative(i64 %val, i64 %numskipbits, i64 %numlowbits)
911911;
912912; V7A-LABEL: bextr64_a4_commutative:
913913; V7A: @ %bb.0:
914- ; V7A-NEXT: .save {r4, lr}
915- ; V7A-NEXT: push {r4, lr}
916- ; V7A-NEXT: ldr r12 , [sp, #8 ]
917- ; V7A-NEXT: mov lr , #1
914+ ; V7A-NEXT: .save {r4, r5, r11, lr}
915+ ; V7A-NEXT: push {r4, r5, r11, lr}
916+ ; V7A-NEXT: ldr lr , [sp, #16 ]
917+ ; V7A-NEXT: mov r5 , #1
918918; V7A-NEXT: lsr r0, r0, r2
919- ; V7A-NEXT: rsb r3, r12 , #32
920- ; V7A-NEXT: subs r4, r12 , #32
921- ; V7A-NEXT: lsr r3, lr, r3
922- ; V7A-NEXT: lslpl r3, lr , r4
923- ; V7A-NEXT: lsl r4, lr, r12
924- ; V7A-NEXT: movwpl r4 , #0
925- ; V7A-NEXT: subs r4, r4 , #1
926- ; V7A-NEXT: sbc r12, r3 , #0
927- ; V7A-NEXT: rsb r3, r2 , #32
928- ; V7A-NEXT: orr r0, r0, r1, lsl r3
929- ; V7A-NEXT: subs r3 , r2, #32
930- ; V7A-NEXT: lsrpl r0, r1, r3
919+ ; V7A-NEXT: rsb r12, lr , #32
920+ ; V7A-NEXT: subs r4, lr , #32
921+ ; V7A-NEXT: lsr r3, r5, r12
922+ ; V7A-NEXT: lslpl r3, r5 , r4
923+ ; V7A-NEXT: lsl r5, r5, lr
924+ ; V7A-NEXT: movwpl r5 , #0
925+ ; V7A-NEXT: rsb r4, r2 , #32
926+ ; V7A-NEXT: subs r5, r5 , #1
927+ ; V7A-NEXT: sbc r3, r3 , #0
928+ ; V7A-NEXT: orr r0, r0, r1, lsl r4
929+ ; V7A-NEXT: subs r4 , r2, #32
930+ ; V7A-NEXT: lsrpl r0, r1, r4
931931; V7A-NEXT: lsr r1, r1, r2
932932; V7A-NEXT: movwpl r1, #0
933- ; V7A-NEXT: and r0, r0, r4
934- ; V7A-NEXT: and r1, r1, r12
935- ; V7A-NEXT: pop {r4, pc}
933+ ; V7A-NEXT: and r0, r0, r5
934+ ; V7A-NEXT: and r1, r1, r3
935+ ; V7A-NEXT: pop {r4, r5, r11, pc}
936936;
937937; V7A-T-LABEL: bextr64_a4_commutative:
938938; V7A-T: @ %bb.0:
@@ -3456,22 +3456,22 @@ define i64 @bextr64_d1_indexzext(i64 %val, i8 %numskipbits, i8 %numlowbits) noun
34563456; V7M-NEXT: uxtb r2, r2
34573457; V7M-NEXT: it pl
34583458; V7M-NEXT: movpl r1, #0
3459- ; V7M-NEXT: rsb.w r12 , r2, #32
3459+ ; V7M-NEXT: rsb.w r3 , r2, #32
34603460; V7M-NEXT: lsls r1, r2
3461- ; V7M-NEXT: sub.w r3 , r2, #32
3462- ; V7M-NEXT: lsr.w r4, r0, r12
3461+ ; V7M-NEXT: sub.w r12 , r2, #32
3462+ ; V7M-NEXT: lsr.w r4, r0, r3
34633463; V7M-NEXT: orrs r1, r4
3464- ; V7M-NEXT: cmp r3 , #0
3464+ ; V7M-NEXT: cmp.w r12 , #0
34653465; V7M-NEXT: it pl
3466- ; V7M-NEXT: lslpl.w r1, r0, r3
3466+ ; V7M-NEXT: lslpl.w r1, r0, r12
34673467; V7M-NEXT: lsl.w r0, r0, r2
3468- ; V7M-NEXT: lsl.w r4 , r1, r12
3468+ ; V7M-NEXT: lsl.w r3 , r1, r3
34693469; V7M-NEXT: it pl
34703470; V7M-NEXT: movpl r0, #0
34713471; V7M-NEXT: lsr.w r0, r0, r2
3472- ; V7M-NEXT: orr.w r0, r0, r4
3472+ ; V7M-NEXT: orr.w r0, r0, r3
34733473; V7M-NEXT: it pl
3474- ; V7M-NEXT: lsrpl.w r0, r1, r3
3474+ ; V7M-NEXT: lsrpl.w r0, r1, r12
34753475; V7M-NEXT: lsr.w r1, r1, r2
34763476; V7M-NEXT: it pl
34773477; V7M-NEXT: movpl r1, #0
@@ -3715,26 +3715,26 @@ define i64 @bextr64_d3_load_indexzext(ptr %w, i8 %numskipbits, i8 %numlowbits) n
37153715; V7M-NEXT: uxtb r2, r2
37163716; V7M-NEXT: lsl.w r0, lr, r0
37173717; V7M-NEXT: orr.w r0, r0, r12
3718- ; V7M-NEXT: rsb .w r12, r2, #32
3718+ ; V7M-NEXT: sub .w r12, r2, #32
37193719; V7M-NEXT: it pl
37203720; V7M-NEXT: lsrpl.w r0, lr, r3
37213721; V7M-NEXT: it pl
37223722; V7M-NEXT: movpl r1, #0
3723+ ; V7M-NEXT: rsb.w r3, r2, #32
37233724; V7M-NEXT: lsls r1, r2
3724- ; V7M-NEXT: sub.w r3, r2, #32
3725- ; V7M-NEXT: lsr.w r4, r0, r12
3726- ; V7M-NEXT: orrs r1, r4
3727- ; V7M-NEXT: cmp r3, #0
3725+ ; V7M-NEXT: cmp.w r12, #0
3726+ ; V7M-NEXT: lsr.w r4, r0, r3
3727+ ; V7M-NEXT: orr.w r1, r1, r4
37283728; V7M-NEXT: it pl
3729- ; V7M-NEXT: lslpl.w r1, r0, r3
3729+ ; V7M-NEXT: lslpl.w r1, r0, r12
37303730; V7M-NEXT: lsl.w r0, r0, r2
3731- ; V7M-NEXT: lsl.w r4, r1, r12
37323731; V7M-NEXT: it pl
37333732; V7M-NEXT: movpl r0, #0
3733+ ; V7M-NEXT: lsl.w r3, r1, r3
37343734; V7M-NEXT: lsr.w r0, r0, r2
3735- ; V7M-NEXT: orr.w r0, r0, r4
3735+ ; V7M-NEXT: orr.w r0, r0, r3
37363736; V7M-NEXT: it pl
3737- ; V7M-NEXT: lsrpl.w r0, r1, r3
3737+ ; V7M-NEXT: lsrpl.w r0, r1, r12
37383738; V7M-NEXT: lsr.w r1, r1, r2
37393739; V7M-NEXT: it pl
37403740; V7M-NEXT: movpl r1, #0
0 commit comments