@@ -98,3 +98,48 @@ define i64 @add_shl_zext(ptr %ptr, i8 %arg) nounwind {
98
98
%sum = add i64 %val , %shl
99
99
ret i64 %sum
100
100
}
101
+
102
+ define i32 @PR55714_i32 (i32 %n , i32 %q ) {
103
+ ; X86-LABEL: PR55714_i32:
104
+ ; X86: # %bb.0:
105
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
106
+ ; X86-NEXT: leal (,%ecx,8), %eax
107
+ ; X86-NEXT: subl %ecx, %eax
108
+ ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
109
+ ; X86-NEXT: retl
110
+ ;
111
+ ; X64-LABEL: PR55714_i32:
112
+ ; X64: # %bb.0:
113
+ ; X64-NEXT: # kill: def $esi killed $esi def $rsi
114
+ ; X64-NEXT: leal (,%rsi,8), %eax
115
+ ; X64-NEXT: subl %esi, %eax
116
+ ; X64-NEXT: addl %edi, %eax
117
+ ; X64-NEXT: retq
118
+ %mul = mul i32 %q , 7
119
+ %add = add i32 %mul , %n
120
+ ret i32 %add
121
+ }
122
+
123
+ define i64 @PR55714_i64 (i64 %n , i64 %q ) {
124
+ ; X86-LABEL: PR55714_i64:
125
+ ; X86: # %bb.0:
126
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
127
+ ; X86-NEXT: leal (,%eax,8), %ecx
128
+ ; X86-NEXT: subl %eax, %ecx
129
+ ; X86-NEXT: movl $7, %eax
130
+ ; X86-NEXT: mull {{[0-9]+}}(%esp)
131
+ ; X86-NEXT: addl %ecx, %edx
132
+ ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
133
+ ; X86-NEXT: adcl {{[0-9]+}}(%esp), %edx
134
+ ; X86-NEXT: retl
135
+ ;
136
+ ; X64-LABEL: PR55714_i64:
137
+ ; X64: # %bb.0:
138
+ ; X64-NEXT: leaq (,%rsi,8), %rax
139
+ ; X64-NEXT: subq %rsi, %rax
140
+ ; X64-NEXT: addq %rdi, %rax
141
+ ; X64-NEXT: retq
142
+ %mul = mul i64 %q , 7
143
+ %add = add i64 %mul , %n
144
+ ret i64 %add
145
+ }
0 commit comments