Skip to content

Commit 93214ce

Browse files
Non-trivial diff
1 parent 2970a35 commit 93214ce

File tree

1 file changed

+54
-41
lines changed

1 file changed

+54
-41
lines changed

llvm/test/CodeGen/X86/pr32329.ll

Lines changed: 54 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,33 +29,40 @@ define void @foo() local_unnamed_addr {
2929
; X86-NEXT: .cfi_offset %edi, -16
3030
; X86-NEXT: .cfi_offset %ebx, -12
3131
; X86-NEXT: .cfi_offset %ebp, -8
32-
; X86-NEXT: movsbl var_27, %eax
33-
; X86-NEXT: movzwl var_2, %ebx
34-
; X86-NEXT: movl var_310, %ecx
35-
; X86-NEXT: imull %eax, %ecx
36-
; X86-NEXT: addl var_24, %ecx
37-
; X86-NEXT: movl $4194303, %esi # imm = 0x3FFFFF
38-
; X86-NEXT: andl obj, %esi
32+
; X86-NEXT: movl obj, %esi
3933
; X86-NEXT: leal (%esi,%esi), %edx
40-
; X86-NEXT: subl %eax, %edx
41-
; X86-NEXT: movl %edx, %edi
42-
; X86-NEXT: subl %ebx, %edi
43-
; X86-NEXT: imull %edi, %ecx
34+
; X86-NEXT: movzwl var_2, %eax
35+
; X86-NEXT: movb var_310, %ch
36+
; X86-NEXT: movsbl var_27, %ebx
37+
; X86-NEXT: subb %bl, %dl
38+
; X86-NEXT: movb %dl, %cl
39+
; X86-NEXT: subb %al, %cl
40+
; X86-NEXT: movl %eax, %ebp
41+
; X86-NEXT: movb %ch, %al
42+
; X86-NEXT: mulb %bl
43+
; X86-NEXT: addb var_24, %al
44+
; X86-NEXT: mulb %cl
45+
; X86-NEXT: movl %eax, %ecx
4446
; X86-NEXT: addb $113, %cl
45-
; X86-NEXT: movl $9, %ebx
46-
; X86-NEXT: xorl %ebp, %ebp
47-
; X86-NEXT: shldl %cl, %ebx, %ebp
48-
; X86-NEXT: shll %cl, %ebx
47+
; X86-NEXT: movl $9, %eax
48+
; X86-NEXT: xorl %edi, %edi
49+
; X86-NEXT: shldl %cl, %eax, %edi
50+
; X86-NEXT: shll %cl, %eax
4951
; X86-NEXT: testb $32, %cl
50-
; X86-NEXT: cmovnel %ebx, %ebp
52+
; X86-NEXT: cmovnel %eax, %edi
5153
; X86-NEXT: movl $0, %ecx
52-
; X86-NEXT: cmovnel %ecx, %ebx
53-
; X86-NEXT: cmpl %esi, %edi
54-
; X86-NEXT: movl %ebp, var_50+4
55-
; X86-NEXT: movl %ebx, var_50
54+
; X86-NEXT: cmovnel %ecx, %eax
55+
; X86-NEXT: andl $4194303, %esi # imm = 0x3FFFFF
56+
; X86-NEXT: leal (%esi,%esi), %ecx
57+
; X86-NEXT: subl %ebx, %ecx
58+
; X86-NEXT: subl %ebp, %ecx
59+
; X86-NEXT: cmpl %esi, %ecx
60+
; X86-NEXT: movl %edi, var_50+4
61+
; X86-NEXT: movl %eax, var_50
5662
; X86-NEXT: setge var_205
57-
; X86-NEXT: imull %eax, %edx
58-
; X86-NEXT: movb %dl, var_218
63+
; X86-NEXT: movl %edx, %eax
64+
; X86-NEXT: mulb %bl
65+
; X86-NEXT: movb %al, var_218
5966
; X86-NEXT: popl %esi
6067
; X86-NEXT: .cfi_def_cfa_offset 16
6168
; X86-NEXT: popl %edi
@@ -68,27 +75,33 @@ define void @foo() local_unnamed_addr {
6875
;
6976
; X64-LABEL: foo:
7077
; X64: # %bb.0: # %entry
71-
; X64-NEXT: movsbl var_27(%rip), %eax
72-
; X64-NEXT: movzwl var_2(%rip), %edx
73-
; X64-NEXT: movl var_310(%rip), %ecx
74-
; X64-NEXT: imull %eax, %ecx
75-
; X64-NEXT: addl var_24(%rip), %ecx
76-
; X64-NEXT: movl $4194303, %esi # imm = 0x3FFFFF
77-
; X64-NEXT: andl obj(%rip), %esi
78-
; X64-NEXT: leal (%rsi,%rsi), %edi
79-
; X64-NEXT: subl %eax, %edi
80-
; X64-NEXT: movl %edi, %r8d
81-
; X64-NEXT: subl %edx, %r8d
82-
; X64-NEXT: imull %r8d, %ecx
83-
; X64-NEXT: addb $113, %cl
84-
; X64-NEXT: movl $9, %edx
78+
; X64-NEXT: movl obj(%rip), %esi
79+
; X64-NEXT: leal (%rsi,%rsi), %edx
80+
; X64-NEXT: movzwl var_2(%rip), %ecx
81+
; X64-NEXT: movzwl %cx, %r8d
82+
; X64-NEXT: movzbl var_310(%rip), %eax
83+
; X64-NEXT: movsbl var_27(%rip), %edi
84+
; X64-NEXT: subb %dil, %dl
85+
; X64-NEXT: movl %edx, %r9d
86+
; X64-NEXT: subb %cl, %r9b
87+
; X64-NEXT: mulb %dil
88+
; X64-NEXT: addb var_24(%rip), %al
89+
; X64-NEXT: mulb %r9b
90+
; X64-NEXT: # kill: def $al killed $al def $rax
91+
; X64-NEXT: leal 113(%rax), %ecx
92+
; X64-NEXT: movl $9, %eax
8593
; X64-NEXT: # kill: def $cl killed $cl killed $ecx
86-
; X64-NEXT: shlq %cl, %rdx
87-
; X64-NEXT: movq %rdx, var_50(%rip)
88-
; X64-NEXT: cmpl %esi, %r8d
94+
; X64-NEXT: shlq %cl, %rax
95+
; X64-NEXT: movq %rax, var_50(%rip)
96+
; X64-NEXT: andl $4194303, %esi # imm = 0x3FFFFF
97+
; X64-NEXT: leal (%rsi,%rsi), %eax
98+
; X64-NEXT: subl %edi, %eax
99+
; X64-NEXT: subl %r8d, %eax
100+
; X64-NEXT: cmpl %esi, %eax
89101
; X64-NEXT: setge var_205(%rip)
90-
; X64-NEXT: imull %eax, %edi
91-
; X64-NEXT: movb %dil, var_218(%rip)
102+
; X64-NEXT: movl %edx, %eax
103+
; X64-NEXT: mulb %dil
104+
; X64-NEXT: movb %al, var_218(%rip)
92105
; X64-NEXT: retq
93106
entry:
94107
%bf.load = load i32, ptr @obj, align 8

0 commit comments

Comments
 (0)