brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · c6621c9 Raw
140 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=small -mattr=+2e3 | FileCheck %s --check-prefix=CHECK-PIC-SMALL4; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=large -mattr=+2e3 | FileCheck %s --check-prefix=CHECK-PIC-LARGE5 6@p_fun = global ptr @bar, align 87 8declare void @bar(i32, i32)9 10define void @foo(i32 %a, ptr %ptr){11; CHECK-LABEL: foo:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    subi16 sp, sp, 414; CHECK-NEXT:    .cfi_def_cfa_offset 415; CHECK-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill16; CHECK-NEXT:    .cfi_offset lr, -417; CHECK-NEXT:    .cfi_def_cfa_offset 418; CHECK-NEXT:    ld16.w a1, (a1, 0)19; CHECK-NEXT:    jsri32 [.LCPI0_0]20; CHECK-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload21; CHECK-NEXT:    addi16 sp, sp, 422; CHECK-NEXT:    rts1623;24; CHECK-PIC-SMALL-LABEL: foo:25; CHECK-PIC-SMALL:       # %bb.0: # %entry26; CHECK-PIC-SMALL-NEXT:    subi16 sp, sp, 827; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 828; CHECK-PIC-SMALL-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill29; CHECK-PIC-SMALL-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill30; CHECK-PIC-SMALL-NEXT:    .cfi_offset rgb, -431; CHECK-PIC-SMALL-NEXT:    .cfi_offset lr, -832; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 833; CHECK-PIC-SMALL-NEXT:    lrw32 rgb, [.LCPI0_0]34; CHECK-PIC-SMALL-NEXT:    ld16.w a1, (a1, 0)35; CHECK-PIC-SMALL-NEXT:    lrw32 a2, [.LCPI0_1]36; CHECK-PIC-SMALL-NEXT:    ldr32.w a2, (rgb, a2 << 0)37; CHECK-PIC-SMALL-NEXT:    jsr16 a238; CHECK-PIC-SMALL-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload39; CHECK-PIC-SMALL-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload40; CHECK-PIC-SMALL-NEXT:    addi16 sp, sp, 841; CHECK-PIC-SMALL-NEXT:    rts1642;43; CHECK-PIC-LARGE-LABEL: foo:44; CHECK-PIC-LARGE:       # %bb.0: # %entry45; CHECK-PIC-LARGE-NEXT:    subi16 sp, sp, 846; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 847; CHECK-PIC-LARGE-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill48; CHECK-PIC-LARGE-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill49; CHECK-PIC-LARGE-NEXT:    .cfi_offset rgb, -450; CHECK-PIC-LARGE-NEXT:    .cfi_offset lr, -851; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 852; CHECK-PIC-LARGE-NEXT:    lrw32 rgb, [.LCPI0_0]53; CHECK-PIC-LARGE-NEXT:    ld16.w a1, (a1, 0)54; CHECK-PIC-LARGE-NEXT:    lrw32 a2, [.LCPI0_1]55; CHECK-PIC-LARGE-NEXT:    ldr32.w a2, (rgb, a2 << 0)56; CHECK-PIC-LARGE-NEXT:    jsr16 a257; CHECK-PIC-LARGE-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload58; CHECK-PIC-LARGE-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload59; CHECK-PIC-LARGE-NEXT:    addi16 sp, sp, 860; CHECK-PIC-LARGE-NEXT:    rts1661; CHECK-PIC-LABEL: foo:62; CHECK-PIC:       # %bb.0: # %entry63; CHECK-PIC-NEXT:    ld32.w a1, a1, 064; CHECK-PIC-NEXT:    br32 bar65entry:66  %0 = load i32, ptr %ptr67  tail call void (i32, i32) @bar(i32 %a, i32 %0)68  ret void69}70 71define void @foo_indirect(i32 %a, ptr %ptr) {72; CHECK-LABEL: foo_indirect:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    subi16 sp, sp, 475; CHECK-NEXT:    .cfi_def_cfa_offset 476; CHECK-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill77; CHECK-NEXT:    .cfi_offset lr, -478; CHECK-NEXT:    .cfi_def_cfa_offset 479; CHECK-NEXT:    lrw32 a2, [.LCPI1_0]80; CHECK-NEXT:    ld16.w a2, (a2, 0)81; CHECK-NEXT:    ld16.w a1, (a1, 0)82; CHECK-NEXT:    jsr16 a283; CHECK-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload84; CHECK-NEXT:    addi16 sp, sp, 485; CHECK-NEXT:    rts1686;87; CHECK-PIC-SMALL-LABEL: foo_indirect:88; CHECK-PIC-SMALL:       # %bb.0: # %entry89; CHECK-PIC-SMALL-NEXT:    subi16 sp, sp, 890; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 891; CHECK-PIC-SMALL-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill92; CHECK-PIC-SMALL-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill93; CHECK-PIC-SMALL-NEXT:    .cfi_offset rgb, -494; CHECK-PIC-SMALL-NEXT:    .cfi_offset lr, -895; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 896; CHECK-PIC-SMALL-NEXT:    lrw32 rgb, [.LCPI1_0]97; CHECK-PIC-SMALL-NEXT:    lrw32 a2, [.LCPI1_1]98; CHECK-PIC-SMALL-NEXT:    ldr32.w a2, (rgb, a2 << 0)99; CHECK-PIC-SMALL-NEXT:    ld16.w a2, (a2, 0)100; CHECK-PIC-SMALL-NEXT:    ld16.w a1, (a1, 0)101; CHECK-PIC-SMALL-NEXT:    jsr16 a2102; CHECK-PIC-SMALL-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload103; CHECK-PIC-SMALL-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload104; CHECK-PIC-SMALL-NEXT:    addi16 sp, sp, 8105; CHECK-PIC-SMALL-NEXT:    rts16106;107; CHECK-PIC-LARGE-LABEL: foo_indirect:108; CHECK-PIC-LARGE:       # %bb.0: # %entry109; CHECK-PIC-LARGE-NEXT:    subi16 sp, sp, 8110; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 8111; CHECK-PIC-LARGE-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill112; CHECK-PIC-LARGE-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill113; CHECK-PIC-LARGE-NEXT:    .cfi_offset rgb, -4114; CHECK-PIC-LARGE-NEXT:    .cfi_offset lr, -8115; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 8116; CHECK-PIC-LARGE-NEXT:    lrw32 rgb, [.LCPI1_0]117; CHECK-PIC-LARGE-NEXT:    lrw32 a2, [.LCPI1_1]118; CHECK-PIC-LARGE-NEXT:    ldr32.w a2, (rgb, a2 << 0)119; CHECK-PIC-LARGE-NEXT:    ld16.w a2, (a2, 0)120; CHECK-PIC-LARGE-NEXT:    ld16.w a1, (a1, 0)121; CHECK-PIC-LARGE-NEXT:    jsr16 a2122; CHECK-PIC-LARGE-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload123; CHECK-PIC-LARGE-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload124; CHECK-PIC-LARGE-NEXT:    addi16 sp, sp, 8125; CHECK-PIC-LARGE-NEXT:    rts16126; CHECK-PIC-LABEL: foo_indirect:127; CHECK-PIC:       # %bb.0: # %entry128; CHECK-PIC-NEXT:    movi32 a2, p_fun129; CHECK-PIC-NEXT:    movih32 a3, p_fun130; CHECK-PIC-NEXT:    or32 a2, a3, a2131; CHECK-PIC-NEXT:    ld32.w a2, a2, 0132; CHECK-PIC-NEXT:    ld32.w a1, a1, 0133; CHECK-PIC-NEXT:    jmp32 a2134entry:135  %0 = load ptr, ptr @p_fun, align 8136  %1 = load i32, ptr %ptr137  tail call void (i32, i32) %0(i32 %a, i32 %1)138  ret void139}140