summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@apple.com>2014-09-18 21:58:54 +0000
committerAkira Hatanaka <ahatanaka@apple.com>2014-09-18 21:58:54 +0000
commite867e422e218d393de701ecf1be7e5ac8efc3e2c (patch)
treebf5bcb230b59c628491ae8bbe296c947bef18ed9 /clang/lib/Basic/Targets.cpp
parent042b7ffd3796c9cfaf18bbbb6304c64d2adf6341 (diff)
downloadbcm5719-llvm-e867e422e218d393de701ecf1be7e5ac8efc3e2c.tar.gz
bcm5719-llvm-e867e422e218d393de701ecf1be7e5ac8efc3e2c.zip
[X86, inlineasm] Do not allow using constraint 'x' for a variable larger than
128-bit unless the target CPU supports AVX. rdar://problem/11846140 llvm-svn: 218082
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 7f30ac551b0..b4b8ec007db 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -3084,7 +3084,8 @@ bool X86TargetInfo::validateOperandSize(StringRef Constraint,
case 'u':
return Size <= 128;
case 'x':
- return Size <= 256;
+ // 256-bit ymm registers can be used if target supports AVX.
+ return Size <= (SSELevel >= AVX ? 256 : 128);
}
return true;
OpenPOWER on IntegriCloud