diff options
author | Chris Lattner <sabre@nondot.org> | 2008-10-17 18:15:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-10-17 18:15:05 +0000 |
commit | 1fa7198f36b96462835acb2e1aad342021dac3a4 (patch) | |
tree | a95feda9c75c4338feb2be3a4b1301710aead836 | |
parent | 3d0c4c4657f179d8256dfa04e38ce9bd2cc67d2b (diff) | |
download | external_llvm-1fa7198f36b96462835acb2e1aad342021dac3a4.tar.gz external_llvm-1fa7198f36b96462835acb2e1aad342021dac3a4.tar.bz2 external_llvm-1fa7198f36b96462835acb2e1aad342021dac3a4.zip |
add support for 128 bit inputs on both x86-64 and x86-32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57709 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 0607797b71..fa467693bc 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -7509,15 +7509,13 @@ X86TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint, case 'r': // GENERAL_REGS case 'R': // LEGACY_REGS case 'l': // INDEX_REGS - if (VT == MVT::i64 && Subtarget->is64Bit()) - return std::make_pair(0U, X86::GR64RegisterClass); - if (VT == MVT::i32 || VT == MVT::i64) - return std::make_pair(0U, X86::GR32RegisterClass); - else if (VT == MVT::i16) - return std::make_pair(0U, X86::GR16RegisterClass); - else if (VT == MVT::i8) + if (VT == MVT::i8) return std::make_pair(0U, X86::GR8RegisterClass); - break; + if (VT == MVT::i16) + return std::make_pair(0U, X86::GR16RegisterClass); + if (VT == MVT::i32 || !Subtarget->is64Bit()) + return std::make_pair(0U, X86::GR32RegisterClass); + return std::make_pair(0U, X86::GR64RegisterClass); case 'f': // FP Stack registers. // If SSE is enabled for this VT, use f80 to ensure the isel moves the // value to the correct fpstack register class. @@ -7529,7 +7527,6 @@ X86TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint, case 'y': // MMX_REGS if MMX allowed. if (!Subtarget->hasMMX()) break; return std::make_pair(0U, X86::VR64RegisterClass); - break; case 'Y': // SSE_REGS if SSE2 allowed if (!Subtarget->hasSSE2()) break; // FALL THROUGH. |