114 lines · plain
1; RUN: llc -mtriple=mipsel-- -relocation-model=pic < %s | FileCheck -check-prefix=CHECK-PIC %s2; RUN: llc -mtriple=mipsel-- -relocation-model=static < %s | FileCheck -check-prefix=CHECK-NONPIC %s3 4@external_gd = external thread_local global i325@internal_gd = internal thread_local global i32 426 7@external_ld = external thread_local(localdynamic) global i328@internal_ld = internal thread_local(localdynamic) global i32 429 10@external_ie = external thread_local(initialexec) global i3211@internal_ie = internal thread_local(initialexec) global i32 4212 13@external_le = external thread_local(localexec) global i3214@internal_le = internal thread_local(localexec) global i32 4215 16; ----- no model specified -----17 18define ptr @f1() {19entry:20 ret ptr @external_gd21 22 ; Non-PIC code can use initial-exec, PIC code has to use general dynamic.23 ; CHECK-NONPIC-LABEL: f1:24 ; CHECK-NONPIC: %gottprel25 ; CHECK-PIC-LABEL: f1:26 ; CHECK-PIC: %tlsgd27}28 29define ptr @f2() {30entry:31 ret ptr @internal_gd32 33 ; Non-PIC code can use local exec, PIC code can use local dynamic.34 ; CHECK-NONPIC-LABEL: f2:35 ; CHECK-NONPIC: %tprel_hi36 ; CHECK-PIC-LABEL: f2:37 ; CHECK-PIC: %tlsldm38}39 40 41; ----- localdynamic specified -----42 43define ptr @f3() {44entry:45 ret ptr @external_ld46 47 ; Non-PIC code can use initial exec, PIC should use local dynamic.48 ; CHECK-NONPIC-LABEL: f3:49 ; CHECK-NONPIC: %gottprel50 ; CHECK-PIC-LABEL: f3:51 ; CHECK-PIC: %tlsldm52}53 54define ptr @f4() {55entry:56 ret ptr @internal_ld57 58 ; Non-PIC code can use local exec, PIC code can use local dynamic.59 ; CHECK-NONPIC-LABEL: f4:60 ; CHECK-NONPIC: %tprel_hi61 ; CHECK-PIC-LABEL: f4:62 ; CHECK-PIC: %tlsldm63}64 65 66; ----- initialexec specified -----67 68define ptr @f5() {69entry:70 ret ptr @external_ie71 72 ; Non-PIC and PIC code will use initial exec as specified.73 ; CHECK-NONPIC-LABEL: f5:74 ; CHECK-NONPIC: %gottprel75 ; CHECK-PIC-LABEL: f5:76 ; CHECK-PIC: %gottprel77}78 79define ptr @f6() {80entry:81 ret ptr @internal_ie82 83 ; Non-PIC code can use local exec, PIC code use initial exec as specified.84 ; CHECK-NONPIC-LABEL: f6:85 ; CHECK-NONPIC: %tprel_hi86 ; CHECK-PIC-LABEL: f6:87 ; CHECK-PIC: %gottprel88}89 90 91; ----- localexec specified -----92 93define ptr @f7() {94entry:95 ret ptr @external_le96 97 ; Non-PIC and PIC code will use local exec as specified.98 ; CHECK-NONPIC-LABEL: f7:99 ; CHECK-NONPIC: %tprel_hi100 ; CHECK-PIC-LABEL: f7:101 ; CHECK-PIC: %tprel_hi102}103 104define ptr @f8() {105entry:106 ret ptr @internal_le107 108 ; Non-PIC and PIC code will use local exec as specified.109 ; CHECK-NONPIC-LABEL: f8:110 ; CHECK-NONPIC: %tprel_hi111 ; CHECK-PIC-LABEL: f8:112 ; CHECK-PIC: %tprel_hi113}114