brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · c1b1c1f Raw
104 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 --mtriple=loongarch64 -mattr=+d --verify-machineinstrs < %s | FileCheck %s3 4;; This test case is reduced from pr17377.c of the GCC C Torture Suite using5;; bugpoint.6 7@calls = external dso_local global i32, align 48declare ptr @llvm.returnaddress(i32 immarg)9 10define dso_local ptr @f(i32 noundef signext %i) "frame-pointer"="all" {11; CHECK-LABEL: f:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    addi.d $sp, $sp, -4814; CHECK-NEXT:    .cfi_def_cfa_offset 4815; CHECK-NEXT:    st.d $ra, $sp, 40 # 8-byte Folded Spill16; CHECK-NEXT:    st.d $fp, $sp, 32 # 8-byte Folded Spill17; CHECK-NEXT:    .cfi_offset 1, -818; CHECK-NEXT:    .cfi_offset 22, -1619; CHECK-NEXT:    addi.d $fp, $sp, 4820; CHECK-NEXT:    .cfi_def_cfa 22, 021; CHECK-NEXT:    st.d $ra, $fp, -40 # 8-byte Folded Spill22; CHECK-NEXT:    # kill: def $r5 killed $r423; CHECK-NEXT:    st.w $a0, $fp, -2824; CHECK-NEXT:    pcalau12i $a0, %pc_hi20(calls)25; CHECK-NEXT:    addi.d $a2, $a0, %pc_lo12(calls)26; CHECK-NEXT:    ld.w $a0, $a2, 027; CHECK-NEXT:    addi.d $a1, $a0, 128; CHECK-NEXT:    st.w $a1, $a2, 029; CHECK-NEXT:    bnez $a0, .LBB0_230; CHECK-NEXT:    b .LBB0_131; CHECK-NEXT:  .LBB0_1: # %if.then32; CHECK-NEXT:    ld.d $a0, $fp, -40 # 8-byte Folded Reload33; CHECK-NEXT:    st.d $a0, $fp, -2434; CHECK-NEXT:    b .LBB0_735; CHECK-NEXT:  .LBB0_2: # %if.end36; CHECK-NEXT:    ld.w $a0, $fp, -2837; CHECK-NEXT:    st.d $a0, $fp, -48 # 8-byte Folded Spill38; CHECK-NEXT:    beqz $a0, .LBB0_539; CHECK-NEXT:    b .LBB0_340; CHECK-NEXT:  .LBB0_3: # %if.end41; CHECK-NEXT:    ld.d $a0, $fp, -48 # 8-byte Folded Reload42; CHECK-NEXT:    addi.w $a0, $a0, 043; CHECK-NEXT:    ori $a1, $zero, 144; CHECK-NEXT:    bne $a0, $a1, .LBB0_645; CHECK-NEXT:    b .LBB0_446; CHECK-NEXT:  .LBB0_4: # %sw.bb47; CHECK-NEXT:    pcalau12i $a0, %pc_hi20(f)48; CHECK-NEXT:    addi.d $a0, $a0, %pc_lo12(f)49; CHECK-NEXT:    st.d $a0, $fp, -2450; CHECK-NEXT:    b .LBB0_751; CHECK-NEXT:  .LBB0_5: # %sw.bb152; CHECK-NEXT:    ld.d $a0, $fp, -40 # 8-byte Folded Reload53; CHECK-NEXT:    st.d $a0, $fp, -2454; CHECK-NEXT:    b .LBB0_755; CHECK-NEXT:  .LBB0_6: # %sw.epilog56; CHECK-NEXT:    move $a0, $zero57; CHECK-NEXT:    st.d $a0, $fp, -2458; CHECK-NEXT:    b .LBB0_759; CHECK-NEXT:  .LBB0_7: # %return60; CHECK-NEXT:    ld.d $a0, $fp, -2461; CHECK-NEXT:    ld.d $fp, $sp, 32 # 8-byte Folded Reload62; CHECK-NEXT:    ld.d $ra, $sp, 40 # 8-byte Folded Reload63; CHECK-NEXT:    addi.d $sp, $sp, 4864; CHECK-NEXT:    ret65entry:66  %retval = alloca ptr, align 867  %i.addr = alloca i32, align 468  store i32 %i, ptr %i.addr, align 469  %0 = load i32, ptr @calls, align 470  %inc = add nsw i32 %0, 171  store i32 %inc, ptr @calls, align 472  %cmp = icmp eq i32 %0, 073  br i1 %cmp, label %if.then, label %if.end74 75if.then:76  %1 = call ptr @llvm.returnaddress(i32 0)77  store ptr %1, ptr %retval, align 878  br label %return79 80if.end:81  %2 = load i32, ptr %i.addr, align 482  switch i32 %2, label %sw.epilog [83    i32 1, label %sw.bb84    i32 0, label %sw.bb185  ]86 87sw.bb:88  store ptr @f, ptr %retval, align 889  br label %return90 91sw.bb1:92  %3 = call ptr @llvm.returnaddress(i32 0)93  store ptr %3, ptr %retval, align 894  br label %return95 96sw.epilog:97  store ptr null, ptr %retval, align 898  br label %return99 100return:101  %4 = load ptr, ptr %retval, align 8102  ret ptr %4103}104