diff --git a/llvm/lib/Target/X86/AsmParser/X86Operand.h b/llvm/lib/Target/X86/AsmParser/X86Operand.h --- a/llvm/lib/Target/X86/AsmParser/X86Operand.h +++ b/llvm/lib/Target/X86/AsmParser/X86Operand.h @@ -383,6 +383,8 @@ bool isMem512_GR16() const { if (!isMem512()) return false; + if (getMemBaseReg() == X86::AH) + return true; if (getMemBaseReg() && !X86MCRegisterClasses[X86::GR16RegClassID].contains(getMemBaseReg())) return false; @@ -391,6 +393,8 @@ bool isMem512_GR32() const { if (!isMem512()) return false; + if (getMemBaseReg() == X86::AH) + return true; if (getMemBaseReg() && !X86MCRegisterClasses[X86::GR32RegClassID].contains(getMemBaseReg()) && getMemBaseReg() != X86::EIP) @@ -404,6 +408,8 @@ bool isMem512_GR64() const { if (!isMem512()) return false; + if (getMemBaseReg() == X86::AH) + return true; if (getMemBaseReg() && !X86MCRegisterClasses[X86::GR64RegClassID].contains(getMemBaseReg()) && getMemBaseReg() != X86::RIP)