diff options
| author | Coby Tayree <coby.tayree@intel.com> | 2017-08-24 09:07:34 +0000 |
|---|---|---|
| committer | Coby Tayree <coby.tayree@intel.com> | 2017-08-24 09:07:34 +0000 |
| commit | 7b49dc9c68ef998716488e1f918feaa799f3cd58 (patch) | |
| tree | ced7ff542db54033c1c401e5a316abd435b3bbf6 /clang/lib/CodeGen/TargetInfo.cpp | |
| parent | 7a99e33b8eef4b6656f6dca7b83b1b4837ff732a (diff) | |
| download | bcm5719-llvm-7b49dc9c68ef998716488e1f918feaa799f3cd58.tar.gz bcm5719-llvm-7b49dc9c68ef998716488e1f918feaa799f3cd58.zip | |
[Clang][x86][Inline Asm] support for GCC style inline asm - Y<x> constraints
This patch is intended to enable the use of basic double letter constraints used in GCC extended inline asm {Yi Y2 Yz Y0 Ym Yt}.
Supersedes D35205
llvm counterpart: D36369
Differential Revision: https://reviews.llvm.org/D36371
llvm-svn: 311643
Diffstat (limited to 'clang/lib/CodeGen/TargetInfo.cpp')
| -rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 522c0e8a861..64ee31f83d3 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -22,6 +22,7 @@ #include "clang/CodeGen/SwiftCallingConv.h" #include "clang/Frontend/CodeGenOptions.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" #include "llvm/IR/DataLayout.h" #include "llvm/IR/Type.h" @@ -870,7 +871,10 @@ bool IsX86_MMXType(llvm::Type *IRType) { static llvm::Type* X86AdjustInlineAsmType(CodeGen::CodeGenFunction &CGF, StringRef Constraint, llvm::Type* Ty) { - if ((Constraint == "y" || Constraint == "&y") && Ty->isVectorTy()) { + bool IsMMXCons = llvm::StringSwitch<bool>(Constraint) + .Cases("y", "&y", "^Ym", true) + .Default(false); + if (IsMMXCons && Ty->isVectorTy()) { if (cast<llvm::VectorType>(Ty)->getBitWidth() != 64) { // Invalid MMX constraint return nullptr; |

