brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 8de9de1 Raw
178 lines · plain
1; RUN: llc < %s -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64 %s2; RUN: llc < %s -mtriple=x86_64-linux-gnu -relocation-model=pic | FileCheck -check-prefix=X64_PIC %s3; RUN: llc < %s -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32 %s4; RUN: llc < %s -mtriple=i386-linux-gnu -relocation-model=pic | FileCheck -check-prefix=X32_PIC %s5 6; Darwin always uses the same model.7; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck -check-prefix=DARWIN %s8; RUN: llc < %s -mtriple=x86_64-apple-darwin -code-model=large | FileCheck -check-prefix=DARWIN %s9 10@external_gd = external thread_local global i3211@internal_gd = internal thread_local global i32 4212 13@external_ld = external thread_local(localdynamic) global i3214@internal_ld = internal thread_local(localdynamic) global i32 4215 16@external_ie = external thread_local(initialexec) global i3217@internal_ie = internal thread_local(initialexec) global i32 4218 19@external_le = external thread_local(localexec) global i3220@internal_le = internal thread_local(localexec) global i32 4221 22; See test cases for emulated model in emutls.ll, emutls-pic.ll and emutls-pie.ll.23 24; ----- no model specified -----25 26define ptr @f1() {27entry:28  ret ptr @external_gd29 30  ; Non-PIC code can use initial-exec, PIC code has to use general dynamic.31  ; X64-LABEL:     f1:32  ; X64:     external_gd@GOTTPOFF33  ; X32-LABEL:     f1:34  ; X32:     external_gd@INDNTPOFF35  ; X64_PIC-LABEL: f1:36  ; X64_PIC: external_gd@TLSGD37  ; X32_PIC-LABEL: f1:38  ; X32_PIC: external_gd@TLSGD39  ; DARWIN-LABEL:  f1:40  ; DARWIN:  _external_gd@TLVP41}42 43define ptr @f2() {44entry:45  ret ptr @internal_gd46 47  ; Non-PIC code can use local exec, PIC code can use local dynamic.48  ; X64-LABEL:     f2:49  ; X64:     internal_gd@TPOFF50  ; X32-LABEL:     f2:51  ; X32:     internal_gd@NTPOFF52  ; X64_PIC-LABEL: f2:53  ; X64_PIC: internal_gd@TLSLD54  ; X32_PIC-LABEL: f2:55  ; X32_PIC: internal_gd@TLSLDM56  ; DARWIN-LABEL:  f2:57  ; DARWIN:  _internal_gd@TLVP58}59 60 61; ----- localdynamic specified -----62 63define ptr @f3() {64entry:65  ret ptr @external_ld66 67  ; Non-PIC code can use initial exec, PIC code use local dynamic as specified.68  ; X64-LABEL:     f3:69  ; X64:     external_ld@GOTTPOFF70  ; X32-LABEL:     f3:71  ; X32:     external_ld@INDNTPOFF72  ; X64_PIC-LABEL: f3:73  ; X64_PIC: external_ld@TLSLD74  ; X32_PIC-LABEL: f3:75  ; X32_PIC: external_ld@TLSLDM76  ; DARWIN-LABEL:  f3:77  ; DARWIN:  _external_ld@TLVP78}79 80define ptr @f4() {81entry:82  ret ptr @internal_ld83 84  ; Non-PIC code can use local exec, PIC code can use local dynamic.85  ; X64-LABEL:     f4:86  ; X64:     internal_ld@TPOFF87  ; X32-LABEL:     f4:88  ; X32:     internal_ld@NTPOFF89  ; X64_PIC-LABEL: f4:90  ; X64_PIC: internal_ld@TLSLD91  ; X32_PIC-LABEL: f4:92  ; X32_PIC: internal_ld@TLSLDM93  ; DARWIN-LABEL:  f4:94  ; DARWIN:  _internal_ld@TLVP95}96 97 98; ----- initialexec specified -----99 100define ptr @f5() {101entry:102  ret ptr @external_ie103 104  ; Non-PIC and PIC code will use initial exec as specified.105  ; X64-LABEL:     f5:106  ; X64:     external_ie@GOTTPOFF107  ; X32-LABEL:     f5:108  ; X32:     external_ie@INDNTPOFF109  ; X64_PIC-LABEL: f5:110  ; X64_PIC: external_ie@GOTTPOFF111  ; X32_PIC-LABEL: f5:112  ; X32_PIC: external_ie@GOTNTPOFF113  ; DARWIN-LABEL:  f5:114  ; DARWIN:  _external_ie@TLVP115}116 117define ptr @f6() {118entry:119  ret ptr @internal_ie120 121  ; Non-PIC code can use local exec, PIC code use initial exec as specified.122  ; X64-LABEL:     f6:123  ; X64:     internal_ie@TPOFF124  ; X32-LABEL:     f6:125  ; X32:     internal_ie@NTPOFF126  ; X64_PIC-LABEL: f6:127  ; X64_PIC: internal_ie@GOTTPOFF128  ; X32_PIC-LABEL: f6:129  ; X32_PIC: internal_ie@GOTNTPOFF130  ; DARWIN-LABEL:  f6:131  ; DARWIN:  _internal_ie@TLVP132}133 134define i32 @PR22083() {135entry:136  ret i32 ptrtoint (ptr @external_ie to i32)137  ; X64-LABEL:     PR22083:138  ; X64:     movq    external_ie@GOTTPOFF(%rip), %rax139  ; X64_PIC-LABEL: PR22083:140  ; X64_PIC: movq    external_ie@GOTTPOFF(%rip), %rax141}142 143; ----- localexec specified -----144 145define ptr @f7() {146entry:147  ret ptr @external_le148 149  ; Non-PIC and PIC code will use local exec as specified.150  ; X64-LABEL:     f7:151  ; X64:     external_le@TPOFF152  ; X32-LABEL:     f7:153  ; X32:     external_le@NTPOFF154  ; X64_PIC-LABEL: f7:155  ; X64_PIC: external_le@TPOFF156  ; X32_PIC-LABEL: f7:157  ; X32_PIC: external_le@NTPOFF158  ; DARWIN-LABEL:  f7:159  ; DARWIN:  _external_le@TLVP160}161 162define ptr @f8() {163entry:164  ret ptr @internal_le165 166  ; Non-PIC and PIC code will use local exec as specified.167  ; X64-LABEL:     f8:168  ; X64:     internal_le@TPOFF169  ; X32-LABEL:     f8:170  ; X32:     internal_le@NTPOFF171  ; X64_PIC-LABEL: f8:172  ; X64_PIC: internal_le@TPOFF173  ; X32_PIC-LABEL: f8:174  ; X32_PIC: internal_le@NTPOFF175  ; DARWIN-LABEL:  f8:176  ; DARWIN:  _internal_le@TLVP177}178