1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00

Give the ARM BKPT instruction the right operand type.

The immediate is of limited range and the operand type should reflect that.

llvm-svn: 135066
This commit is contained in:
Jim Grosbach 2011-07-13 19:24:09 +00:00
parent 13c2a2dac3
commit ab030d8a81
2 changed files with 5 additions and 5 deletions

View File

@ -255,9 +255,8 @@ def lo16AllZero : PatLeaf<(i32 imm), [{
return (((uint32_t)N->getZExtValue()) & 0xFFFFUL) == 0;
}], hi16>;
/// imm0_65535 predicate - True if the 32-bit immediate is in the range
/// [0.65535].
def imm0_65535 : ImmLeaf<i32, [{
/// imm0_65535 - An immediate is in the range [0.65535].
def imm0_65535 : Operand<i32>, ImmLeaf<i32, [{
return Imm >= 0 && Imm < 65536;
}]>;
@ -1174,8 +1173,8 @@ def SEV : AI<(outs), (ins), MiscFrm, NoItinerary, "sev", "",
// The i32imm operand $val can be used by a debugger to store more information
// about the breakpoint.
def BKPT : AI<(outs), (ins i32imm:$val), MiscFrm, NoItinerary, "bkpt", "\t$val",
[]>, Requires<[IsARM]> {
def BKPT : AI<(outs), (ins imm0_65535:$val), MiscFrm, NoItinerary,
"bkpt", "\t$val", []>, Requires<[IsARM]> {
bits<16> val;
let Inst{3-0} = val{3-0};
let Inst{19-8} = val{15-4};

View File

@ -590,6 +590,7 @@ static int ARMFlagFromOpName(LiteralConstantEmitter *type,
IMM("nModImm");
IMM("imm0_255");
IMM("imm0_4095");
IMM("imm0_65535");
IMM("jt2block_operand");
IMM("t_imm_s4");
IMM("pclabel");