brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 1b1bba9 Raw
115 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch64 -mattr=+d -O0 < %s | FileCheck %s --check-prefix=NOSHRINKW3; RUN: llc --mtriple=loongarch64 -mattr=+d -O2 < %s | FileCheck %s --check-prefix=SHRINKW4 5declare void @abort()6 7define void @eliminate_restore(i32 %n) nounwind {8; NOSHRINKW-LABEL: eliminate_restore:9; NOSHRINKW:       # %bb.0:10; NOSHRINKW-NEXT:    addi.d $sp, $sp, -1611; NOSHRINKW-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill12; NOSHRINKW-NEXT:    addi.w $a1, $a0, 013; NOSHRINKW-NEXT:    ori $a0, $zero, 3214; NOSHRINKW-NEXT:    bltu $a0, $a1, .LBB0_215; NOSHRINKW-NEXT:    b .LBB0_116; NOSHRINKW-NEXT:  .LBB0_1: # %if.then17; NOSHRINKW-NEXT:    pcaddu18i $ra, %call36(abort)18; NOSHRINKW-NEXT:    jirl $ra, $ra, 019; NOSHRINKW-NEXT:  .LBB0_2: # %if.end20; NOSHRINKW-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload21; NOSHRINKW-NEXT:    addi.d $sp, $sp, 1622; NOSHRINKW-NEXT:    ret23;24; SHRINKW-LABEL: eliminate_restore:25; SHRINKW:       # %bb.0:26; SHRINKW-NEXT:    addi.w $a0, $a0, 027; SHRINKW-NEXT:    ori $a1, $zero, 3228; SHRINKW-NEXT:    bgeu $a1, $a0, .LBB0_229; SHRINKW-NEXT:  # %bb.1: # %if.end30; SHRINKW-NEXT:    ret31; SHRINKW-NEXT:  .LBB0_2: # %if.then32; SHRINKW-NEXT:    addi.d $sp, $sp, -1633; SHRINKW-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill34; SHRINKW-NEXT:    pcaddu18i $ra, %call36(abort)35; SHRINKW-NEXT:    jirl $ra, $ra, 036  %cmp = icmp ule i32 %n, 3237  br i1 %cmp, label %if.then, label %if.end38 39if.then:40  call void @abort()41  unreachable42 43if.end:44  ret void45}46 47declare void @notdead(ptr)48 49define void @conditional_alloca(i32 %n) nounwind {50; NOSHRINKW-LABEL: conditional_alloca:51; NOSHRINKW:       # %bb.0:52; NOSHRINKW-NEXT:    addi.d $sp, $sp, -3253; NOSHRINKW-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill54; NOSHRINKW-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill55; NOSHRINKW-NEXT:    addi.d $fp, $sp, 3256; NOSHRINKW-NEXT:    addi.w $a1, $a0, 057; NOSHRINKW-NEXT:    st.d $a0, $fp, -24 # 8-byte Folded Spill58; NOSHRINKW-NEXT:    ori $a0, $zero, 3259; NOSHRINKW-NEXT:    bltu $a0, $a1, .LBB1_260; NOSHRINKW-NEXT:    b .LBB1_161; NOSHRINKW-NEXT:  .LBB1_1: # %if.then62; NOSHRINKW-NEXT:    ld.d $a0, $fp, -24 # 8-byte Folded Reload63; NOSHRINKW-NEXT:    bstrpick.d $a0, $a0, 31, 064; NOSHRINKW-NEXT:    addi.d $a0, $a0, 1565; NOSHRINKW-NEXT:    bstrpick.d $a0, $a0, 32, 466; NOSHRINKW-NEXT:    slli.d $a1, $a0, 467; NOSHRINKW-NEXT:    move $a0, $sp68; NOSHRINKW-NEXT:    sub.d $a0, $a0, $a169; NOSHRINKW-NEXT:    move $sp, $a070; NOSHRINKW-NEXT:    pcaddu18i $ra, %call36(notdead)71; NOSHRINKW-NEXT:    jirl $ra, $ra, 072; NOSHRINKW-NEXT:    b .LBB1_273; NOSHRINKW-NEXT:  .LBB1_2: # %if.end74; NOSHRINKW-NEXT:    addi.d $sp, $fp, -3275; NOSHRINKW-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload76; NOSHRINKW-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload77; NOSHRINKW-NEXT:    addi.d $sp, $sp, 3278; NOSHRINKW-NEXT:    ret79;80; SHRINKW-LABEL: conditional_alloca:81; SHRINKW:       # %bb.0:82; SHRINKW-NEXT:    addi.w $a1, $a0, 083; SHRINKW-NEXT:    ori $a2, $zero, 3284; SHRINKW-NEXT:    bltu $a2, $a1, .LBB1_285; SHRINKW-NEXT:  # %bb.1: # %if.then86; SHRINKW-NEXT:    addi.d $sp, $sp, -1687; SHRINKW-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill88; SHRINKW-NEXT:    st.d $fp, $sp, 0 # 8-byte Folded Spill89; SHRINKW-NEXT:    addi.d $fp, $sp, 1690; SHRINKW-NEXT:    bstrpick.d $a0, $a0, 31, 091; SHRINKW-NEXT:    addi.d $a0, $a0, 1592; SHRINKW-NEXT:    bstrpick.d $a0, $a0, 32, 493; SHRINKW-NEXT:    slli.d $a0, $a0, 494; SHRINKW-NEXT:    sub.d $a0, $sp, $a095; SHRINKW-NEXT:    move $sp, $a096; SHRINKW-NEXT:    pcaddu18i $ra, %call36(notdead)97; SHRINKW-NEXT:    jirl $ra, $ra, 098; SHRINKW-NEXT:    addi.d $sp, $fp, -1699; SHRINKW-NEXT:    ld.d $fp, $sp, 0 # 8-byte Folded Reload100; SHRINKW-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload101; SHRINKW-NEXT:    addi.d $sp, $sp, 16102; SHRINKW-NEXT:  .LBB1_2: # %if.end103; SHRINKW-NEXT:    ret104  %cmp = icmp ule i32 %n, 32105  br i1 %cmp, label %if.then, label %if.end106 107if.then:108  %addr = alloca i8, i32 %n109  call void @notdead(ptr %addr)110  br label %if.end111 112if.end:113  ret void114}115