summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-12-06 15:42:14 -0800
committerReid Kleckner <rnk@google.com>2019-12-06 15:42:14 -0800
commiteff08f40976e177923fe95759917e59375458f71 (patch)
tree028c8cec655334a91c3cdd3c4ec91187ece2dbba /clang/lib/Basic
parentb22d8ae7f436bfe63b28ceddea743071a6601eb1 (diff)
downloadbcm5719-llvm-eff08f40976e177923fe95759917e59375458f71.tar.gz
bcm5719-llvm-eff08f40976e177923fe95759917e59375458f71.zip
Revert "[Sema][X86] Consider target attribute into the checks in validateOutputSize and validateInputSize."
This reverts commit e1578fd2b79fe5af5f80c0c166a8abd0f816c022. It introduces a dependency on Attr.h which I am removing from ASTContext.h.
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets/X86.cpp19
-rw-r--r--clang/lib/Basic/Targets/X86.h15
2 files changed, 14 insertions, 20 deletions
diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp
index d099d3742f0..51f2006ddbd 100644
--- a/clang/lib/Basic/Targets/X86.cpp
+++ b/clang/lib/Basic/Targets/X86.cpp
@@ -1731,24 +1731,21 @@ bool X86TargetInfo::validateAsmConstraint(
}
}
-bool X86TargetInfo::validateOutputSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint,
+bool X86TargetInfo::validateOutputSize(StringRef Constraint,
unsigned Size) const {
// Strip off constraint modifiers.
while (Constraint[0] == '=' || Constraint[0] == '+' || Constraint[0] == '&')
Constraint = Constraint.substr(1);
- return validateOperandSize(FeatureMap, Constraint, Size);
+ return validateOperandSize(Constraint, Size);
}
-bool X86TargetInfo::validateInputSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint,
+bool X86TargetInfo::validateInputSize(StringRef Constraint,
unsigned Size) const {
- return validateOperandSize(FeatureMap, Constraint, Size);
+ return validateOperandSize(Constraint, Size);
}
-bool X86TargetInfo::validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint,
+bool X86TargetInfo::validateOperandSize(StringRef Constraint,
unsigned Size) const {
switch (Constraint[0]) {
default:
@@ -1773,7 +1770,7 @@ bool X86TargetInfo::validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
case 'z':
case '0':
// XMM0
- if (FeatureMap.lookup("sse"))
+ if (SSELevel >= SSE1)
return Size <= 128U;
return false;
case 'i':
@@ -1787,10 +1784,10 @@ bool X86TargetInfo::validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
LLVM_FALLTHROUGH;
case 'v':
case 'x':
- if (FeatureMap.lookup("avx512f"))
+ if (SSELevel >= AVX512F)
// 512-bit zmm registers can be used if target supports AVX512F.
return Size <= 512U;
- else if (FeatureMap.lookup("avx"))
+ else if (SSELevel >= AVX)
// 256-bit ymm registers can be used if target supports AVX.
return Size <= 256U;
return Size <= 128U;
diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h
index ae3fd240ce2..cad869f7123 100644
--- a/clang/lib/Basic/Targets/X86.h
+++ b/clang/lib/Basic/Targets/X86.h
@@ -177,11 +177,9 @@ public:
return false;
}
- bool validateOutputSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint, unsigned Size) const override;
+ bool validateOutputSize(StringRef Constraint, unsigned Size) const override;
- bool validateInputSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint, unsigned Size) const override;
+ bool validateInputSize(StringRef Constraint, unsigned Size) const override;
virtual bool
checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const override {
@@ -193,8 +191,8 @@ public:
return true;
};
- virtual bool validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint, unsigned Size) const;
+
+ virtual bool validateOperandSize(StringRef Constraint, unsigned Size) const;
std::string convertConstraint(const char *&Constraint) const override;
const char *getClobbers() const override {
@@ -370,8 +368,7 @@ public:
return -1;
}
- bool validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
- StringRef Constraint, unsigned Size) const override {
+ bool validateOperandSize(StringRef Constraint, unsigned Size) const override {
switch (Constraint[0]) {
default:
break;
@@ -389,7 +386,7 @@ public:
return Size <= 64;
}
- return X86TargetInfo::validateOperandSize(FeatureMap, Constraint, Size);
+ return X86TargetInfo::validateOperandSize(Constraint, Size);
}
void setMaxAtomicWidth() override {
OpenPOWER on IntegriCloud