Mercurial > hg > graal-compiler
diff graal/com.oracle.max.asm/src/com/oracle/max/asm/target/amd64/AMD64Assembler.java @ 5402:80127e4a1742
remove Condition.OF and Condition.NOF
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 15 May 2012 14:22:01 +0200 |
parents | efbb1e33e2f3 |
children | 438ab53efdd0 |
line wrap: on
line diff
--- a/graal/com.oracle.max.asm/src/com/oracle/max/asm/target/amd64/AMD64Assembler.java Tue May 15 11:07:34 2012 +0200 +++ b/graal/com.oracle.max.asm/src/com/oracle/max/asm/target/amd64/AMD64Assembler.java Tue May 15 14:22:01 2012 +0200 @@ -46,34 +46,60 @@ * The x86 condition codes used for conditional jumps/moves. */ public enum ConditionFlag { - zero(0x4), - notZero(0x5), - equal(0x4), - notEqual(0x5), - less(0xc), - lessEqual(0xe), - greater(0xf), - greaterEqual(0xd), - below(0x2), - belowEqual(0x6), - above(0x7), - aboveEqual(0x3), - overflow(0x0), - noOverflow(0x1), - carrySet(0x2), - carryClear(0x3), - negative(0x8), - positive(0x9), - parity(0xa), - noParity(0xb); + zero(0x4, "|zero|"), + notZero(0x5, "|nzero|"), + equal(0x4, "="), + notEqual(0x5, "!="), + less(0xc, "<"), + lessEqual(0xe, "<="), + greater(0xf, ">"), + greaterEqual(0xd, ">="), + below(0x2, "|<|"), + belowEqual(0x6, "|<=|"), + above(0x7, "|>|"), + aboveEqual(0x3, "|>=|"), + overflow(0x0, "|of|"), + noOverflow(0x1, "|nof|"), + carrySet(0x2, "|carry|"), + carryClear(0x3, "|ncarry|"), + negative(0x8, "|neg|"), + positive(0x9, "|pos|"), + parity(0xa, "|par|"), + noParity(0xb, "|npar|"); public final int value; - - private ConditionFlag(int value) { + public final String operator; + + private ConditionFlag(int value, String operator) { this.value = value; + this.operator = operator; } - public static final ConditionFlag[] values = values(); + public ConditionFlag negate() { + switch(this) { + case zero: return notZero; + case notZero: return zero; + case equal: return notEqual; + case notEqual: return equal; + case less: return greaterEqual; + case lessEqual: return greater; + case greater: return lessEqual; + case greaterEqual: return less; + case below: return aboveEqual; + case belowEqual: return above; + case above: return belowEqual; + case aboveEqual: return below; + case overflow: return noOverflow; + case noOverflow: return overflow; + case carrySet: return carryClear; + case carryClear: return carrySet; + case negative: return positive; + case positive: return negative; + case parity: return noParity; + case noParity: return parity; + } + throw new IllegalArgumentException(); + } } /**