1; RUN: llc -mtriple=armeb-linux-gnueabihf -O2 -mattr=+read-tp-hard %s -o - | FileCheck %s -check-prefix=CHECK-HARD 2; RUN: llc -mtriple=armeb-linux-gnueabihf -O2 %s -o - | FileCheck %s -check-prefix=CHECK-SOFT 3; RUN: llc -mtriple=thumbv7-linux-gnueabihf -O2 -mattr=+read-tp-hard %s -o - | FileCheck %s -check-prefix=CHECK-HARD 4; RUN: llc -mtriple=thumbv7-linux-gnueabihf -O2 %s -o - | FileCheck %s -check-prefix=CHECK-SOFT 5 6 7; __thread int counter; 8; void foo() { 9; counter = 5; 10; } 11 12 13@counter = thread_local local_unnamed_addr global i32 0, align 4 14 15define void @foo() local_unnamed_addr #0 { 16entry: 17 store i32 5, ptr @counter, align 4 18 ret void 19} 20 21 22; CHECK-LABEL: foo: 23; CHECK-HARD: mrc p15, #0, {{r[0-9]+}}, c13, c0, #3 24; CHECK-SOFT: bl __aeabi_read_tp 25