|
@@ -24,22 +24,23 @@ define dso_local void @fn() {
|
|
|
; CHECK-NEXT: .cfi_offset %ebx, -12
|
|
|
; CHECK-NEXT: .cfi_offset %ebp, -8
|
|
|
; CHECK-NEXT: xorl %ebx, %ebx
|
|
|
-; CHECK-NEXT: # implicit-def: $esi
|
|
|
+; CHECK-NEXT: # implicit-def: $ecx
|
|
|
; CHECK-NEXT: # implicit-def: $edi
|
|
|
-; CHECK-NEXT: # implicit-def: $ah
|
|
|
; CHECK-NEXT: # implicit-def: $al
|
|
|
-; CHECK-NEXT: # implicit-def: $edx
|
|
|
+; CHECK-NEXT: # kill: killed $al
|
|
|
+; CHECK-NEXT: # implicit-def: $dl
|
|
|
+; CHECK-NEXT: # implicit-def: $ebp
|
|
|
; CHECK-NEXT: jmp .LBB0_1
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
; CHECK-NEXT: .LBB0_16: # %for.inc
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %ah # 1-byte Reload
|
|
|
-; CHECK-NEXT: movb %cl, %al
|
|
|
+; CHECK-NEXT: movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
+; CHECK-NEXT: movb %dh, %dl
|
|
|
; CHECK-NEXT: .LBB0_1: # %for.cond
|
|
|
; CHECK-NEXT: # =>This Loop Header: Depth=1
|
|
|
; CHECK-NEXT: # Child Loop BB0_20 Depth 2
|
|
|
-; CHECK-NEXT: cmpb $8, %al
|
|
|
-; CHECK-NEXT: movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
+; CHECK-NEXT: cmpb $8, %dl
|
|
|
+; CHECK-NEXT: movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
; CHECK-NEXT: ja .LBB0_3
|
|
|
; CHECK-NEXT: # %bb.2: # %for.cond
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
@@ -47,28 +48,27 @@ define dso_local void @fn() {
|
|
|
; CHECK-NEXT: je .LBB0_3
|
|
|
; CHECK-NEXT: # %bb.4: # %if.end
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: movl %edx, %ebp
|
|
|
-; CHECK-NEXT: movl %esi, %ecx
|
|
|
-; CHECK-NEXT: movl %esi, %eax
|
|
|
+; CHECK-NEXT: movl %ecx, %eax
|
|
|
; CHECK-NEXT: cltd
|
|
|
; CHECK-NEXT: idivl a
|
|
|
-; CHECK-NEXT: movl %eax, %esi
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %al # 1-byte Reload
|
|
|
-; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
|
|
|
+; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
|
|
|
+; CHECK-NEXT: movb %cl, %dh
|
|
|
; CHECK-NEXT: movl $0, h
|
|
|
-; CHECK-NEXT: cmpb $8, %al
|
|
|
+; CHECK-NEXT: cmpb $8, %dl
|
|
|
; CHECK-NEXT: jg .LBB0_8
|
|
|
; CHECK-NEXT: # %bb.5: # %if.then13
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
+; CHECK-NEXT: movl %eax, %esi
|
|
|
; CHECK-NEXT: movl $.str, (%esp)
|
|
|
-; CHECK-NEXT: movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
+; CHECK-NEXT: movb %dh, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
; CHECK-NEXT: calll printf
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Reload
|
|
|
+; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %dh # 1-byte Reload
|
|
|
; CHECK-NEXT: testb %bl, %bl
|
|
|
+; CHECK-NEXT: movl %esi, %ecx
|
|
|
; CHECK-NEXT: # implicit-def: $eax
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %ch # 1-byte Reload
|
|
|
-; CHECK-NEXT: movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
-; CHECK-NEXT: movl %ebp, %edx
|
|
|
+; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
|
|
|
+; CHECK-NEXT: movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
+; CHECK-NEXT: movb %dh, %dl
|
|
|
; CHECK-NEXT: jne .LBB0_16
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
; CHECK-NEXT: # %bb.6: # %for.cond35
|
|
@@ -91,19 +91,16 @@ define dso_local void @fn() {
|
|
|
; CHECK-NEXT: calll printf
|
|
|
; CHECK-NEXT: .LBB0_19: # %for.end46
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: # implicit-def: $ch
|
|
|
-; CHECK-NEXT: # implicit-def: $cl
|
|
|
-; CHECK-NEXT: # implicit-def: $edx
|
|
|
+; CHECK-NEXT: # implicit-def: $dl
|
|
|
+; CHECK-NEXT: # implicit-def: $dh
|
|
|
+; CHECK-NEXT: # implicit-def: $ebp
|
|
|
; CHECK-NEXT: jmp .LBB0_20
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
; CHECK-NEXT: .LBB0_3: # %if.then
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
; CHECK-NEXT: movl $.str, (%esp)
|
|
|
-; CHECK-NEXT: movl %edx, %esi
|
|
|
-; CHECK-NEXT: movb %ah, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
; CHECK-NEXT: calll printf
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %ch # 1-byte Reload
|
|
|
-; CHECK-NEXT: movl %esi, %edx
|
|
|
+; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
|
|
|
; CHECK-NEXT: # implicit-def: $eax
|
|
|
; CHECK-NEXT: testl %edi, %edi
|
|
|
; CHECK-NEXT: jne .LBB0_11
|
|
@@ -111,25 +108,15 @@ define dso_local void @fn() {
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
; CHECK-NEXT: .LBB0_8: # %if.end21
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: # implicit-def: $edx
|
|
|
+; CHECK-NEXT: # implicit-def: $ebp
|
|
|
; CHECK-NEXT: testb %bl, %bl
|
|
|
; CHECK-NEXT: je .LBB0_13
|
|
|
+; CHECK-NEXT: jmp .LBB0_10
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
-; CHECK-NEXT: .LBB0_10: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: # implicit-def: $eax
|
|
|
-; CHECK-NEXT: testb %bl, %bl
|
|
|
-; CHECK-NEXT: je .LBB0_17
|
|
|
-; CHECK-NEXT: .LBB0_12: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: # implicit-def: $edi
|
|
|
-; CHECK-NEXT: # implicit-def: $ch
|
|
|
-; CHECK-NEXT: # implicit-def: $cl
|
|
|
-; CHECK-NEXT: # kill: killed $cl
|
|
|
-; CHECK-NEXT: # implicit-def: $edx
|
|
|
-; CHECK-NEXT: testl %edi, %edi
|
|
|
-; CHECK-NEXT: jne .LBB0_11
|
|
|
; CHECK-NEXT: .LBB0_7: # in Loop: Header=BB0_1 Depth=1
|
|
|
; CHECK-NEXT: xorl %edi, %edi
|
|
|
-; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Reload
|
|
|
+; CHECK-NEXT: movb %dl, %dh
|
|
|
+; CHECK-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %dl # 1-byte Reload
|
|
|
; CHECK-NEXT: .p2align 4, 0x90
|
|
|
; CHECK-NEXT: .LBB0_20: # %for.cond47
|
|
|
; CHECK-NEXT: # Parent Loop BB0_1 Depth=1
|
|
@@ -140,25 +127,38 @@ define dso_local void @fn() {
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_20 Depth=2
|
|
|
; CHECK-NEXT: testb %bl, %bl
|
|
|
; CHECK-NEXT: jne .LBB0_20
|
|
|
-; CHECK-NEXT: # %bb.22: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: movb %ch, %al
|
|
|
+; CHECK-NEXT: # %bb.9: # %ae
|
|
|
+; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
; CHECK-NEXT: testb %bl, %bl
|
|
|
; CHECK-NEXT: jne .LBB0_10
|
|
|
; CHECK-NEXT: .LBB0_13: # %if.end26
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: xorl %esi, %esi
|
|
|
-; CHECK-NEXT: testb %al, %al
|
|
|
-; CHECK-NEXT: movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
|
|
|
+; CHECK-NEXT: xorl %ecx, %ecx
|
|
|
+; CHECK-NEXT: testb %dl, %dl
|
|
|
; CHECK-NEXT: je .LBB0_16
|
|
|
; CHECK-NEXT: # %bb.14: # %if.end26
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: testl %edx, %edx
|
|
|
+; CHECK-NEXT: testl %ebp, %ebp
|
|
|
; CHECK-NEXT: jne .LBB0_16
|
|
|
; CHECK-NEXT: # %bb.15: # %if.then31
|
|
|
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
|
|
|
-; CHECK-NEXT: xorl %esi, %esi
|
|
|
-; CHECK-NEXT: xorl %edx, %edx
|
|
|
+; CHECK-NEXT: xorl %ecx, %ecx
|
|
|
+; CHECK-NEXT: xorl %ebp, %ebp
|
|
|
; CHECK-NEXT: jmp .LBB0_16
|
|
|
+; CHECK-NEXT: .p2align 4, 0x90
|
|
|
+; CHECK-NEXT: .LBB0_10: # in Loop: Header=BB0_1 Depth=1
|
|
|
+; CHECK-NEXT: # implicit-def: $eax
|
|
|
+; CHECK-NEXT: testb %bl, %bl
|
|
|
+; CHECK-NEXT: je .LBB0_17
|
|
|
+; CHECK-NEXT: .LBB0_12: # in Loop: Header=BB0_1 Depth=1
|
|
|
+; CHECK-NEXT: # implicit-def: $edi
|
|
|
+; CHECK-NEXT: # implicit-def: $cl
|
|
|
+; CHECK-NEXT: # kill: killed $cl
|
|
|
+; CHECK-NEXT: # implicit-def: $dl
|
|
|
+; CHECK-NEXT: # implicit-def: $ebp
|
|
|
+; CHECK-NEXT: testl %edi, %edi
|
|
|
+; CHECK-NEXT: jne .LBB0_11
|
|
|
+; CHECK-NEXT: jmp .LBB0_7
|
|
|
entry:
|
|
|
br label %for.cond
|
|
|
|