brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · fdc650e Raw
150 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=RV32I %s4; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \5; RUN:   | FileCheck -check-prefix=RV64I %s6 7declare void @notdead(ptr)8 9define ptr @test_frameaddress_0() nounwind {10; RV32I-LABEL: test_frameaddress_0:11; RV32I:       # %bb.0:12; RV32I-NEXT:    addi sp, sp, -1613; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill14; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill15; RV32I-NEXT:    addi s0, sp, 1616; RV32I-NEXT:    mv a0, s017; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload18; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload19; RV32I-NEXT:    addi sp, sp, 1620; RV32I-NEXT:    ret21;22; RV64I-LABEL: test_frameaddress_0:23; RV64I:       # %bb.0:24; RV64I-NEXT:    addi sp, sp, -1625; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill26; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill27; RV64I-NEXT:    addi s0, sp, 1628; RV64I-NEXT:    mv a0, s029; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload30; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload31; RV64I-NEXT:    addi sp, sp, 1632; RV64I-NEXT:    ret33  %1 = call ptr @llvm.frameaddress(i32 0)34  ret ptr %135}36 37define ptr @test_frameaddress_2() nounwind {38; RV32I-LABEL: test_frameaddress_2:39; RV32I:       # %bb.0:40; RV32I-NEXT:    addi sp, sp, -1641; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill42; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill43; RV32I-NEXT:    addi s0, sp, 1644; RV32I-NEXT:    lw a0, -8(s0)45; RV32I-NEXT:    lw a0, -8(a0)46; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload47; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload48; RV32I-NEXT:    addi sp, sp, 1649; RV32I-NEXT:    ret50;51; RV64I-LABEL: test_frameaddress_2:52; RV64I:       # %bb.0:53; RV64I-NEXT:    addi sp, sp, -1654; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill55; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill56; RV64I-NEXT:    addi s0, sp, 1657; RV64I-NEXT:    ld a0, -16(s0)58; RV64I-NEXT:    ld a0, -16(a0)59; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload60; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload61; RV64I-NEXT:    addi sp, sp, 1662; RV64I-NEXT:    ret63  %1 = call ptr @llvm.frameaddress(i32 2)64  ret ptr %165}66 67define ptr @test_frameaddress_3_alloca() nounwind {68; RV32I-LABEL: test_frameaddress_3_alloca:69; RV32I:       # %bb.0:70; RV32I-NEXT:    addi sp, sp, -11271; RV32I-NEXT:    sw ra, 108(sp) # 4-byte Folded Spill72; RV32I-NEXT:    sw s0, 104(sp) # 4-byte Folded Spill73; RV32I-NEXT:    addi s0, sp, 11274; RV32I-NEXT:    addi a0, s0, -10875; RV32I-NEXT:    call notdead76; RV32I-NEXT:    lw a0, -8(s0)77; RV32I-NEXT:    lw a0, -8(a0)78; RV32I-NEXT:    lw a0, -8(a0)79; RV32I-NEXT:    lw ra, 108(sp) # 4-byte Folded Reload80; RV32I-NEXT:    lw s0, 104(sp) # 4-byte Folded Reload81; RV32I-NEXT:    addi sp, sp, 11282; RV32I-NEXT:    ret83;84; RV64I-LABEL: test_frameaddress_3_alloca:85; RV64I:       # %bb.0:86; RV64I-NEXT:    addi sp, sp, -12887; RV64I-NEXT:    sd ra, 120(sp) # 8-byte Folded Spill88; RV64I-NEXT:    sd s0, 112(sp) # 8-byte Folded Spill89; RV64I-NEXT:    addi s0, sp, 12890; RV64I-NEXT:    addi a0, s0, -11691; RV64I-NEXT:    call notdead92; RV64I-NEXT:    ld a0, -16(s0)93; RV64I-NEXT:    ld a0, -16(a0)94; RV64I-NEXT:    ld a0, -16(a0)95; RV64I-NEXT:    ld ra, 120(sp) # 8-byte Folded Reload96; RV64I-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload97; RV64I-NEXT:    addi sp, sp, 12898; RV64I-NEXT:    ret99  %1 = alloca [100 x i8]100  call void @notdead(ptr %1)101  %2 = call ptr @llvm.frameaddress(i32 3)102  ret ptr %2103}104 105define ptr @test_returnaddress_0() nounwind {106; RV32I-LABEL: test_returnaddress_0:107; RV32I:       # %bb.0:108; RV32I-NEXT:    mv a0, ra109; RV32I-NEXT:    ret110;111; RV64I-LABEL: test_returnaddress_0:112; RV64I:       # %bb.0:113; RV64I-NEXT:    mv a0, ra114; RV64I-NEXT:    ret115  %1 = call ptr @llvm.returnaddress(i32 0)116  ret ptr %1117}118 119define ptr @test_returnaddress_2() nounwind {120; RV32I-LABEL: test_returnaddress_2:121; RV32I:       # %bb.0:122; RV32I-NEXT:    addi sp, sp, -16123; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill124; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill125; RV32I-NEXT:    addi s0, sp, 16126; RV32I-NEXT:    lw a0, -8(s0)127; RV32I-NEXT:    lw a0, -8(a0)128; RV32I-NEXT:    lw a0, -4(a0)129; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload130; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload131; RV32I-NEXT:    addi sp, sp, 16132; RV32I-NEXT:    ret133;134; RV64I-LABEL: test_returnaddress_2:135; RV64I:       # %bb.0:136; RV64I-NEXT:    addi sp, sp, -16137; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill138; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill139; RV64I-NEXT:    addi s0, sp, 16140; RV64I-NEXT:    ld a0, -16(s0)141; RV64I-NEXT:    ld a0, -16(a0)142; RV64I-NEXT:    ld a0, -8(a0)143; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload144; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload145; RV64I-NEXT:    addi sp, sp, 16146; RV64I-NEXT:    ret147  %1 = call ptr @llvm.returnaddress(i32 2)148  ret ptr %1149}150