diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 26 | 
1 files changed, 9 insertions, 17 deletions
| diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index 3b9144dc0b8..6b0a9154b16 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -620,7 +620,15 @@ unsigned getX86SubSuperRegister(unsigned Reg, MVT::SimpleValueType VT,    case MVT::i8:      if (High) {        switch (Reg) { -      default: return getX86SubSuperRegister(Reg, MVT::i64, High); +      default: return getX86SubSuperRegister(Reg, MVT::i64); +      case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI: +        return X86::SI; +      case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI: +        return X86::DI; +      case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP: +        return X86::BP; +      case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP: +        return X86::SP;        case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:          return X86::AH;        case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX: @@ -740,22 +748,6 @@ unsigned getX86SubSuperRegister(unsigned Reg, MVT::SimpleValueType VT,        return X86::R15D;      }    case MVT::i64: -    // For 64-bit mode if we've requested a "high" register and the -    // Q or r constraints we want one of these high registers or -    // just the register name otherwise. -    if (High) { -      switch (Reg) { -      case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI: -        return X86::SI; -      case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI: -        return X86::DI; -      case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP: -        return X86::BP; -      case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP: -        return X86::SP; -      // Fallthrough. -      } -    }      switch (Reg) {      default: llvm_unreachable("Unexpected register");      case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX: | 

