if_icmp<cond>
Operation
Branch if int comparison succeeds
| if_icmp<cond> |  | 
| branchbyte1 |  | 
| branchbyte2 |  | 
Forms
if_icmpeq	=	159 (0x9f)
if_icmpne	=	160 (0xa0)
if_icmplt 	= 	161 (0xa1)
if_icmpge	=	162 (0xa2)
if_icmpgt	=	163 (0xa3)
if_icmple	=	164 (0xa4)
Stack
..., value1, value2  ...
 ...
Description
Both value1 and value2 must be of type int. They are both popped from the operand stack and compared. All comparisons are signed. The results of the comparison are as follows:
- eq 	succeeds if and only if value1 = value2
- ne 	succeeds if and only if value1  value2 value2
- lt 	succeeds if and only if value1 < value2
- le 	succeeds if and only if value1 £ value2
- gt 	succeeds if and only if value1 > value2
- ge 	succeeds if and only if value1  value2 value2
If the comparison succeeds, the unsigned branchbyte1 and branchbyte2 are used to construct a signed 16-bit offset, where the offset is calculated to be (branchbyte1 << 8) | branchbyte2. Execution then proceeds at that offset from the address of the opcode of this if_icmp<cond> instruction. The target address must be that of an opcode of an instruction within the method that contains this if_icmp<cond> instruction.
Otherwise, execution proceeds at the address of the instruction following this if_icmp<cond> instruction.