mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-26 14:25:18 +00:00
Use the same (%dx) hack for in[bwl] as for out[bwl].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126244 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6557bce3ec
commit
00743c2218
@ -775,6 +775,19 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
|
||||
delete &Op;
|
||||
}
|
||||
}
|
||||
// Same hack for "in[bwl]? (%dx), %al" -> "inb %dx, %al".
|
||||
if ((Name == "inb" || Name == "inw" || Name == "inl" || Name == "in") &&
|
||||
Operands.size() == 3) {
|
||||
X86Operand &Op = *(X86Operand*)Operands.begin()[1];
|
||||
if (Op.isMem() && Op.Mem.SegReg == 0 &&
|
||||
isa<MCConstantExpr>(Op.Mem.Disp) &&
|
||||
cast<MCConstantExpr>(Op.Mem.Disp)->getValue() == 0 &&
|
||||
Op.Mem.BaseReg == MatchRegisterName("dx") && Op.Mem.IndexReg == 0) {
|
||||
SMLoc Loc = Op.getEndLoc();
|
||||
Operands.begin()[1] = X86Operand::CreateReg(Op.Mem.BaseReg, Loc, Loc);
|
||||
delete &Op;
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: Hack to handle recognize s{hr,ar,hl} $1, <op>. Canonicalize to
|
||||
// "shift <op>".
|
||||
|
@ -241,13 +241,32 @@ inl %dx
|
||||
|
||||
// PR8114
|
||||
// CHECK: outb %al, %dx
|
||||
// CHECK: outb %al, %dx
|
||||
// CHECK: outw %ax, %dx
|
||||
// CHECK: outw %ax, %dx
|
||||
// CHECK: outl %eax, %dx
|
||||
// CHECK: outl %eax, %dx
|
||||
|
||||
out %al, (%dx)
|
||||
out %ax, (%dx)
|
||||
outl %eax, (%dx)
|
||||
out %al, (%dx)
|
||||
outb %al, (%dx)
|
||||
out %ax, (%dx)
|
||||
outw %ax, (%dx)
|
||||
out %eax, (%dx)
|
||||
outl %eax, (%dx)
|
||||
|
||||
// CHECK: inb %dx, %al
|
||||
// CHECK: inb %dx, %al
|
||||
// CHECK: inw %dx, %ax
|
||||
// CHECK: inw %dx, %ax
|
||||
// CHECK: inl %dx, %eax
|
||||
// CHECK: inl %dx, %eax
|
||||
|
||||
in (%dx), %al
|
||||
inb (%dx), %al
|
||||
in (%dx), %ax
|
||||
inw (%dx), %ax
|
||||
in (%dx), %eax
|
||||
inl (%dx), %eax
|
||||
|
||||
// rdar://8431422
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user