brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 6e23372 Raw
151 lines · plain
1; RUN: llc -mtriple thumbv7--windows-itanium %s -o - | FileCheck %s2 3@i = thread_local global i32 04@j = external thread_local global i325@k = internal thread_local global i32 06@l = hidden thread_local global i32 07@m = external hidden thread_local global i328@n = thread_local global i16 09@o = thread_local global i8 010 11define i32 @f() {12  %1 = load i32, ptr @i13  ret i32 %114}15 16; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #217 18; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index19; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index20; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]21; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]22; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]23 24; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]25 26; CHECK-NEXT: ldr r0, [[[TLS]], [[SLOT]]]27 28; CHECK: [[CPI]]:29; CHECK-NEXT: .long i(SECREL32)30 31define i32 @e() {32  %1 = load i32, ptr @j33  ret i32 %134}35 36; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #237 38; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index39; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index40; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]41; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]42; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]43 44; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]45 46; CHECK-NEXT: ldr r0, [[[TLS]], [[SLOT]]]47 48; CHECK: [[CPI]]:49; CHECK-NEXT: .long j(SECREL32)50 51define i32 @d() {52  %1 = load i32, ptr @k53  ret i32 %154}55 56; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #257 58; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index59; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index60; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]61; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]62; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]63 64; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]65 66; CHECK-NEXT: ldr r0, [[[TLS]], [[SLOT]]]67 68; CHECK: [[CPI]]:69; CHECK-NEXT: .long k(SECREL32)70 71define i32 @c() {72  %1 = load i32, ptr @l73  ret i32 %174}75 76; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #277 78; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index79; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index80; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]81; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]82; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]83 84; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]85 86; CHECK-NEXT: ldr r0, [[[TLS]], [[SLOT]]]87 88; CHECK: [[CPI]]:89; CHECK-NEXT: .long l(SECREL32)90 91define i32 @b() {92  %1 = load i32, ptr @m93  ret i32 %194}95 96; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #297 98; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index99; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index100; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]101; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]102; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]103 104; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]105 106; CHECK-NEXT: ldr r0, [[[TLS]], [[SLOT]]]107 108; CHECK: [[CPI]]:109; CHECK: .long m(SECREL32)110 111define i16 @a() {112  %1 = load i16, ptr @n113  ret i16 %1114}115 116; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #2117 118; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index119; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index120; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]121; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]122; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]123 124; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]125 126; CHECK-NEXT: ldrh r0, [[[TLS]], [[SLOT]]]127 128; CHECK: [[CPI]]:129; CHECK: .long n(SECREL32)130 131define i8 @Z() {132  %1 = load i8, ptr @o133  ret i8 %1134}135 136; CHECK:      mrc p15, #0, [[TEB:r[0-9]]], c13, c0, #2137 138; CHECK:      movw [[TLS_INDEX:r[0-9]]], :lower16:_tls_index139; CHECK-NEXT: movt [[TLS_INDEX]], :upper16:_tls_index140; CHECK-NEXT: ldr [[INDEX:r[0-9]]], [[[TLS_INDEX]]]141; CHECK-NEXT: ldr [[TLS_POINTER:r[0-9]]], [[[TEB]], #44]142; CHECK-NEXT: ldr{{.w}} [[TLS:r[0-9]]], [[[TLS_POINTER]], [[INDEX]], lsl #2]143 144; CHECK-NEXT: ldr [[SLOT:r[0-9]]], [[CPI:\.LCPI[0-9]+_[0-9]+]]145 146; CHECK-NEXT: ldrb r0, [[[TLS]], [[SLOT]]]147 148; CHECK: [[CPI]]:149; CHECK-NEXT: .long o(SECREL32)150 151