Add an icmp_imm instruction.

Compare a scalar integer to an immediate constant. Both Intel and RISC-V
ISAs have this operation.

This requires the addition of a new IntCompareImm instruction format.
This commit is contained in:
Jakob Stoklund Olesen
2017-04-03 09:49:44 -07:00
parent f70ae03b47
commit e23d12bbc7
8 changed files with 48 additions and 6 deletions

View File

@@ -38,6 +38,7 @@ InsertLane = InstructionFormat(VALUE, ('lane', uimm8), VALUE)
ExtractLane = InstructionFormat(VALUE, ('lane', uimm8))
IntCompare = InstructionFormat(intcc, VALUE, VALUE)
IntCompareImm = InstructionFormat(intcc, VALUE, imm64)
FloatCompare = InstructionFormat(floatcc, VALUE, VALUE)
Jump = InstructionFormat(ebb, VARIABLE_ARGS)

View File

@@ -367,6 +367,22 @@ icmp = Instruction(
""",
ins=(Cond, x, y), outs=a)
a = Operand('a', b1)
x = Operand('x', iB)
Y = Operand('Y', imm64)
icmp_imm = Instruction(
'icmp_imm', r"""
Compare scalar integer to a constant.
This is the same as the :inst:`icmp` instruction, except one operand is
an immediate constant.
This instruction can only compare scalars. Use :inst:`icmp` for
lane-wise vector comparisons.
""",
ins=(Cond, x, Y), outs=a)
a = Operand('a', Int)
x = Operand('x', Int)
y = Operand('y', Int)