From: Momchil Velikov Date: Wed, 17 Jul 2019 17:43:32 +0000 (+0000) Subject: Revert [AArch64] Add support for Transactional Memory Extension (TME) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf866b72fdc63b49095efee78e560a2c7c0ae529;p=clang Revert [AArch64] Add support for Transactional Memory Extension (TME) This reverts r366322 (git commit 4b8da3a503e434ddbc08ecf66582475765f449bc) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@366355 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsAArch64.def b/include/clang/Basic/BuiltinsAArch64.def index a144979acc..7701ad98f4 100644 --- a/include/clang/Basic/BuiltinsAArch64.def +++ b/include/clang/Basic/BuiltinsAArch64.def @@ -91,12 +91,6 @@ LANGBUILTIN(__sevl, "v", "", ALL_MS_LANGUAGES) // Misc BUILTIN(__builtin_sponentry, "v*", "c") -// Transactional Memory Extension -BUILTIN(__builtin_arm_tstart, "WUi", "nj") -BUILTIN(__builtin_arm_tcommit, "v", "n") -BUILTIN(__builtin_arm_tcancel, "vWUIi", "nr") -BUILTIN(__builtin_arm_ttest, "WUi", "nc") - TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") diff --git a/lib/Basic/Targets/AArch64.cpp b/lib/Basic/Targets/AArch64.cpp index 2abca0a660..74ac69ab89 100644 --- a/lib/Basic/Targets/AArch64.cpp +++ b/lib/Basic/Targets/AArch64.cpp @@ -219,9 +219,6 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts, if (HasMTE) Builder.defineMacro("__ARM_FEATURE_MEMORY_TAGGING", "1"); - if (HasTME) - Builder.defineMacro("__ARM_FEATURE_TME", "1"); - if ((FPU & NeonMode) && HasFP16FML) Builder.defineMacro("__ARM_FEATURE_FP16FML", "1"); @@ -273,7 +270,6 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector &Features, HasDotProd = false; HasFP16FML = false; HasMTE = false; - HasTME = false; ArchKind = llvm::AArch64::ArchKind::ARMV8A; for (const auto &Feature : Features) { @@ -305,8 +301,6 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector &Features, HasFP16FML = true; if (Feature == "+mte") HasMTE = true; - if (Feature == "+tme") - HasTME = true; } setDataLayout(); diff --git a/lib/Basic/Targets/AArch64.h b/lib/Basic/Targets/AArch64.h index b6aa07780e..5833c14600 100644 --- a/lib/Basic/Targets/AArch64.h +++ b/lib/Basic/Targets/AArch64.h @@ -35,7 +35,6 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo { bool HasDotProd; bool HasFP16FML; bool HasMTE; - bool HasTME; llvm::AArch64::ArchKind ArchKind; diff --git a/lib/Headers/arm_acle.h b/lib/Headers/arm_acle.h index 0510e6fd80..096cc261af 100644 --- a/lib/Headers/arm_acle.h +++ b/lib/Headers/arm_acle.h @@ -613,7 +613,7 @@ __jcvt(double __a) { #define __arm_wsr64(sysreg, v) __builtin_arm_wsr64(sysreg, v) #define __arm_wsrp(sysreg, v) __builtin_arm_wsrp(sysreg, v) -/* Memory Tagging Extensions (MTE) Intrinsics */ +// Memory Tagging Extensions (MTE) Intrinsics #if __ARM_FEATURE_MEMORY_TAGGING #define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask) #define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset) @@ -623,28 +623,6 @@ __jcvt(double __a) { #define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb) #endif -/* Transactional Memory Extension (TME) Intrinsics */ -#if __ARM_FEATURE_TME - -#define _TMFAILURE_REASON 0x00007fffu -#define _TMFAILURE_RTRY 0x00008000u -#define _TMFAILURE_CNCL 0x00010000u -#define _TMFAILURE_MEM 0x00020000u -#define _TMFAILURE_IMP 0x00040000u -#define _TMFAILURE_ERR 0x00080000u -#define _TMFAILURE_SIZE 0x00100000u -#define _TMFAILURE_NEST 0x00200000u -#define _TMFAILURE_DBG 0x00400000u -#define _TMFAILURE_INT 0x00800000u -#define _TMFAILURE_TRIVIAL 0x01000000u - -#define __tstart() __builtin_arm_tstart() -#define __tcommit() __builtin_arm_tcommit() -#define __tcancel(__arg) __builtin_arm_tcancel(__arg) -#define __ttest() __builtin_arm_ttest() - -#endif /* __ARM_FEATURE_TME */ - #if defined(__cplusplus) } #endif diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index 442cbcf142..f9f82cdeef 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -1928,7 +1928,6 @@ bool Sema::CheckAArch64BuiltinFunctionCall(unsigned BuiltinID, case AArch64::BI__builtin_arm_dmb: case AArch64::BI__builtin_arm_dsb: case AArch64::BI__builtin_arm_isb: l = 0; u = 15; break; - case AArch64::BI__builtin_arm_tcancel: l = 0; u = 65535; break; } return SemaBuiltinConstantArgRange(TheCall, i, l, u + l); diff --git a/test/CodeGen/aarch64-tme-tcancel-arg.cpp b/test/CodeGen/aarch64-tme-tcancel-arg.cpp deleted file mode 100644 index ae6694703c..0000000000 --- a/test/CodeGen/aarch64-tme-tcancel-arg.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// RUN: %clang_cc1 -triple aarch64-eabi -target-feature +tme -S -emit-llvm %s -o - | FileCheck %s - -#define A -1 -constexpr int f() { return 65536; } - -void t_cancel() { - __builtin_arm_tcancel(f() + A); -} - -// CHECK: call void @llvm.aarch64.tcancel(i64 65535) diff --git a/test/CodeGen/aarch64-tme.c b/test/CodeGen/aarch64-tme.c deleted file mode 100644 index 8f90fb8eb8..0000000000 --- a/test/CodeGen/aarch64-tme.c +++ /dev/null @@ -1,36 +0,0 @@ -// RUN: %clang_cc1 -triple aarch64-eabi -target-feature +tme -S -emit-llvm %s -o - | FileCheck %s -// RUN: %clang_cc1 -DUSE_ACLE -triple aarch64-eabi -target-feature +tme -S -emit-llvm %s -o - | FileCheck %s - -#ifdef USE_ACLE -#include "arm_acle.h" -void test_tme_funcs() { - __tstart(); - (void)__ttest(); - __tcommit(); - __tcancel(0x789a); -} -#else -void test_tme_funcs() { - __builtin_arm_tstart(); - (void)__builtin_arm_ttest(); - __builtin_arm_tcommit(); - __builtin_arm_tcancel(0x789a); -} -#endif -// CHECK: call i64 @llvm.aarch64.tstart() -// CHECK: call i64 @llvm.aarch64.ttest() -// CHECK: call void @llvm.aarch64.tcommit() -// CHECK: call void @llvm.aarch64.tcancel(i64 30874) - -// CHECK: declare i64 @llvm.aarch64.tstart() #1 -// CHECK: declare i64 @llvm.aarch64.ttest() #1 -// CHECK: declare void @llvm.aarch64.tcommit() #1 -// CHECK: declare void @llvm.aarch64.tcancel(i64 immarg) #2 - -#ifdef __ARM_FEATURE_TME -void arm_feature_tme_defined() {} -#endif -// CHECK: define void @arm_feature_tme_defined() - -// CHECK: attributes #1 = { nounwind } -// CHECK: attributes #2 = { noreturn nounwind } diff --git a/test/Sema/aarch64-tme-errors.c b/test/Sema/aarch64-tme-errors.c deleted file mode 100644 index 0e9c2a6bee..0000000000 --- a/test/Sema/aarch64-tme-errors.c +++ /dev/null @@ -1,8 +0,0 @@ -// RUN: %clang_cc1 -triple aarch64-eabi -verify %s - -#include "arm_acle.h" - -void test_no_tme_funcs() { - __tstart(); // expected-warning{{implicit declaration of function '__tstart'}} - __builtin_tstart(); // expected-error{{use of unknown builtin '__builtin_tstart'}} -} diff --git a/test/Sema/aarch64-tme-tcancel-const-error.c b/test/Sema/aarch64-tme-tcancel-const-error.c deleted file mode 100644 index f97ece59b6..0000000000 --- a/test/Sema/aarch64-tme-tcancel-const-error.c +++ /dev/null @@ -1,4 +0,0 @@ -// RUN: %clang_cc1 -triple aarch64-eabi -target-feature +tme -verify %s -void t_cancel(unsigned short u) { - __builtin_arm_tcancel(u); // expected-error{{argument to '__builtin_arm_tcancel' must be a constant integer}} -} diff --git a/test/Sema/aarch64-tme-tcancel-range-error.c b/test/Sema/aarch64-tme-tcancel-range-error.c deleted file mode 100644 index c61ec90dfa..0000000000 --- a/test/Sema/aarch64-tme-tcancel-range-error.c +++ /dev/null @@ -1,4 +0,0 @@ -// RUN: %clang_cc1 -triple aarch64-eabi -target-feature +tme -verify %s -void t_cancel() { - __builtin_arm_tcancel(0x12345u); // expected-error{{argument value 74565 is outside the valid range [0, 65535]}} -}