brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · d520e24 Raw
180 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=csky -csky-no-aliases -relocation-model=pic -mattr=+2e3 < %s \3; RUN:     | FileCheck -check-prefix=CSKY-PIC %s4; RUN: llc -mtriple=csky -csky-no-aliases -mattr=+2e3 < %s | FileCheck -check-prefix=CSKY-NOPIC %s5 6; Check that TLS symbols are lowered correctly based on the specified7; model. Make sure they're external to avoid them all being optimised to Local8; Exec for the executable.9 10@unspecified = external thread_local global i3211@ld = external thread_local(localdynamic) global i3212@ie = external thread_local(initialexec) global i3213@le = external thread_local(localexec) global i3214 15 16; No model specified17 18define ptr @f1() nounwind {19; CSKY-PIC-LABEL: f1:20; CSKY-PIC:       # %bb.0: # %entry21; CSKY-PIC-NEXT:    subi16 sp, sp, 822; CSKY-PIC-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill23; CSKY-PIC-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill24; CSKY-PIC-NEXT:    lrw32 rgb, [.LCPI0_0]25; CSKY-PIC-NEXT:  .LPC0_1:26; CSKY-PIC-NEXT:    lrw32 a0, [.LCPI0_1]27; CSKY-PIC-NEXT:    grs32 a1, .LPC0_128; CSKY-PIC-NEXT:    addu16 a0, a129; CSKY-PIC-NEXT:    lrw32 a1, [.LCPI0_2]30; CSKY-PIC-NEXT:    ldr32.w a1, (rgb, a1 << 0)31; CSKY-PIC-NEXT:    jsr16 a132; CSKY-PIC-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload33; CSKY-PIC-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload34; CSKY-PIC-NEXT:    addi16 sp, sp, 835; CSKY-PIC-NEXT:    rts1636; CSKY-PIC-NEXT:    .p2align 137; CSKY-PIC-NEXT:  # %bb.1:38; CSKY-PIC-NEXT:    .p2align 239; CSKY-PIC-NEXT:  .LCPI0_0:40; CSKY-PIC-NEXT:    .long _GLOBAL_OFFSET_TABLE_41; CSKY-PIC-NEXT:  .LCPI0_1:42; CSKY-PIC-NEXT:  .Ltmp0:43; CSKY-PIC-NEXT:    .long unspecified-(.LPC0_1-.Ltmp0)@TLSGD3244; CSKY-PIC-NEXT:  .LCPI0_2:45; CSKY-PIC-NEXT:    .long __tls_get_addr@PLT46;47; CSKY-NOPIC-LABEL: f1:48; CSKY-NOPIC:       # %bb.0: # %entry49; CSKY-NOPIC-NEXT:  .LPC0_1:50; CSKY-NOPIC-NEXT:    lrw32 a0, [.LCPI0_0]51; CSKY-NOPIC-NEXT:    grs32 a1, .LPC0_152; CSKY-NOPIC-NEXT:    ldr32.w a0, (a0, a1 << 0)53; CSKY-NOPIC-NEXT:    addu32 a0, a0, tls54; CSKY-NOPIC-NEXT:    rts1655; CSKY-NOPIC-NEXT:    .p2align 156; CSKY-NOPIC-NEXT:  # %bb.1:57; CSKY-NOPIC-NEXT:    .p2align 258; CSKY-NOPIC-NEXT:  .LCPI0_0:59; CSKY-NOPIC-NEXT:  .Ltmp0:60; CSKY-NOPIC-NEXT:    .long unspecified-(.LPC0_1-.Ltmp0)@GOTTPOFF61entry:62  ret ptr @unspecified63}64 65 66; localdynamic specified67 68define ptr @f2() nounwind {69; CSKY-PIC-LABEL: f2:70; CSKY-PIC:       # %bb.0: # %entry71; CSKY-PIC-NEXT:    subi16 sp, sp, 872; CSKY-PIC-NEXT:    st32.w rgb, (sp, 4) # 4-byte Folded Spill73; CSKY-PIC-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill74; CSKY-PIC-NEXT:    lrw32 rgb, [.LCPI1_0]75; CSKY-PIC-NEXT:  .LPC1_1:76; CSKY-PIC-NEXT:    lrw32 a0, [.LCPI1_1]77; CSKY-PIC-NEXT:    grs32 a1, .LPC1_178; CSKY-PIC-NEXT:    addu16 a0, a179; CSKY-PIC-NEXT:    lrw32 a1, [.LCPI1_2]80; CSKY-PIC-NEXT:    ldr32.w a1, (rgb, a1 << 0)81; CSKY-PIC-NEXT:    jsr16 a182; CSKY-PIC-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload83; CSKY-PIC-NEXT:    ld32.w rgb, (sp, 4) # 4-byte Folded Reload84; CSKY-PIC-NEXT:    addi16 sp, sp, 885; CSKY-PIC-NEXT:    rts1686; CSKY-PIC-NEXT:    .p2align 187; CSKY-PIC-NEXT:  # %bb.1:88; CSKY-PIC-NEXT:    .p2align 289; CSKY-PIC-NEXT:  .LCPI1_0:90; CSKY-PIC-NEXT:    .long _GLOBAL_OFFSET_TABLE_91; CSKY-PIC-NEXT:  .LCPI1_1:92; CSKY-PIC-NEXT:  .Ltmp1:93; CSKY-PIC-NEXT:    .long ld-(.LPC1_1-.Ltmp1)@TLSGD3294; CSKY-PIC-NEXT:  .LCPI1_2:95; CSKY-PIC-NEXT:    .long __tls_get_addr@PLT96;97; CSKY-NOPIC-LABEL: f2:98; CSKY-NOPIC:       # %bb.0: # %entry99; CSKY-NOPIC-NEXT:  .LPC1_1:100; CSKY-NOPIC-NEXT:    lrw32 a0, [.LCPI1_0]101; CSKY-NOPIC-NEXT:    grs32 a1, .LPC1_1102; CSKY-NOPIC-NEXT:    ldr32.w a0, (a0, a1 << 0)103; CSKY-NOPIC-NEXT:    addu32 a0, a0, tls104; CSKY-NOPIC-NEXT:    rts16105; CSKY-NOPIC-NEXT:    .p2align 1106; CSKY-NOPIC-NEXT:  # %bb.1:107; CSKY-NOPIC-NEXT:    .p2align 2108; CSKY-NOPIC-NEXT:  .LCPI1_0:109; CSKY-NOPIC-NEXT:  .Ltmp1:110; CSKY-NOPIC-NEXT:    .long ld-(.LPC1_1-.Ltmp1)@GOTTPOFF111entry:112  ret ptr @ld113}114 115 116; initialexec specified117 118define ptr @f3() nounwind {119; CSKY-PIC-LABEL: f3:120; CSKY-PIC:       # %bb.0: # %entry121; CSKY-PIC-NEXT:  .LPC2_1:122; CSKY-PIC-NEXT:    lrw32 a0, [.LCPI2_0]123; CSKY-PIC-NEXT:    grs32 a1, .LPC2_1124; CSKY-PIC-NEXT:    ldr32.w a0, (a0, a1 << 0)125; CSKY-PIC-NEXT:    addu32 a0, a0, tls126; CSKY-PIC-NEXT:    rts16127; CSKY-PIC-NEXT:    .p2align 1128; CSKY-PIC-NEXT:  # %bb.1:129; CSKY-PIC-NEXT:    .p2align 2130; CSKY-PIC-NEXT:  .LCPI2_0:131; CSKY-PIC-NEXT:  .Ltmp2:132; CSKY-PIC-NEXT:    .long ie-(.LPC2_1-.Ltmp2)@GOTTPOFF133;134; CSKY-NOPIC-LABEL: f3:135; CSKY-NOPIC:       # %bb.0: # %entry136; CSKY-NOPIC-NEXT:  .LPC2_1:137; CSKY-NOPIC-NEXT:    lrw32 a0, [.LCPI2_0]138; CSKY-NOPIC-NEXT:    grs32 a1, .LPC2_1139; CSKY-NOPIC-NEXT:    ldr32.w a0, (a0, a1 << 0)140; CSKY-NOPIC-NEXT:    addu32 a0, a0, tls141; CSKY-NOPIC-NEXT:    rts16142; CSKY-NOPIC-NEXT:    .p2align 1143; CSKY-NOPIC-NEXT:  # %bb.1:144; CSKY-NOPIC-NEXT:    .p2align 2145; CSKY-NOPIC-NEXT:  .LCPI2_0:146; CSKY-NOPIC-NEXT:  .Ltmp2:147; CSKY-NOPIC-NEXT:    .long ie-(.LPC2_1-.Ltmp2)@GOTTPOFF148entry:149  ret ptr @ie150}151 152 153; localexec specified154 155define ptr @f4() nounwind {156; CSKY-PIC-LABEL: f4:157; CSKY-PIC:       # %bb.0: # %entry158; CSKY-PIC-NEXT:    lrw32 a0, [.LCPI3_0]159; CSKY-PIC-NEXT:    addu32 a0, a0, tls160; CSKY-PIC-NEXT:    rts16161; CSKY-PIC-NEXT:    .p2align 1162; CSKY-PIC-NEXT:  # %bb.1:163; CSKY-PIC-NEXT:    .p2align 2164; CSKY-PIC-NEXT:  .LCPI3_0:165; CSKY-PIC-NEXT:    .long le@TPOFF166;167; CSKY-NOPIC-LABEL: f4:168; CSKY-NOPIC:       # %bb.0: # %entry169; CSKY-NOPIC-NEXT:    lrw32 a0, [.LCPI3_0]170; CSKY-NOPIC-NEXT:    addu32 a0, a0, tls171; CSKY-NOPIC-NEXT:    rts16172; CSKY-NOPIC-NEXT:    .p2align 1173; CSKY-NOPIC-NEXT:  # %bb.1:174; CSKY-NOPIC-NEXT:    .p2align 2175; CSKY-NOPIC-NEXT:  .LCPI3_0:176; CSKY-NOPIC-NEXT:    .long le@TPOFF177entry:178  ret ptr @le179}180