brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 7cdfd51 Raw
148 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux-gnu -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X643; RUN: llc -mtriple=i386-linux-gnu   -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X864 5define i128 @test_add_i128(i128 %arg1, i128 %arg2) nounwind {6; X64-LABEL: test_add_i128:7; X64:       # %bb.0:8; X64-NEXT:    movq %rdx, %rax9; X64-NEXT:    addq %rdi, %rax10; X64-NEXT:    setb %dl11; X64-NEXT:    cmpb $1, %dl12; X64-NEXT:    adcq %rsi, %rcx13; X64-NEXT:    movq %rcx, %rdx14; X64-NEXT:    retq15;16; X86-LABEL: test_add_i128:17; X86:       # %bb.0:18; X86-NEXT:    pushl %ebx19; X86-NEXT:    pushl %edi20; X86-NEXT:    pushl %esi21; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax22; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx23; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx24; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi25; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi26; X86-NEXT:    addl {{[0-9]+}}(%esp), %ecx27; X86-NEXT:    setb %bl28; X86-NEXT:    cmpb $1, %bl29; X86-NEXT:    adcl {{[0-9]+}}(%esp), %edx30; X86-NEXT:    setb %bl31; X86-NEXT:    cmpb $1, %bl32; X86-NEXT:    adcl {{[0-9]+}}(%esp), %esi33; X86-NEXT:    setb %bl34; X86-NEXT:    cmpb $1, %bl35; X86-NEXT:    adcl {{[0-9]+}}(%esp), %edi36; X86-NEXT:    movl %ecx, (%eax)37; X86-NEXT:    movl %edx, 4(%eax)38; X86-NEXT:    movl %esi, 8(%eax)39; X86-NEXT:    movl %edi, 12(%eax)40; X86-NEXT:    popl %esi41; X86-NEXT:    popl %edi42; X86-NEXT:    popl %ebx43; X86-NEXT:    retl44  %ret = add i128 %arg1, %arg245  ret i128 %ret46}47 48define i64 @test_add_i64(i64 %arg1, i64 %arg2) {49; X64-LABEL: test_add_i64:50; X64:       # %bb.0:51; X64-NEXT:    leaq (%rsi,%rdi), %rax52; X64-NEXT:    retq53;54; X86-LABEL: test_add_i64:55; X86:       # %bb.0:56; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax57; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx58; X86-NEXT:    addl {{[0-9]+}}(%esp), %eax59; X86-NEXT:    setb %cl60; X86-NEXT:    cmpb $1, %cl61; X86-NEXT:    adcl {{[0-9]+}}(%esp), %edx62; X86-NEXT:    retl63  %ret = add i64 %arg1, %arg264  ret i64 %ret65}66 67define i32 @test_add_i32(i32 %arg1, i32 %arg2) {68; X64-LABEL: test_add_i32:69; X64:       # %bb.0:70; X64-NEXT:    # kill: def $edi killed $edi def $rdi71; X64-NEXT:    # kill: def $esi killed $esi def $rsi72; X64-NEXT:    leal (%rsi,%rdi), %eax73; X64-NEXT:    retq74;75; X86-LABEL: test_add_i32:76; X86:       # %bb.0:77; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax78; X86-NEXT:    addl {{[0-9]+}}(%esp), %eax79; X86-NEXT:    retl80  %ret = add i32 %arg1, %arg281  ret i32 %ret82}83 84define i16 @test_add_i16(i16 %arg1, i16 %arg2) {85; X64-LABEL: test_add_i16:86; X64:       # %bb.0:87; X64-NEXT:    # kill: def $edi killed $edi def $rdi88; X64-NEXT:    # kill: def $esi killed $esi def $rsi89; X64-NEXT:    leal (%rsi,%rdi), %eax90; X64-NEXT:    # kill: def $ax killed $ax killed $eax91; X64-NEXT:    retq92;93; X86-LABEL: test_add_i16:94; X86:       # %bb.0:95; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx96; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax97; X86-NEXT:    addw %cx, %ax98; X86-NEXT:    # kill: def $ax killed $ax killed $eax99; X86-NEXT:    retl100  %ret = add i16 %arg1, %arg2101  ret i16 %ret102}103 104define i8 @test_add_i8(i8 %arg1, i8 %arg2) {105; X64-LABEL: test_add_i8:106; X64:       # %bb.0:107; X64-NEXT:    # kill: def $edi killed $edi def $rdi108; X64-NEXT:    # kill: def $esi killed $esi def $rsi109; X64-NEXT:    leal (%rsi,%rdi), %eax110; X64-NEXT:    # kill: def $al killed $al killed $eax111; X64-NEXT:    retq112;113; X86-LABEL: test_add_i8:114; X86:       # %bb.0:115; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx116; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax117; X86-NEXT:    addb %cl, %al118; X86-NEXT:    # kill: def $al killed $al killed $eax119; X86-NEXT:    retl120  %ret = add i8 %arg1, %arg2121  ret i8 %ret122}123 124define i32 @test_add_i1(i32 %arg1, i32 %arg2) {125; X64-LABEL: test_add_i1:126; X64:       # %bb.0:127; X64-NEXT:    cmpl %esi, %edi128; X64-NEXT:    sete %al129; X64-NEXT:    addb %al, %al130; X64-NEXT:    movzbl %al, %eax131; X64-NEXT:    andl $1, %eax132; X64-NEXT:    retq133;134; X86-LABEL: test_add_i1:135; X86:       # %bb.0:136; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax137; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)138; X86-NEXT:    sete %al139; X86-NEXT:    addb %al, %al140; X86-NEXT:    movzbl %al, %eax141; X86-NEXT:    andl $1, %eax142; X86-NEXT:    retl143  %c = icmp eq i32 %arg1, %arg2144  %x = add i1 %c , %c145  %ret = zext i1 %x to i32146  ret i32 %ret147}148