From aa4ee0ed67cf7d85665b3eadb43496bf88f13095 Mon Sep 17 00:00:00 2001 From: Victor Huang Date: Tue, 27 Oct 2020 13:56:54 -0500 Subject: [PATCH] [PowerPC][PCRelative] Turn on TLS support for PCRel by default Turn on TLS support for PCRel by default and update the test cases. Differential Revision: https://reviews.llvm.org/D88738 Reviewed by: stefanp, kamaub --- lib/Target/PowerPC/PPCISelLowering.cpp | 8 -------- .../CodeGen/PowerPC/pcrel-tls-general-dynamic.ll | 6 ++---- test/CodeGen/PowerPC/pcrel-tls-initial-exec.ll | 6 ++---- test/CodeGen/PowerPC/pcrel-tls-local-dynamic.ll | 4 ++-- test/CodeGen/PowerPC/pcrel-tls-local-exec.ll | 5 ++--- test/CodeGen/PowerPC/pcrel-tls.ll | 16 ---------------- 6 files changed, 8 insertions(+), 37 deletions(-) delete mode 100644 test/CodeGen/PowerPC/pcrel-tls.ll diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp index ac184fff138..662442f1643 100644 --- a/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/lib/Target/PowerPC/PPCISelLowering.cpp @@ -121,11 +121,6 @@ cl::desc("don't always align innermost loop to 32 bytes on ppc"), cl::Hidden); static cl::opt UseAbsoluteJumpTables("ppc-use-absolute-jumptables", cl::desc("use absolute jump tables on ppc"), cl::Hidden); -static cl::opt EnablePPCPCRelTLS( - "enable-ppc-pcrel-tls", - cl::desc("enable the use of PC relative memops in TLS instructions on PPC"), - cl::Hidden); - STATISTIC(NumTailCalls, "Number of tail calls"); STATISTIC(NumSiblingCalls, "Number of sibling calls"); STATISTIC(ShufflesHandledWithVPERM, "Number of shuffles lowered to a VPERM"); @@ -3015,9 +3010,6 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddress(SDValue Op, // which is the most useful form. Eventually support for small and // large models could be added if users need it, at the cost of // additional complexity. - if (Subtarget.isUsingPCRelativeCalls() && !EnablePPCPCRelTLS) - report_fatal_error("Thread local storage is not supported with pc-relative" - " addressing - please compile with -mno-pcrel"); GlobalAddressSDNode *GA = cast(Op); if (DAG.getTarget().useEmulatedTLS()) return LowerToTLSEmulatedModel(GA, DAG); diff --git a/test/CodeGen/PowerPC/pcrel-tls-general-dynamic.ll b/test/CodeGen/PowerPC/pcrel-tls-general-dynamic.ll index dfbcbb3b338..9fdcc6fff60 100644 --- a/test/CodeGen/PowerPC/pcrel-tls-general-dynamic.ll +++ b/test/CodeGen/PowerPC/pcrel-tls-general-dynamic.ll @@ -1,9 +1,7 @@ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: --relocation-model=pic -mcpu=pwr10 -ppc-asm-full-reg-names \ -; RUN: -enable-ppc-pcrel-tls < %s | FileCheck %s --check-prefix=CHECK-S +; RUN: --relocation-model=pic -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=CHECK-S ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: --relocation-model=pic -mcpu=pwr10 -ppc-asm-full-reg-names \ -; RUN: -enable-ppc-pcrel-tls --filetype=obj -o %t.o < %s +; RUN: --relocation-model=pic -mcpu=pwr10 -ppc-asm-full-reg-names --filetype=obj -o %t.o < %s ; RUN: llvm-objdump --mcpu=pwr10 -dr %t.o |FileCheck %s --check-prefix=CHECK-O ; RUN: llvm-readelf -s %t.o | FileCheck %s --check-prefix=CHECK-SYM diff --git a/test/CodeGen/PowerPC/pcrel-tls-initial-exec.ll b/test/CodeGen/PowerPC/pcrel-tls-initial-exec.ll index f10ed538d09..dd7e1d1f98a 100644 --- a/test/CodeGen/PowerPC/pcrel-tls-initial-exec.ll +++ b/test/CodeGen/PowerPC/pcrel-tls-initial-exec.ll @@ -1,9 +1,7 @@ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -enable-ppc-pcrel-tls < %s | \ -; RUN: FileCheck %s --check-prefix=CHECK-S +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=CHECK-S ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names --filetype=obj \ -; RUN: -enable-ppc-pcrel-tls -o %t.o < %s +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names --filetype=obj -o %t.o < %s ; RUN: llvm-objdump --mcpu=pwr10 -dr %t.o | FileCheck %s --check-prefix=CHECK-O ; RUN: llvm-readelf -s %t.o | FileCheck %s --check-prefix=CHECK-SYM diff --git a/test/CodeGen/PowerPC/pcrel-tls-local-dynamic.ll b/test/CodeGen/PowerPC/pcrel-tls-local-dynamic.ll index dbc4f345fab..5dae2e87fcb 100644 --- a/test/CodeGen/PowerPC/pcrel-tls-local-dynamic.ll +++ b/test/CodeGen/PowerPC/pcrel-tls-local-dynamic.ll @@ -1,7 +1,7 @@ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 \ -; RUN: -ppc-asm-full-reg-names --relocation-model=pic -enable-ppc-pcrel-tls < %s | FileCheck %s --check-prefix=CHECK-S +; RUN: -ppc-asm-full-reg-names --relocation-model=pic < %s | FileCheck %s --check-prefix=CHECK-S ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 \ -; RUN: -ppc-asm-full-reg-names --relocation-model=pic -enable-ppc-pcrel-tls --filetype=obj < %s | \ +; RUN: -ppc-asm-full-reg-names --relocation-model=pic --filetype=obj < %s | \ ; RUN: llvm-objdump --mcpu=pwr10 --no-show-raw-insn -dr - | FileCheck %s --check-prefix=CHECK-O ; These test cases are to ensure that when using pc relative memory operations diff --git a/test/CodeGen/PowerPC/pcrel-tls-local-exec.ll b/test/CodeGen/PowerPC/pcrel-tls-local-exec.ll index 002400d1065..32329458185 100644 --- a/test/CodeGen/PowerPC/pcrel-tls-local-exec.ll +++ b/test/CodeGen/PowerPC/pcrel-tls-local-exec.ll @@ -1,8 +1,7 @@ -; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -enable-ppc-pcrel-tls -mcpu=pwr10 -ppc-asm-full-reg-names \ +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 -ppc-asm-full-reg-names \ ; RUN: < %s | FileCheck %s --check-prefix=CHECK-S ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -enable-ppc-pcrel-tls -mcpu=pwr10 -ppc-asm-full-reg-names \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \ ; RUN: --filetype=obj < %s | llvm-objdump --no-show-raw-insn --mcpu=pwr10 -dr - \ ; RUN: | FileCheck %s --check-prefix=CHECK-O diff --git a/test/CodeGen/PowerPC/pcrel-tls.ll b/test/CodeGen/PowerPC/pcrel-tls.ll deleted file mode 100644 index a40021c14e9..00000000000 --- a/test/CodeGen/PowerPC/pcrel-tls.ll +++ /dev/null @@ -1,16 +0,0 @@ -; RUN: not --crash llc -mcpu=pwr10 -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -verify-machineinstrs -mattr=+pcrelative-memops -o - < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=CHECK-PCREL -; RUN: llc -mcpu=pwr10 -mtriple=powerpc64le-unknown-linux-gnu \ -; RUN: -verify-machineinstrs -mattr=-pcrelative-memops -o - < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=CHECK-NOPCREL - -; CHECK-PCREL: Thread local storage is not supported with pc-relative addressing -; CHECK-NOPCREL: blr - -@x = external thread_local global i32, align 4 - -define i32* @testTLS() { -entry: - ret i32* @x -}