diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2014-09-18 21:58:54 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2014-09-18 21:58:54 +0000 |
commit | e867e422e218d393de701ecf1be7e5ac8efc3e2c (patch) | |
tree | bf5bcb230b59c628491ae8bbe296c947bef18ed9 /clang/lib/Basic/Targets.cpp | |
parent | 042b7ffd3796c9cfaf18bbbb6304c64d2adf6341 (diff) | |
download | bcm5719-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.cpp | 3 |
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; |