Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/imul.ll
Show First 20 Lines • Show All 303 Lines • ▼ Show 20 Lines | |||||
; X86-NEXT: shll $5, %esi | ; X86-NEXT: shll $5, %esi | ||||
; X86-NEXT: subl %eax, %esi | ; X86-NEXT: subl %eax, %esi | ||||
; X86-NEXT: movl $-31, %edx | ; X86-NEXT: movl $-31, %edx | ||||
; X86-NEXT: movl %ecx, %eax | ; X86-NEXT: movl %ecx, %eax | ||||
; X86-NEXT: mull %edx | ; X86-NEXT: mull %edx | ||||
; X86-NEXT: subl %ecx, %edx | ; X86-NEXT: subl %ecx, %edx | ||||
; X86-NEXT: subl %esi, %edx | ; X86-NEXT: subl %esi, %edx | ||||
; X86-NEXT: popl %esi | ; X86-NEXT: popl %esi | ||||
; X86-NEXT: .Lcfi2: | |||||
; X86-NEXT: .cfi_def_cfa_offset 4 | |||||
; X86-NEXT: retl | ; X86-NEXT: retl | ||||
entry: | entry: | ||||
%tmp3 = mul i64 %a, -31 | %tmp3 = mul i64 %a, -31 | ||||
ret i64 %tmp3 | ret i64 %tmp3 | ||||
} | } | ||||
define i64 @test6(i64 %a) { | define i64 @test6(i64 %a) { | ||||
Show All 26 Lines | |||||
; X64-NEXT: shlq $5, %rax | ; X64-NEXT: shlq $5, %rax | ||||
; X64-NEXT: leaq (%rax,%rdi), %rax | ; X64-NEXT: leaq (%rax,%rdi), %rax | ||||
; X64-NEXT: negq %rax | ; X64-NEXT: negq %rax | ||||
; X64-NEXT: retq | ; X64-NEXT: retq | ||||
; | ; | ||||
; X86-LABEL: test7: | ; X86-LABEL: test7: | ||||
; X86: # BB#0: # %entry | ; X86: # BB#0: # %entry | ||||
; X86-NEXT: pushl %esi | ; X86-NEXT: pushl %esi | ||||
; X86-NEXT: .Lcfi2: | |||||
; X86-NEXT: .cfi_def_cfa_offset 8 | |||||
; X86-NEXT: .Lcfi3: | ; X86-NEXT: .Lcfi3: | ||||
; X86-NEXT: .cfi_def_cfa_offset 8 | |||||
; X86-NEXT: .Lcfi4: | |||||
; X86-NEXT: .cfi_offset %esi, -8 | ; X86-NEXT: .cfi_offset %esi, -8 | ||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X86-NEXT: movl %eax, %esi | ; X86-NEXT: movl %eax, %esi | ||||
; X86-NEXT: shll $5, %esi | ; X86-NEXT: shll $5, %esi | ||||
; X86-NEXT: addl %eax, %esi | ; X86-NEXT: addl %eax, %esi | ||||
; X86-NEXT: movl $-33, %edx | ; X86-NEXT: movl $-33, %edx | ||||
; X86-NEXT: movl %ecx, %eax | ; X86-NEXT: movl %ecx, %eax | ||||
; X86-NEXT: mull %edx | ; X86-NEXT: mull %edx | ||||
; X86-NEXT: subl %ecx, %edx | ; X86-NEXT: subl %ecx, %edx | ||||
; X86-NEXT: subl %esi, %edx | ; X86-NEXT: subl %esi, %edx | ||||
; X86-NEXT: popl %esi | ; X86-NEXT: popl %esi | ||||
; X86-NEXT: .Lcfi5: | |||||
; X86-NEXT: .cfi_def_cfa_offset 4 | |||||
; X86-NEXT: retl | ; X86-NEXT: retl | ||||
entry: | entry: | ||||
%tmp3 = mul i64 %a, -33 | %tmp3 = mul i64 %a, -33 | ||||
ret i64 %tmp3 | ret i64 %tmp3 | ||||
} | } | ||||
define i64 @testOverflow(i64 %a) { | define i64 @testOverflow(i64 %a) { | ||||
; X64-LABEL: testOverflow: | ; X64-LABEL: testOverflow: | ||||
; X64: # BB#0: # %entry | ; X64: # BB#0: # %entry | ||||
; X64-NEXT: movabsq $9223372036854775807, %rax # imm = 0x7FFFFFFFFFFFFFFF | ; X64-NEXT: movabsq $9223372036854775807, %rax # imm = 0x7FFFFFFFFFFFFFFF | ||||
; X64-NEXT: imulq %rdi, %rax | ; X64-NEXT: imulq %rdi, %rax | ||||
; X64-NEXT: retq | ; X64-NEXT: retq | ||||
; | ; | ||||
; X86-LABEL: testOverflow: | ; X86-LABEL: testOverflow: | ||||
; X86: # BB#0: # %entry | ; X86: # BB#0: # %entry | ||||
; X86-NEXT: pushl %esi | ; X86-NEXT: pushl %esi | ||||
; X86-NEXT: .Lcfi4: | ; X86-NEXT: .Lcfi6: | ||||
; X86-NEXT: .cfi_def_cfa_offset 8 | ; X86-NEXT: .cfi_def_cfa_offset 8 | ||||
; X86-NEXT: .Lcfi5: | ; X86-NEXT: .Lcfi7: | ||||
; X86-NEXT: .cfi_offset %esi, -8 | ; X86-NEXT: .cfi_offset %esi, -8 | ||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X86-NEXT: movl $-1, %edx | ; X86-NEXT: movl $-1, %edx | ||||
; X86-NEXT: movl %ecx, %eax | ; X86-NEXT: movl %ecx, %eax | ||||
; X86-NEXT: mull %edx | ; X86-NEXT: mull %edx | ||||
; X86-NEXT: movl %ecx, %esi | ; X86-NEXT: movl %ecx, %esi | ||||
; X86-NEXT: shll $31, %esi | ; X86-NEXT: shll $31, %esi | ||||
; X86-NEXT: subl %ecx, %esi | ; X86-NEXT: subl %ecx, %esi | ||||
; X86-NEXT: addl %esi, %edx | ; X86-NEXT: addl %esi, %edx | ||||
; X86-NEXT: subl {{[0-9]+}}(%esp), %edx | ; X86-NEXT: subl {{[0-9]+}}(%esp), %edx | ||||
; X86-NEXT: popl %esi | ; X86-NEXT: popl %esi | ||||
; X86-NEXT: .Lcfi8: | |||||
; X86-NEXT: .cfi_def_cfa_offset 4 | |||||
; X86-NEXT: retl | ; X86-NEXT: retl | ||||
entry: | entry: | ||||
%tmp3 = mul i64 %a, 9223372036854775807 | %tmp3 = mul i64 %a, 9223372036854775807 | ||||
ret i64 %tmp3 | ret i64 %tmp3 | ||||
} | } |