brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · 1ce0a80 Raw
270 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=x86_64-linux-gnu | FileCheck %s --check-prefixes=X64,DAG-X643; RUN: llc < %s -mtriple=x86_64-linux-gnu -fast-isel | FileCheck %s --check-prefixes=X64,FASTISEL-X644; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X645; RUN: llc < %s -mtriple=i686-linux-gnu | FileCheck %s --check-prefixes=X86,DAG-X866; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel | FileCheck %s --check-prefixes=X86,FASTISEL-X867; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X868 9define i8 @smax_i8(i8 %a, i8 %b) nounwind readnone {10; DAG-X64-LABEL: smax_i8:11; DAG-X64:       # %bb.0:12; DAG-X64-NEXT:    movl %esi, %eax13; DAG-X64-NEXT:    cmpb %al, %dil14; DAG-X64-NEXT:    cmovgl %edi, %eax15; DAG-X64-NEXT:    # kill: def $al killed $al killed $eax16; DAG-X64-NEXT:    retq17;18; FASTISEL-X64-LABEL: smax_i8:19; FASTISEL-X64:       # %bb.0:20; FASTISEL-X64-NEXT:    movzbl %dil, %ecx21; FASTISEL-X64-NEXT:    movzbl %sil, %eax22; FASTISEL-X64-NEXT:    cmpb %al, %cl23; FASTISEL-X64-NEXT:    cmovgl %ecx, %eax24; FASTISEL-X64-NEXT:    # kill: def $al killed $al killed $eax25; FASTISEL-X64-NEXT:    retq26;27; GISEL-X64-LABEL: smax_i8:28; GISEL-X64:       # %bb.0:29; GISEL-X64-NEXT:    movl %esi, %eax30; GISEL-X64-NEXT:    xorl %ecx, %ecx31; GISEL-X64-NEXT:    cmpb %al, %dil32; GISEL-X64-NEXT:    setg %cl33; GISEL-X64-NEXT:    andl $1, %ecx34; GISEL-X64-NEXT:    cmovnew %di, %ax35; GISEL-X64-NEXT:    # kill: def $al killed $al killed $eax36; GISEL-X64-NEXT:    retq37;38; X86-LABEL: smax_i8:39; X86:       # %bb.0:40; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx41; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax42; X86-NEXT:    cmpb %cl, %al43; X86-NEXT:    jg .LBB0_244; X86-NEXT:  # %bb.1:45; X86-NEXT:    movl %ecx, %eax46; X86-NEXT:  .LBB0_2:47; X86-NEXT:    retl48;49; GISEL-X86-LABEL: smax_i8:50; GISEL-X86:       # %bb.0:51; GISEL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx52; GISEL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax53; GISEL-X86-NEXT:    xorl %edx, %edx54; GISEL-X86-NEXT:    cmpb %al, %cl55; GISEL-X86-NEXT:    setg %dl56; GISEL-X86-NEXT:    andl $1, %edx57; GISEL-X86-NEXT:    je .LBB0_258; GISEL-X86-NEXT:  # %bb.1:59; GISEL-X86-NEXT:    movl %ecx, %eax60; GISEL-X86-NEXT:  .LBB0_2:61; GISEL-X86-NEXT:    # kill: def $al killed $al killed $eax62; GISEL-X86-NEXT:    retl63    %ret = call i8 @llvm.smax.i8(i8 %a, i8 %b)64    ret i8 %ret65}66define i16 @smax_i16(i16 %a, i16 %b) nounwind readnone {67; X64-LABEL: smax_i16:68; X64:       # %bb.0:69; X64-NEXT:    movl %esi, %eax70; X64-NEXT:    cmpw %ax, %di71; X64-NEXT:    cmovgl %edi, %eax72; X64-NEXT:    # kill: def $ax killed $ax killed $eax73; X64-NEXT:    retq74;75; GISEL-X64-LABEL: smax_i16:76; GISEL-X64:       # %bb.0:77; GISEL-X64-NEXT:    movl %edi, %eax78; GISEL-X64-NEXT:    xorl %ecx, %ecx79; GISEL-X64-NEXT:    cmpw %si, %ax80; GISEL-X64-NEXT:    setg %cl81; GISEL-X64-NEXT:    andl $1, %ecx82; GISEL-X64-NEXT:    cmovew %si, %ax83; GISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax84; GISEL-X64-NEXT:    retq85;86; DAG-X86-LABEL: smax_i16:87; DAG-X86:       # %bb.0:88; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx89; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax90; DAG-X86-NEXT:    cmpw %cx, %ax91; DAG-X86-NEXT:    jg .LBB1_292; DAG-X86-NEXT:  # %bb.1:93; DAG-X86-NEXT:    movl %ecx, %eax94; DAG-X86-NEXT:  .LBB1_2:95; DAG-X86-NEXT:    # kill: def $ax killed $ax killed $eax96; DAG-X86-NEXT:    retl97;98; FASTISEL-X86-LABEL: smax_i16:99; FASTISEL-X86:       # %bb.0:100; FASTISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx101; FASTISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax102; FASTISEL-X86-NEXT:    cmpw %cx, %ax103; FASTISEL-X86-NEXT:    jg .LBB1_2104; FASTISEL-X86-NEXT:  # %bb.1:105; FASTISEL-X86-NEXT:    movl %ecx, %eax106; FASTISEL-X86-NEXT:  .LBB1_2:107; FASTISEL-X86-NEXT:    # kill: def $ax killed $ax killed $eax108; FASTISEL-X86-NEXT:    retl109;110; GISEL-X86-LABEL: smax_i16:111; GISEL-X86:       # %bb.0:112; GISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx113; GISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax114; GISEL-X86-NEXT:    xorl %edx, %edx115; GISEL-X86-NEXT:    cmpw %ax, %cx116; GISEL-X86-NEXT:    setg %dl117; GISEL-X86-NEXT:    andl $1, %edx118; GISEL-X86-NEXT:    je .LBB1_2119; GISEL-X86-NEXT:  # %bb.1:120; GISEL-X86-NEXT:    movl %ecx, %eax121; GISEL-X86-NEXT:  .LBB1_2:122; GISEL-X86-NEXT:    # kill: def $ax killed $ax killed $eax123; GISEL-X86-NEXT:    retl124    %ret = call i16 @llvm.smax.i16(i16 %a, i16 %b)125    ret i16 %ret126}127define i32 @smax_i32(i32 %a, i32 %b) nounwind readnone {128; X64-LABEL: smax_i32:129; X64:       # %bb.0:130; X64-NEXT:    movl %esi, %eax131; X64-NEXT:    cmpl %esi, %edi132; X64-NEXT:    cmovgl %edi, %eax133; X64-NEXT:    retq134;135; GISEL-X64-LABEL: smax_i32:136; GISEL-X64:       # %bb.0:137; GISEL-X64-NEXT:    movl %edi, %eax138; GISEL-X64-NEXT:    xorl %ecx, %ecx139; GISEL-X64-NEXT:    cmpl %esi, %edi140; GISEL-X64-NEXT:    setg %cl141; GISEL-X64-NEXT:    andl $1, %ecx142; GISEL-X64-NEXT:    cmovel %esi, %eax143; GISEL-X64-NEXT:    retq144;145; X86-LABEL: smax_i32:146; X86:       # %bb.0:147; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx148; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax149; X86-NEXT:    cmpl %ecx, %eax150; X86-NEXT:    jg .LBB2_2151; X86-NEXT:  # %bb.1:152; X86-NEXT:    movl %ecx, %eax153; X86-NEXT:  .LBB2_2:154; X86-NEXT:    retl155;156; GISEL-X86-LABEL: smax_i32:157; GISEL-X86:       # %bb.0:158; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx159; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax160; GISEL-X86-NEXT:    xorl %edx, %edx161; GISEL-X86-NEXT:    cmpl %eax, %ecx162; GISEL-X86-NEXT:    setg %dl163; GISEL-X86-NEXT:    andl $1, %edx164; GISEL-X86-NEXT:    je .LBB2_2165; GISEL-X86-NEXT:  # %bb.1:166; GISEL-X86-NEXT:    movl %ecx, %eax167; GISEL-X86-NEXT:  .LBB2_2:168; GISEL-X86-NEXT:    retl169    %ret = call i32 @llvm.smax.i32(i32 %a, i32 %b)170    ret i32 %ret171}172define i64 @smax_i64(i64 %a, i64 %b) nounwind readnone {173; X64-LABEL: smax_i64:174; X64:       # %bb.0:175; X64-NEXT:    movq %rsi, %rax176; X64-NEXT:    cmpq %rsi, %rdi177; X64-NEXT:    cmovgq %rdi, %rax178; X64-NEXT:    retq179;180; GISEL-X64-LABEL: smax_i64:181; GISEL-X64:       # %bb.0:182; GISEL-X64-NEXT:    movq %rdi, %rax183; GISEL-X64-NEXT:    xorl %ecx, %ecx184; GISEL-X64-NEXT:    cmpq %rsi, %rdi185; GISEL-X64-NEXT:    setg %cl186; GISEL-X64-NEXT:    andl $1, %ecx187; GISEL-X64-NEXT:    cmoveq %rsi, %rax188; GISEL-X64-NEXT:    retq189;190; DAG-X86-LABEL: smax_i64:191; DAG-X86:       # %bb.0:192; DAG-X86-NEXT:    pushl %edi193; DAG-X86-NEXT:    pushl %esi194; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax195; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx196; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx197; DAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi198; DAG-X86-NEXT:    cmpl %eax, %ecx199; DAG-X86-NEXT:    movl %esi, %edi200; DAG-X86-NEXT:    sbbl %edx, %edi201; DAG-X86-NEXT:    jl .LBB3_2202; DAG-X86-NEXT:  # %bb.1:203; DAG-X86-NEXT:    movl %ecx, %eax204; DAG-X86-NEXT:    movl %esi, %edx205; DAG-X86-NEXT:  .LBB3_2:206; DAG-X86-NEXT:    popl %esi207; DAG-X86-NEXT:    popl %edi208; DAG-X86-NEXT:    retl209;210; FASTISEL-X86-LABEL: smax_i64:211; FASTISEL-X86:       # %bb.0:212; FASTISEL-X86-NEXT:    pushl %edi213; FASTISEL-X86-NEXT:    pushl %esi214; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx215; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi216; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx217; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax218; FASTISEL-X86-NEXT:    cmpl %eax, %esi219; FASTISEL-X86-NEXT:    movl %ecx, %edi220; FASTISEL-X86-NEXT:    sbbl %edx, %edi221; FASTISEL-X86-NEXT:    jl .LBB3_2222; FASTISEL-X86-NEXT:  # %bb.1:223; FASTISEL-X86-NEXT:    movl %esi, %eax224; FASTISEL-X86-NEXT:    movl %ecx, %edx225; FASTISEL-X86-NEXT:  .LBB3_2:226; FASTISEL-X86-NEXT:    popl %esi227; FASTISEL-X86-NEXT:    popl %edi228; FASTISEL-X86-NEXT:    retl229;230; GISEL-X86-LABEL: smax_i64:231; GISEL-X86:       # %bb.0:232; GISEL-X86-NEXT:    pushl %ebp233; GISEL-X86-NEXT:    pushl %ebx234; GISEL-X86-NEXT:    pushl %edi235; GISEL-X86-NEXT:    pushl %esi236; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi237; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp238; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax239; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx240; GISEL-X86-NEXT:    cmpl %eax, %esi241; GISEL-X86-NEXT:    seta %bl242; GISEL-X86-NEXT:    xorl %ecx, %ecx243; GISEL-X86-NEXT:    cmpl %edx, %ebp244; GISEL-X86-NEXT:    setg %bh245; GISEL-X86-NEXT:    sete %cl246; GISEL-X86-NEXT:    testl %ecx, %ecx247; GISEL-X86-NEXT:    je .LBB3_2248; GISEL-X86-NEXT:  # %bb.1:249; GISEL-X86-NEXT:    movb %bl, %bh250; GISEL-X86-NEXT:  .LBB3_2:251; GISEL-X86-NEXT:    movzbl %bh, %edi252; GISEL-X86-NEXT:    andl $1, %edi253; GISEL-X86-NEXT:    je .LBB3_4254; GISEL-X86-NEXT:  # %bb.3:255; GISEL-X86-NEXT:    movl %esi, %eax256; GISEL-X86-NEXT:  .LBB3_4:257; GISEL-X86-NEXT:    testl %edi, %edi258; GISEL-X86-NEXT:    je .LBB3_6259; GISEL-X86-NEXT:  # %bb.5:260; GISEL-X86-NEXT:    movl %ebp, %edx261; GISEL-X86-NEXT:  .LBB3_6:262; GISEL-X86-NEXT:    popl %esi263; GISEL-X86-NEXT:    popl %edi264; GISEL-X86-NEXT:    popl %ebx265; GISEL-X86-NEXT:    popl %ebp266; GISEL-X86-NEXT:    retl267    %ret = call i64 @llvm.smax.i64(i64 %a, i64 %b)268    ret i64 %ret269}270