diff options
Diffstat (limited to 'test/CodeGen/X86/GlobalISel/add-scalar.ll')
-rw-r--r-- | test/CodeGen/X86/GlobalISel/add-scalar.ll | 94 |
1 files changed, 72 insertions, 22 deletions
diff --git a/test/CodeGen/X86/GlobalISel/add-scalar.ll b/test/CodeGen/X86/GlobalISel/add-scalar.ll index 553bc2789ff0..85db1c0e7e7a 100644 --- a/test/CodeGen/X86/GlobalISel/add-scalar.ll +++ b/test/CodeGen/X86/GlobalISel/add-scalar.ll @@ -1,44 +1,94 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=x86_64-linux-gnu -global-isel < %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=X64 +; RUN: llc -mtriple=i386-linux-gnu -global-isel < %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=X32 define i64 @test_add_i64(i64 %arg1, i64 %arg2) { -; ALL-LABEL: test_add_i64: -; ALL: # BB#0: -; ALL-NEXT: leaq (%rsi,%rdi), %rax -; ALL-NEXT: retq +; X64-LABEL: test_add_i64: +; X64: # BB#0: +; X64-NEXT: leaq (%rsi,%rdi), %rax +; X64-NEXT: retq +; +; X32-LABEL: test_add_i64: +; X32: # BB#0: +; X32-NEXT: pushl %ebp +; X32-NEXT: .Lcfi0: +; X32-NEXT: .cfi_def_cfa_offset 8 +; X32-NEXT: .Lcfi1: +; X32-NEXT: .cfi_offset %ebp, -8 +; X32-NEXT: movl %esp, %ebp +; X32-NEXT: .Lcfi2: +; X32-NEXT: .cfi_def_cfa_register %ebp +; X32-NEXT: pushl %esi +; X32-NEXT: .Lcfi3: +; X32-NEXT: .cfi_offset %esi, -12 +; X32-NEXT: leal 8(%ebp), %ecx +; X32-NEXT: leal 12(%ebp), %esi +; X32-NEXT: leal 16(%ebp), %eax +; X32-NEXT: movl (%eax), %eax +; X32-NEXT: leal 20(%ebp), %edx +; X32-NEXT: movl (%edx), %edx +; X32-NEXT: addl (%ecx), %eax +; X32-NEXT: adcl (%esi), %edx +; X32-NEXT: popl %esi +; X32-NEXT: popl %ebp +; X32-NEXT: retl %ret = add i64 %arg1, %arg2 ret i64 %ret } define i32 @test_add_i32(i32 %arg1, i32 %arg2) { -; ALL-LABEL: test_add_i32: -; ALL: # BB#0: -; ALL-NEXT: # kill: %EDI<def> %EDI<kill> %RDI<def> -; ALL-NEXT: # kill: %ESI<def> %ESI<kill> %RSI<def> -; ALL-NEXT: leal (%rsi,%rdi), %eax -; ALL-NEXT: retq +; X64-LABEL: test_add_i32: +; X64: # BB#0: +; X64-NEXT: # kill: %EDI<def> %EDI<kill> %RDI<def> +; X64-NEXT: # kill: %ESI<def> %ESI<kill> %RSI<def> +; X64-NEXT: leal (%rsi,%rdi), %eax +; X64-NEXT: retq +; +; X32-LABEL: test_add_i32: +; X32: # BB#0: +; X32-NEXT: leal 4(%esp), %ecx +; X32-NEXT: leal 8(%esp), %eax +; X32-NEXT: movl (%eax), %eax +; X32-NEXT: addl (%ecx), %eax +; X32-NEXT: retl %ret = add i32 %arg1, %arg2 ret i32 %ret } define i16 @test_add_i16(i16 %arg1, i16 %arg2) { -; ALL-LABEL: test_add_i16: -; ALL: # BB#0: -; ALL-NEXT: # kill: %DI<def> %DI<kill> %RDI<def> -; ALL-NEXT: # kill: %SI<def> %SI<kill> %RSI<def> -; ALL-NEXT: leal (%rsi,%rdi), %eax -; ALL-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill> -; ALL-NEXT: retq +; X64-LABEL: test_add_i16: +; X64: # BB#0: +; X64-NEXT: # kill: %DI<def> %DI<kill> %RDI<def> +; X64-NEXT: # kill: %SI<def> %SI<kill> %RSI<def> +; X64-NEXT: leal (%rsi,%rdi), %eax +; X64-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill> +; X64-NEXT: retq +; +; X32-LABEL: test_add_i16: +; X32: # BB#0: +; X32-NEXT: leal 4(%esp), %ecx +; X32-NEXT: leal 8(%esp), %eax +; X32-NEXT: movzwl (%eax), %eax +; X32-NEXT: addw (%ecx), %ax +; X32-NEXT: retl %ret = add i16 %arg1, %arg2 ret i16 %ret } define i8 @test_add_i8(i8 %arg1, i8 %arg2) { -; ALL-LABEL: test_add_i8: -; ALL: # BB#0: -; ALL-NEXT: addb %dil, %sil -; ALL-NEXT: movl %esi, %eax -; ALL-NEXT: retq +; X64-LABEL: test_add_i8: +; X64: # BB#0: +; X64-NEXT: addb %dil, %sil +; X64-NEXT: movl %esi, %eax +; X64-NEXT: retq +; +; X32-LABEL: test_add_i8: +; X32: # BB#0: +; X32-NEXT: leal 4(%esp), %ecx +; X32-NEXT: leal 8(%esp), %eax +; X32-NEXT: movb (%eax), %al +; X32-NEXT: addb (%ecx), %al +; X32-NEXT: retl %ret = add i8 %arg1, %arg2 ret i8 %ret } |