Commit c50f9289 authored by Benoit Perrot's avatar Benoit Perrot
Browse files

2005-03-06 Benoît Perrot <benoit@lrde.epita.fr>

	Specify instruction format type to distinguish register, immediate
	and jump instructions.

	* src/inst/inst.hh: Add a format attribute.
	* dev/nolimips.xml, dev/nolimips.py, dev/inst-nodes-gen.py: 
	Fill it.
	
parent 5bc23e86
2005-03-06 Benoît Perrot <benoit@lrde.epita.fr>
Specify instruction format type to distinguish register, immediate
and jump instructions.
* src/inst/inst.hh: Add a format attribute.
* dev/nolimips.xml, dev/nolimips.py, dev/inst-nodes-gen.py:
Fill it.
2005-03-06 Benoît Perrot <benoit@lrde.epita.fr> 2005-03-06 Benoît Perrot <benoit@lrde.epita.fr>
Provide `--profile' option. Provide `--profile' option.
......
...@@ -31,6 +31,12 @@ if __name__ != "__main__" or len(sys.argv) != 2: ...@@ -31,6 +31,12 @@ if __name__ != "__main__" or len(sys.argv) != 2:
srcdir = sys.argv[1] srcdir = sys.argv[1]
## Generate the class corresponding to an instruction ## Generate the class corresponding to an instruction
format_type_to_enum = {
"register": "r_type",
"immediate": "i_type",
"jump": "j_type",
}
def class_generate(inst): def class_generate(inst):
## Shortands ## Shortands
...@@ -109,11 +115,12 @@ def class_generate(inst): ...@@ -109,11 +115,12 @@ def class_generate(inst):
print " /** \\} */" print " /** \\} */"
sys.stdout = inline sys.stdout = inline
print " inline" print " inline"
if args == "": print " " + class_id + "::" + class_id + "(" + args + ")" + ":"
print " " + class_id + "::" + class_id + "()" if init == "":
print " Inst(" + format_type_to_enum[format.type] + ")"
else: else:
print " " + class_id + "::" + class_id + "(" + args + ")" + ":" print " Inst(" + format_type_to_enum[format.type] + "),"
print " " + init print " " + init
print " {}\n" print " {}\n"
sys.stdout = impl sys.stdout = impl
print " " + class_id + "::~" + class_id + "()" print " " + class_id + "::~" + class_id + "()"
......
...@@ -120,7 +120,8 @@ class AttributeBuilder: ...@@ -120,7 +120,8 @@ class AttributeBuilder:
return Attribute(self.type, self.restriction, self.name, self.value) return Attribute(self.type, self.restriction, self.name, self.value)
class Format: class Format:
def __init__(self, attributes): def __init__(self, type, attributes):
self.type = type
self.attributes = attributes self.attributes = attributes
def __str__(self): def __str__(self):
res = " <format>" res = " <format>"
...@@ -129,11 +130,12 @@ class Format: ...@@ -129,11 +130,12 @@ class Format:
return res + "\n </format>" return res + "\n </format>"
class FormatBuilder: class FormatBuilder:
def reset(self): def reset(self):
self.type = ""
self.attributes = [] self.attributes = []
def __init__(self): def __init__(self):
self.reset() self.reset()
def get(self): def get(self):
return Format(self.attributes) return Format(self.type, self.attributes)
## ------------------------------------- ## -------------------------------------
...@@ -212,12 +214,13 @@ class InstructionBuilder: ...@@ -212,12 +214,13 @@ class InstructionBuilder:
self.level = "" self.level = ""
self.kind = "" self.kind = ""
self.desc = "" self.desc = ""
self.format = Format("") self.format = Format("", [])
self.syntaxes = [] self.syntaxes = []
def __init__(self): def __init__(self):
self.reset() self.reset()
def get(self): def get(self):
assert(self.opcode != "" and self.level != "" and self.kind != "") assert(self.opcode != "" and self.level != "" and self.kind != "" and
(self.level != "native" or self.format.type != ""))
return Instruction(self.opcode, self.level, self.kind, self.desc, return Instruction(self.opcode, self.level, self.kind, self.desc,
self.format, self.syntaxes) self.format, self.syntaxes)
...@@ -245,6 +248,8 @@ class InstructionSetHandler(ContentHandler): ...@@ -245,6 +248,8 @@ class InstructionSetHandler(ContentHandler):
self.content = "" self.content = ""
elif name == "format": elif name == "format":
self.format_b = FormatBuilder() self.format_b = FormatBuilder()
if attrs.has_key("type"):
self.format_b.type = attrs["type"]
elif name == "attribute": elif name == "attribute":
self.attr_b.reset() self.attr_b.reset()
self.attr_b.type = attrs["type"] self.attr_b.type = attrs["type"]
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<instruction opcode="add" level="native" kind="arithmetic"> <instruction opcode="add" level="native" kind="arithmetic">
<description>Add src1 and src2 and store the result in dest <description>Add src1 and src2 and store the result in dest
(32-bit integers). If an overflow occurs, then trap.</description> (32-bit integers). If an overflow occurs, then trap.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<instruction opcode="addu" level="native" kind="arithmetic"> <instruction opcode="addu" level="native" kind="arithmetic">
<description>Add src1 and src2 and store the result in dest <description>Add src1 and src2 and store the result in dest
(32-bit integers).</description> (32-bit integers).</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<instruction opcode="addi" level="native" kind="arithmetic"> <instruction opcode="addi" level="native" kind="arithmetic">
<description>Add a constant imm and src and store the result in dest <description>Add a constant imm and src and store the result in dest
(32-bit integers). If overflow occurs, then trap.</description> (32-bit integers). If overflow occurs, then trap.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<instruction opcode="addiu" level="native" kind="arithmetic"> <instruction opcode="addiu" level="native" kind="arithmetic">
<description>Add a constant imm and src and store the result in dest <description>Add a constant imm and src and store the result in dest
(32-bit integer).</description> (32-bit integer).</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<instruction opcode="sub" level="native" kind="arithmetic"> <instruction opcode="sub" level="native" kind="arithmetic">
<description>Subtract src2 from src1 and store the result in dest <description>Subtract src2 from src1 and store the result in dest
(32-bit integers). If an overflow occurs (FIXME), then trap.</description> (32-bit integers). If an overflow occurs (FIXME), then trap.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<instruction opcode="subu" level="native" kind="arithmetic"> <instruction opcode="subu" level="native" kind="arithmetic">
<description>Subtract src2 from src1 and store the result in dest <description>Subtract src2 from src1 and store the result in dest
(32-bit integers).</description> (32-bit integers).</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -156,7 +156,7 @@ write it to dest.</description> ...@@ -156,7 +156,7 @@ write it to dest.</description>
<instruction opcode="mul" level="native" kind="arithmetic"> <instruction opcode="mul" level="native" kind="arithmetic">
<description>Multiply two words src1 and src2 and write the result <description>Multiply two words src1 and src2 and write the result
to dest.</description> to dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -176,7 +176,7 @@ to dest.</description> ...@@ -176,7 +176,7 @@ to dest.</description>
<instruction opcode="div" level="native" kind="arithmetic"> <instruction opcode="div" level="native" kind="arithmetic">
<description>Divide src1 by src2 (32-bit signed integers), write <description>Divide src1 by src2 (32-bit signed integers), write
the quotient in LO and the remainder in HI (32-bit integer).</description> the quotient in LO and the remainder in HI (32-bit integer).</description>
<format> <format type="register">
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
</format> </format>
...@@ -198,7 +198,7 @@ the quotient in LO and the remainder in HI (32-bit integer).</description> ...@@ -198,7 +198,7 @@ the quotient in LO and the remainder in HI (32-bit integer).</description>
<instruction opcode="divu" level="native" kind="arithmetic"> <instruction opcode="divu" level="native" kind="arithmetic">
<description>Divide src1 by src2 (32-bit unsigned integers), write <description>Divide src1 by src2 (32-bit unsigned integers), write
the quotient in LO and the remainder in HI (32-bit integer).</description> the quotient in LO and the remainder in HI (32-bit integer).</description>
<format> <format type="register">
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
</format> </format>
...@@ -242,7 +242,7 @@ the quotient in LO and the remainder in HI (32-bit integer).</description> ...@@ -242,7 +242,7 @@ the quotient in LO and the remainder in HI (32-bit integer).</description>
<instruction opcode="sll" level="native" kind="bitwise"> <instruction opcode="sll" level="native" kind="bitwise">
<description>Left-shift (logical) the word src by the fixed number imm of <description>Left-shift (logical) the word src by the fixed number imm of
bits and store the result in dest.</description> bits and store the result in dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -261,7 +261,7 @@ bits and store the result in dest.</description> ...@@ -261,7 +261,7 @@ bits and store the result in dest.</description>
<instruction opcode="sllv" level="native" kind="bitwise"> <instruction opcode="sllv" level="native" kind="bitwise">
<description>Left-shift (logical) the word src1 by the variable number <description>Left-shift (logical) the word src1 by the variable number
src2 of bits and store the result in dest.</description> src2 of bits and store the result in dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -276,7 +276,7 @@ src2 of bits and store the result in dest.</description> ...@@ -276,7 +276,7 @@ src2 of bits and store the result in dest.</description>
<instruction opcode="sra" level="native" kind="bitwise"> <instruction opcode="sra" level="native" kind="bitwise">
<description>Right-shift (arithmetic) the word src by the fixed number <description>Right-shift (arithmetic) the word src by the fixed number
imm of bits and store the result in dest.</description> imm of bits and store the result in dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -295,7 +295,7 @@ imm of bits and store the result in dest.</description> ...@@ -295,7 +295,7 @@ imm of bits and store the result in dest.</description>
<instruction opcode="srav" level="native" kind="bitwise"> <instruction opcode="srav" level="native" kind="bitwise">
<description>Right-shift (arithmetic) the word src1 by the variable number <description>Right-shift (arithmetic) the word src1 by the variable number
src2 of bits and store the result in dest.</description> src2 of bits and store the result in dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -310,7 +310,7 @@ src2 of bits and store the result in dest.</description> ...@@ -310,7 +310,7 @@ src2 of bits and store the result in dest.</description>
<instruction opcode="srl" level="native" kind="bitwise"> <instruction opcode="srl" level="native" kind="bitwise">
<description>Right-shift (logical) the word src1 by the variable number <description>Right-shift (logical) the word src1 by the variable number
src2 of bits and store the result in dest.</description> src2 of bits and store the result in dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -329,7 +329,7 @@ src2 of bits and store the result in dest.</description> ...@@ -329,7 +329,7 @@ src2 of bits and store the result in dest.</description>
<instruction opcode="srlv" level="native" kind="bitwise"> <instruction opcode="srlv" level="native" kind="bitwise">
<description>Right-shift (logical) the word src1 by the variable number <description>Right-shift (logical) the word src1 by the variable number
src2 of bits and store the result in dest.</description> src2 of bits and store the result in dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -375,7 +375,7 @@ and store the result in dest.</description> ...@@ -375,7 +375,7 @@ and store the result in dest.</description>
<instruction opcode="and" level="native" kind="bitwise"> <instruction opcode="and" level="native" kind="bitwise">
<description>Compute the bitwise logical AND between src1 and src2 <description>Compute the bitwise logical AND between src1 and src2
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -394,7 +394,7 @@ and store the result to dest.</description> ...@@ -394,7 +394,7 @@ and store the result to dest.</description>
<instruction opcode="andi" level="native" kind="bitwise"> <instruction opcode="andi" level="native" kind="bitwise">
<description>Compute the bitwise logical AND between src and a constant imm <description>Compute the bitwise logical AND between src and a constant imm
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -410,7 +410,7 @@ and store the result to dest.</description> ...@@ -410,7 +410,7 @@ and store the result to dest.</description>
<instruction opcode="or" level="native" kind="bitwise"> <instruction opcode="or" level="native" kind="bitwise">
<description>Compute the bitwise logical OR between src1 and src2 <description>Compute the bitwise logical OR between src1 and src2
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -427,9 +427,9 @@ and store the result to dest.</description> ...@@ -427,9 +427,9 @@ and store the result to dest.</description>
</syntax> </syntax>
</instruction> </instruction>
<instruction opcode="ori" level="native" kind="bitwise"> <instruction opcode="ori" level="native" kind="bitwise">
<description>Compute the bitwise logical AND between src and a constant imm <description>Compute the bitwise logical OR between src and a constant imm
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -445,7 +445,7 @@ and store the result to dest.</description> ...@@ -445,7 +445,7 @@ and store the result to dest.</description>
<instruction opcode="xor" level="native" kind="bitwise"> <instruction opcode="xor" level="native" kind="bitwise">
<description>Compute the bitwise logical XOR between src1 and src2 <description>Compute the bitwise logical XOR between src1 and src2
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -464,7 +464,7 @@ and store the result to dest.</description> ...@@ -464,7 +464,7 @@ and store the result to dest.</description>
<instruction opcode="xori" level="native" kind="bitwise"> <instruction opcode="xori" level="native" kind="bitwise">
<description>Compute the bitwise logical XOR between src and a constant imm <description>Compute the bitwise logical XOR between src and a constant imm
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -480,7 +480,7 @@ and store the result to dest.</description> ...@@ -480,7 +480,7 @@ and store the result to dest.</description>
<instruction opcode="nor" level="native" kind="bitwise"> <instruction opcode="nor" level="native" kind="bitwise">
<description>Compute the bitwise logical NOR between src1 and src2 <description>Compute the bitwise logical NOR between src1 and src2
and store the result to dest.</description> and store the result to dest.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -629,7 +629,7 @@ else clear it.</description> ...@@ -629,7 +629,7 @@ else clear it.</description>
<instruction opcode="slt" level="native" kind="comparison"> <instruction opcode="slt" level="native" kind="comparison">
<description>Set dest to 1 if src1 is lower than src2 <description>Set dest to 1 if src1 is lower than src2
(signed comparison), else clear it.</description> (signed comparison), else clear it.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -648,7 +648,7 @@ else clear it.</description> ...@@ -648,7 +648,7 @@ else clear it.</description>
<instruction opcode="sltu" level="native" kind="comparison"> <instruction opcode="sltu" level="native" kind="comparison">
<description>Set dest to 1 if src1 is lower than src2 <description>Set dest to 1 if src1 is lower than src2
(unsigned comparison), else clear it.</description> (unsigned comparison), else clear it.</description>
<format> <format type="register">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src1" /> <attribute type="Register" name="src1" />
<attribute type="Register" name="src2" /> <attribute type="Register" name="src2" />
...@@ -668,7 +668,7 @@ else clear it.</description> ...@@ -668,7 +668,7 @@ else clear it.</description>
<instruction opcode="slti" level="native" kind="comparison"> <instruction opcode="slti" level="native" kind="comparison">
<description>Set dest to 1 if src1 is lower than a constant imm <description>Set dest to 1 if src1 is lower than a constant imm
(signed comparison), else clear it.</description> (signed comparison), else clear it.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -682,7 +682,7 @@ else clear it.</description> ...@@ -682,7 +682,7 @@ else clear it.</description>
<instruction opcode="sltiu" level="native" kind="comparison"> <instruction opcode="sltiu" level="native" kind="comparison">
<description>Set dest to 1 if src1 is lower than a constant imm <description>Set dest to 1 if src1 is lower than a constant imm
(unsigned comparison), else clear it.</description> (unsigned comparison), else clear it.</description>
<format> <format type="immediate">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
<attribute type="Register" name="src" /> <attribute type="Register" name="src" />
<attribute type="Exp" name="imm" /> <attribute type="Exp" name="imm" />
...@@ -698,7 +698,7 @@ else clear it.</description> ...@@ -698,7 +698,7 @@ else clear it.</description>
<!-- Branch instructions --> <!-- Branch instructions -->
<instruction opcode="beq" level="native" kind="branch"> <instruction opcode="beq" level="native" kind="branch">
<description>Branch to label if src1 equals src2.</description> <description>Branch to label if src1 equals src2.</description>
<format> <format type="jump">
<attribute type="Register" name="src1"/> <attribute type="Register" name="src1"/>
<attribute type="Register" name="src2"/> <attribute type="Register" name="src2"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
...@@ -725,7 +725,7 @@ else clear it.</description> ...@@ -725,7 +725,7 @@ else clear it.</description>
<instruction opcode="bne" level="native" kind="branch"> <instruction opcode="bne" level="native" kind="branch">
<description>Branch to label if src1 does not equal src2.</description> <description>Branch to label if src1 does not equal src2.</description>
<format> <format type="jump">
<attribute type="Register" name="src1"/> <attribute type="Register" name="src1"/>
<attribute type="Register" name="src2"/> <attribute type="Register" name="src2"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
...@@ -782,7 +782,7 @@ else clear it.</description> ...@@ -782,7 +782,7 @@ else clear it.</description>
<instruction opcode="bgez" level="native" kind="branch"> <instruction opcode="bgez" level="native" kind="branch">
<description>Branch to label if src is greater or equal to zero <description>Branch to label if src is greater or equal to zero
(signed comparison).</description> (signed comparison).</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -794,7 +794,7 @@ else clear it.</description> ...@@ -794,7 +794,7 @@ else clear it.</description>
<instruction opcode="bgezal" level="native" kind="branch"> <instruction opcode="bgezal" level="native" kind="branch">
<description>Call label if src is greater or equal to zero <description>Call label if src is greater or equal to zero
(signed comparison)</description> (signed comparison)</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -835,7 +835,7 @@ else clear it.</description> ...@@ -835,7 +835,7 @@ else clear it.</description>
<instruction opcode="bgtz" level="native" kind="branch"> <instruction opcode="bgtz" level="native" kind="branch">
<description>Branch to label if src is greater than zero <description>Branch to label if src is greater than zero
(signed comparison).</description> (signed comparison).</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -876,7 +876,7 @@ else clear it.</description> ...@@ -876,7 +876,7 @@ else clear it.</description>
<instruction opcode="blez" level="native" kind="branch"> <instruction opcode="blez" level="native" kind="branch">
<description>Branch to label if src is lower or equal to zero <description>Branch to label if src is lower or equal to zero
(signed comparison).</description> (signed comparison).</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -917,7 +917,7 @@ else clear it.</description> ...@@ -917,7 +917,7 @@ else clear it.</description>
<instruction opcode="bltz" level="native" kind="branch"> <instruction opcode="bltz" level="native" kind="branch">
<description>Branch to label if src1 is lower than zero <description>Branch to label if src1 is lower than zero
(signed comparison).</description> (signed comparison).</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -929,7 +929,7 @@ else clear it.</description> ...@@ -929,7 +929,7 @@ else clear it.</description>
<instruction opcode="bltzal" level="native" kind="branch"> <instruction opcode="bltzal" level="native" kind="branch">
<description>Call label if src1 is lower than zero <description>Call label if src1 is lower than zero
(signed comparison).</description> (signed comparison).</description>
<format> <format type="jump">
<attribute type="Register" name="src"/> <attribute type="Register" name="src"/>
<attribute type="Exp" name="label"/> <attribute type="Exp" name="label"/>
</format> </format>
...@@ -942,7 +942,7 @@ else clear it.</description> ...@@ -942,7 +942,7 @@ else clear it.</description>
<instruction opcode="j" level="native" kind="branch"> <instruction opcode="j" level="native" kind="branch">
<description>Jump to label unconditionaly.</description> <description>Jump to label unconditionaly.</description>
<format> <format type="jump">
<attribute type="Exp" name="label" /> <attribute type="Exp" name="label" />
</format> </format>
<syntax> <syntax>
...@@ -951,7 +951,7 @@ else clear it.</description> ...@@ -951,7 +951,7 @@ else clear it.</description>
</instruction> </instruction>
<instruction opcode="jal" level="native" kind="branch"> <instruction opcode="jal" level="native" kind="branch">
<description>Call label unconditionaly.</description> <description>Call label unconditionaly.</description>
<format> <format type="jump">
<attribute type="Exp" name="label" /> <attribute type="Exp" name="label" />
</format> </format>
<syntax> <syntax>
...@@ -963,7 +963,7 @@ else clear it.</description> ...@@ -963,7 +963,7 @@ else clear it.</description>
<instruction opcode="jr" level="native" kind="branch"> <instruction opcode="jr" level="native" kind="branch">
<description>Jump to address contained in dest <description>Jump to address contained in dest
unconditionaly.</description> unconditionaly.</description>
<format> <format type="jump">
<attribute type="Register" name="dest" /> <attribute type="Register" name="dest" />
</format> </format>
<syntax>