/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Common Public License (CPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/cpl1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
/*
* NOTE: OPT_Operator.java is mechanically generated from
* OPT_Operator.template using the operator definitions in
* OperatorList.dat and ia32OperatorList.dat
*
* DO NOT MANUALLY EDIT THE JAVA FILE.
*/
package org.jikesrvm.compilers.opt.ir;
import org.jikesrvm.*;
import org.jikesrvm.ArchitectureSpecific.OPT_PhysicalDefUse;
import org.jikesrvm.compilers.opt.*;
/**
* An OPT_Operator represents the operator of an {@link OPT_Instruction}.
* For each operator in the IR, we create exactly one OPT_Operator instance
* to represent it. These instances are all stored in static fields
* of {@link OPT_Operators}. Since only one instance is created for each
* semantic operator, they can be compared using <code>==</code>.
* <p>
* A common coding practive is to implement the {@link OPT_Operators}
* interface to be able to reference the IR operators within a class
* without having to prepend 'OPT_Operators.' everywhere.
*
* @see OPT_Operators
* @see OPT_Instruction
* @see OPT_OperatorNames
*/
public final class OPT_Operator {
/**
* The operators opcode.
* This value serves as a unique id suitable for use in switches
*/
public final char opcode;
/**
* Encoding of the operator's InstructionFormat.
* This field is only meant to be directly referenced
* from the mechanically generated InstructionFormat
* classes defined in the instructionFormats package.
* {@link OPT_Instruction} contains an explanation
* of the role of InstructionFormats in the IR.
*/
public final byte format;
/**
* encoding of operator traits (characteristics)
*/
private final int traits;
/**
* How many operands of the operator are (pure) defs?
*/
private final int numberDefs;
/**
* How many operands of the operator are both defs and uses?
* Only non-zero on IA32, 390.
*/
private final int numberDefUses;
/**
* How many operands of the operator are pure uses?
* Only contains a valid value for non-variableLength operators
*/
private final int numberUses;
/**
* Physical registers that are implicitly defined by the operator.
*/
public final int implicitDefs;
/**
* Physical registers that are implicitly used by the operator.
*/
public final int implicitUses;
/**
* Operator Class of the operator; used for instruction scheduling.
*/
OPT_OperatorClass opClass;
/**
* Sets the operator class.
*
* @param opClass operator class
*/
public void setOpClass(OPT_OperatorClass opClass) {
this.opClass = opClass;
}
/**
* Gets the operator class.
*
* @return operator class
*/
public OPT_OperatorClass getOpClass() {
return opClass;
}
/**
* Returns the string representation of this operator.
*
* @return the name of the operator
*/
public String toString() {
return OPT_OperatorNames.toString(this);
}
/**
* Returns the number of operands that are defs.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return number of operands that are pure defs
*/
public int getNumberOfPureDefs() {
if (VM.VerifyAssertions) VM._assert(!hasVarDefs());
return numberDefs;
}
/**
* Returns the number of operands that are pure defs
* and are not in the variable-length part of the operand list.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return how many non-variable operands are pure defs
*/
public int getNumberOfFixedPureDefs() {
return numberDefs;
}
/**
* Returns the number of operands that are pure uses
* and are not in the variable-length part of the operand list.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return how many non-variable operands are pure uses
*/
public int getNumberOfFixedPureUses() {
return numberUses;
}
/**
* Returns the number of operands that are defs
* and uses.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return number of operands that are combined defs and uses
*/
public int getNumberOfDefUses() {
return numberDefUses;
}
/**
* Returns the number of operands that are pure uses.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return number of operands that are pure uses
*/
public int getNumberOfPureUses() {
return numberUses;
}
/**
* Returns the number of operands that are defs
* (either pure defs or combined def/uses).
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return number of operands that are defs
*/
public int getNumberOfDefs() {
if (VM.VerifyAssertions) VM._assert(!hasVarDefs());
return numberDefs + numberDefUses;
}
/**
* Returns the number of operands that are uses
* (either combined def/uses or pure uses).
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return how many operands are uses
*/
public int getNumberOfUses() {
if (VM.VerifyAssertions) VM._assert(!hasVarUses());
return numberDefUses + numberUses;
}
/**
* Returns the number of operands that are pure uses
* and are not in the variable-length part of the operand list.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return how many non-variable operands are pure uses
*/
public int getNumberOfPureFixedUses() {
return numberUses;
}
/**
* Returns the number of operands that are uses
* (either combined use/defs or pure uses)
* and are not in the variable-length part of the operand list.
* By convention, operands are ordered in instructions
* such that all defs are first, followed by all
* combined defs/uses, followed by all pure uses.
*
* @return number of non-variable operands are uses
*/
public int getNumberOfFixedUses() {
return numberDefUses + numberUses;
}
/**
* Returns the number of physical registers that are
* implicitly defined by this operator.
*
* @return number of implicit defs
*/
public int getNumberOfImplicitDefs() {
return OPT_Bits.populationCount(implicitDefs);
}
/**
* Returns the number of physical registers that are
* implicitly used by this operator.
*
* @return number of implicit uses
*/
public int getNumberOfImplicitUses() {
return OPT_Bits.populationCount(implicitUses);
}
/*
* The following are used to encode operator traits in OperatorList.dat.
* Had to make a few of them public (yuck) to let us get at them
* from OPT_InstructionFormat.java.
*/
// operator has no interesting traits
public static final int none = 0x00000000;
// operator is a simple move operation from one "register" to another
private static final int move = 0x00000001;
// operator is an intraprocedural branch of some form
private static final int branch = 0x00000002;
// operator is some kind of call (interprocedural branch)
private static final int call = 0x00000004;
// modifer for branches/calls
private static final int conditional = 0x00000008;
// modifier for branches/calls, mostly on MIR
private static final int indirect = 0x00000010;
// an explicit load of a value from memory
private static final int load = 0x00000020;
// operator is modeled as a load by memory system, mostly on MIR
private static final int memAsLoad = 0x00000040;
// an explicit store of a value to memory
private static final int store = 0x00000080;
// operator is modeled as a store by memory system, mostly on MIR
private static final int memAsStore = 0x00000100;
// is an exception throw
private static final int ethrow = 0x00000200;
// an immediate PEI (null_check, int_zero_check, but _not_ call);
private static final int immedPEI = 0x00000400;
// operator is some kind of compare (val,val)-> cond
private static final int compare = 0x00000800;
// an explicit memory allocation
private static final int alloc = 0x00001000;
// a return instruction (interprocedural branch)
private static final int ret = 0x00002000;
// operator has a variable number of uses
public static final int varUses = 0x00004000;
// operator has a variable number of defs
public static final int varDefs = 0x00008000;
// operator is a potential thread switch point for some reason
// other than being a call/immedPEI
private static final int tsp = 0x00010000;
// operator is an acquire (monitorenter/lock) HIR only
private static final int acquire = 0x00020000;
// operator is a relase (monitorexit/unlock) HIR only
private static final int release = 0x00040000;
// operator either directly or indirectly may casue dynamic linking
private static final int dynLink = 0x00080000;
// operator is a yield point
private static final int yieldPoint = 0x00100000;
// operator pops floating-point stack after performing defs
private static final int fpPop = 0x00200000;
// operator pushs floating-point stack before performing defs
private static final int fpPush = 0x00400000;
// operator is commutative
private static final int commutative = 0x00800000;
/**
* Does the operator represent a simple move (the value is unchanged)
* from one "register" location to another "register" location?
*
* @return <code>true</code> if the operator is a simple move
* or <code>false</code> if it is not.
*/
public boolean isMove() {
return (traits & move) != 0;
}
/**
* Is the operator an intraprocedural branch?
*
* @return <code>true</code> if the operator is am
* intraprocedural branch or <code>false</code> if it is not.
*/
public boolean isBranch() {
return (traits & branch) != 0;
}
/**
* Is the operator a conditional intraprocedural branch?
*
* @return <code>true</code> if the operator is a conditoonal
* intraprocedural branch or <code>false</code> if it is not.
*/
public boolean isConditionalBranch() {
return (traits & (branch|conditional)) == (branch|conditional);
}
/**
* Is the operator an unconditional intraprocedural branch?
* We consider various forms of switches to be unconditional
* intraprocedural branches, even though they are multi-way branches
* and we may not no exactly which target will be taken.
* This turns out to be the right thing to do, since some
* arm of the switch will always be taken (unlike conditional branches).
*
* @return <code>true</code> if the operator is an unconditional
* intraprocedural branch or <code>false</code> if it is not.
*/
public boolean isUnconditionalBranch() {
return (traits & (branch|conditional)) == branch;
}
/**
* Is the operator a direct intraprocedural branch?
* In the HIR and LIR we consider switches to be direct branches,
* because their targets are known precisely.
*
* @return <code>true</code> if the operator is a direct
* intraprocedural branch or <code>false</code> if it is not.
*/
public boolean isDirectBranch() {
return (traits & (branch|indirect)) == branch;
}
/**
* Is the operator an indirect intraprocedural branch?
*
* @return <code>true</code> if the operator is an indirect
* interprocedural branch or <code>false</code> if it is not.
*/
public boolean isIndirectBranch() {
return (traits & (branch|indirect)) == (branch|indirect);
}
/**
* Is the operator a call (one kind of interprocedural branch)?
*
* @return <code>true</code> if the operator is a call
* or <code>false</code> if it is not.
*/
public boolean isCall() {
return (traits & call) != 0;
}
/**
* Is the operator a conditional call?
* We only allow conditional calls in the MIR, since they
* tend to only be directly implementable on some architecutres.
*
* @return <code>true</code> if the operator is a
* conditional call or <code>false</code> if it is not.
*/
public boolean isConditionalCall() {
return (traits & (call|conditional)) == (call|conditional);
}
/**
* Is the operator an unconditional call?
* Really only an interesting question in the MIR, since
* it is by definition true for all HIR and LIR calls.
*
* @return <code>true</code> if the operator is an unconditional
* call or <code>false</code> if it is not.
*/
public boolean isUnconditionalCall() {
return (traits & (call|conditional)) == call;
}
/**
* Is the operator a direct call?
* Only interesting on the MIR. In the HIR and LIR we pretend that
* all calls are "direct" even though most of them aren't.
*
* @return <code>true</code> if the operator is a direct call
* or <code>false</code> if it is not.
*/
public boolean isDirectCall() {
return (traits & (call|indirect)) == call;
}
/**
* Is the operator an indirect call?
* Only interesting on the MIR. In the HIR and LIR we pretend that
* all calls are "direct" even though most of them aren't.
*
* @return <code>true</code> if the operator is an indirect call
* or <code>false</code> if it is not.
*/
public boolean isIndirectCall() {
return (traits & (call|indirect)) == (call|indirect);
}
/**
* Is the operator an explicit load of a finite set of values from
* a finite set of memory locations (load, load multiple, _not_ call)?
*
* @return <code>true</code> if the operator is an explicit load
* or <code>false</code> if it is not.
*/
public boolean isExplicitLoad() {
return (traits & load) != 0;
}
/**
* Should the operator be treated as a load from some unknown location(s)
* for the purposes of scheduling and/or modeling the memory subsystem?
*
* @return <code>true</code> if the operator is an implicit load
* or <code>false</code> if it is not.
*/
public boolean isImplicitLoad() {
return (traits & (load|memAsLoad|call)) != 0;
}
/**
* Is the operator an explicit store of a finite set of values to
* a finite set of memory locations (store, store multiple, _not_ call)?
*
* @return <code>true</code> if the operator is an explicit store
* or <code>false</code> if it is not.
*/
public boolean isExplicitStore() {
return (traits & store) != 0;
}
/**
* Should the operator be treated as a store to some unknown location(s)
* for the purposes of scheduling and/or modeling the memory subsystem?
*
* @return <code>true</code> if the operator is an implicit store
* or <code>false</code> if it is not.
*/
public boolean isImplicitStore() {
return (traits & (store|memAsStore|call)) != 0;
}
/**
* Is the operator a throw of a Java exception?
*
* @return <code>true</code> if the operator is a throw
* or <code>false</code> if it is not.
*/
public boolean isThrow() {
return (traits & ethrow) != 0;
}
/**
* Is the operator a PEI (Potentially Excepting Instruction)?
*
* @return <code>true</code> if the operator is a PEI
* or <code>false</code> if it is not.
*/
public boolean isPEI() {
return (traits & (ethrow|immedPEI)) != 0;
}
/**
* Is the operator a potential GC point?
*
* @return <code>true</code> if the operator is a potential
* GC point or <code>false</code> if it is not.
*/
public boolean isGCPoint() {
return isPEI() || ((traits & (alloc|tsp)) != 0);
}
/**
* is the operator a potential thread switch point?
*
* @return <code>true</code> if the operator is a potential
* threadswitch point or <code>false</code> if it is not.
*/
public boolean isTSPoint() {
return isGCPoint();
}
/**
* Is the operator a compare (val,val) => condition?
*
* @return <code>true</code> if the operator is a compare
* or <code>false</code> if it is not.
*/
public boolean isCompare() {
return (traits & compare) != 0;
}
/**
* Is the operator an actual memory allocation instruction
* (NEW, NEWARRAY, etc)?
*
* @return <code>true</code> if the operator is an allocation
* or <code>false</code> if it is not.
*/
public boolean isAllocation() {
return (traits & alloc) != 0;
}
/**
* Is the operator a return (interprocedural branch)?
*
* @return <code>true</code> if the operator is a return
* or <code>false</code> if it is not.
*/
public boolean isReturn() {
return (traits & ret) != 0;
}
/**
* Can the operator have a variable number of uses?
*
* @return <code>true</code> if the operator has a variable number
* of uses or <code>false</code> if it does not.
*/
public boolean hasVarUses() {
return (traits & varUses) != 0;
}
/**
* Can the operator have a variable number of uses?
*
* @return <code>true</code> if the operator has a variable number
* of uses or <code>false</code> if it does not.
*/
public boolean hasVarDefs() {
return (traits & varDefs) != 0;
}
/**
* Can the operator have a variable number of uses or defs?
*
* @return <code>true</code> if the operator has a variable number
* of uses or defs or <code>false</code> if it does not.
*/
public boolean hasVarUsesOrDefs() {
return (traits & (varUses | varDefs)) != 0;
}
/**
* Is the operator an acquire (monitorenter/lock)?
*
* @return <code>true</code> if the operator is an acquire
* or <code>false</code> if it is not.
*/
public boolean isAcquire() {
return (traits & acquire) != 0;
}
/**
* Is the operator a release (monitorexit/unlock)?
*
* @return <code>true</code> if the operator is a release
* or <code>false</code> if it is not.
*/
public boolean isRelease() {
return (traits & release) != 0;
}
/**
* Could the operator either directly or indirectly
* cause dynamic class loading?
*
* @return <code>true</code> if the operator is a dynamic linking point
* or <code>false</code> if it is not.
*/
public boolean isDynamicLinkingPoint() {
return (traits & dynLink) != 0;
}
/**
* Is the operator a yield point?
*
* @return <code>true</code> if the operator is a yield point
* or <code>false</code> if it is not.
*/
public boolean isYieldPoint() {
return (traits & yieldPoint) != 0;
}
/**
* Does the operator pop the floating-point stack?
*
* @return <code>true</code> if the operator pops the floating-point
* stack.
* or <code>false</code> if not.
*/
public boolean isFpPop() {
return (traits & fpPop) != 0;
}
/**
* Does the operator push on the floating-point stack?
*
* @return <code>true</code> if the operator pushes on the floating-point
* stack.
* or <code>false</code> if not.
*/
public boolean isFpPush() {
return (traits & fpPush) != 0;
}
/**
* Is the operator commutative?
*
* @return <code>true</code> if the operator is commutative.
* or <code>false</code> if not.
*/
public boolean isCommutative() {
return (traits & commutative) != 0;
}
public static final OPT_Operator[] OperatorArray = {
new OPT_Operator((char)0, OPT_InstructionFormat.Unary_format, //GET_CLASS_OBJECT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)1, OPT_InstructionFormat.Nullary_format, //GET_CAUGHT_EXCEPTION
(none | OPT_InstructionFormat.Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)2, OPT_InstructionFormat.CacheOp_format, //SET_CAUGHT_EXCEPTION
(none | OPT_InstructionFormat.CacheOp_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)3, OPT_InstructionFormat.New_format, //NEW
(alloc | immedPEI | OPT_InstructionFormat.New_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)4, OPT_InstructionFormat.New_format, //NEW_UNRESOLVED
(alloc | immedPEI | dynLink | OPT_InstructionFormat.New_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)5, OPT_InstructionFormat.NewArray_format, //NEWARRAY
(alloc | immedPEI | OPT_InstructionFormat.NewArray_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)6, OPT_InstructionFormat.NewArray_format, //NEWARRAY_UNRESOLVED
(alloc | immedPEI | dynLink | OPT_InstructionFormat.NewArray_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)7, OPT_InstructionFormat.Athrow_format, //ATHROW
(ethrow | OPT_InstructionFormat.Athrow_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)8, OPT_InstructionFormat.TypeCheck_format, //CHECKCAST
(immedPEI | OPT_InstructionFormat.TypeCheck_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)9, OPT_InstructionFormat.TypeCheck_format, //CHECKCAST_NOTNULL
(immedPEI | OPT_InstructionFormat.TypeCheck_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)10, OPT_InstructionFormat.TypeCheck_format, //CHECKCAST_UNRESOLVED
(immedPEI | dynLink | OPT_InstructionFormat.TypeCheck_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)11, OPT_InstructionFormat.TypeCheck_format, //MUST_IMPLEMENT_INTERFACE
(immedPEI | OPT_InstructionFormat.TypeCheck_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)12, OPT_InstructionFormat.InstanceOf_format, //INSTANCEOF
(none | OPT_InstructionFormat.InstanceOf_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)13, OPT_InstructionFormat.InstanceOf_format, //INSTANCEOF_NOTNULL
(none | OPT_InstructionFormat.InstanceOf_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)14, OPT_InstructionFormat.InstanceOf_format, //INSTANCEOF_UNRESOLVED
(immedPEI | dynLink | OPT_InstructionFormat.InstanceOf_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)15, OPT_InstructionFormat.MonitorOp_format, //MONITORENTER
(memAsLoad | memAsStore | acquire | tsp | OPT_InstructionFormat.MonitorOp_traits),
0, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)16, OPT_InstructionFormat.MonitorOp_format, //MONITOREXIT
(memAsLoad | memAsStore | release | tsp | immedPEI | OPT_InstructionFormat.MonitorOp_traits),
0, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)17, OPT_InstructionFormat.NewArray_format, //NEWOBJMULTIARRAY
(alloc | immedPEI | dynLink | OPT_InstructionFormat.NewArray_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)18, OPT_InstructionFormat.GetStatic_format, //GETSTATIC
(load | OPT_InstructionFormat.GetStatic_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)19, OPT_InstructionFormat.PutStatic_format, //PUTSTATIC
(store | OPT_InstructionFormat.PutStatic_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)20, OPT_InstructionFormat.GetField_format, //GETFIELD
(load | OPT_InstructionFormat.GetField_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)21, OPT_InstructionFormat.PutField_format, //PUTFIELD
(store | OPT_InstructionFormat.PutField_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)22, OPT_InstructionFormat.ZeroCheck_format, //INT_ZERO_CHECK
(immedPEI | OPT_InstructionFormat.ZeroCheck_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)23, OPT_InstructionFormat.ZeroCheck_format, //LONG_ZERO_CHECK
(immedPEI | OPT_InstructionFormat.ZeroCheck_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)24, OPT_InstructionFormat.BoundsCheck_format, //BOUNDS_CHECK
(immedPEI | OPT_InstructionFormat.BoundsCheck_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)25, OPT_InstructionFormat.StoreCheck_format, //OBJARRAY_STORE_CHECK
(immedPEI | OPT_InstructionFormat.StoreCheck_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)26, OPT_InstructionFormat.StoreCheck_format, //OBJARRAY_STORE_CHECK_NOTNULL
(immedPEI | OPT_InstructionFormat.StoreCheck_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)27, OPT_InstructionFormat.InlineGuard_format, //IG_PATCH_POINT
(branch | conditional | OPT_InstructionFormat.InlineGuard_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)28, OPT_InstructionFormat.InlineGuard_format, //IG_CLASS_TEST
(branch | conditional | OPT_InstructionFormat.InlineGuard_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)29, OPT_InstructionFormat.InlineGuard_format, //IG_METHOD_TEST
(branch | conditional | OPT_InstructionFormat.InlineGuard_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)30, OPT_InstructionFormat.TableSwitch_format, //TABLESWITCH
(branch | OPT_InstructionFormat.TableSwitch_traits),
0, 0, 7,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)31, OPT_InstructionFormat.LookupSwitch_format, //LOOKUPSWITCH
(branch | OPT_InstructionFormat.LookupSwitch_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)32, OPT_InstructionFormat.ALoad_format, //INT_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)33, OPT_InstructionFormat.ALoad_format, //LONG_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)34, OPT_InstructionFormat.ALoad_format, //FLOAT_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)35, OPT_InstructionFormat.ALoad_format, //DOUBLE_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)36, OPT_InstructionFormat.ALoad_format, //REF_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)37, OPT_InstructionFormat.ALoad_format, //UBYTE_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)38, OPT_InstructionFormat.ALoad_format, //BYTE_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)39, OPT_InstructionFormat.ALoad_format, //USHORT_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)40, OPT_InstructionFormat.ALoad_format, //SHORT_ALOAD
(load | OPT_InstructionFormat.ALoad_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)41, OPT_InstructionFormat.AStore_format, //INT_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)42, OPT_InstructionFormat.AStore_format, //LONG_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)43, OPT_InstructionFormat.AStore_format, //FLOAT_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)44, OPT_InstructionFormat.AStore_format, //DOUBLE_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)45, OPT_InstructionFormat.AStore_format, //REF_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)46, OPT_InstructionFormat.AStore_format, //BYTE_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)47, OPT_InstructionFormat.AStore_format, //SHORT_ASTORE
(store | OPT_InstructionFormat.AStore_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)48, OPT_InstructionFormat.IfCmp_format, //INT_IFCMP
(branch | conditional | OPT_InstructionFormat.IfCmp_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)49, OPT_InstructionFormat.IfCmp2_format, //INT_IFCMP2
(branch | conditional | OPT_InstructionFormat.IfCmp2_traits),
1, 0, 8,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)50, OPT_InstructionFormat.IfCmp_format, //LONG_IFCMP
(branch | conditional | OPT_InstructionFormat.IfCmp_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)51, OPT_InstructionFormat.IfCmp_format, //FLOAT_IFCMP
(branch | conditional | OPT_InstructionFormat.IfCmp_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)52, OPT_InstructionFormat.IfCmp_format, //DOUBLE_IFCMP
(branch | conditional | OPT_InstructionFormat.IfCmp_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)53, OPT_InstructionFormat.IfCmp_format, //REF_IFCMP
(branch | conditional | OPT_InstructionFormat.IfCmp_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)54, OPT_InstructionFormat.Label_format, //LABEL
(none | OPT_InstructionFormat.Label_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)55, OPT_InstructionFormat.BBend_format, //BBEND
(none | OPT_InstructionFormat.BBend_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)56, OPT_InstructionFormat.Empty_format, //UNINT_BEGIN
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)57, OPT_InstructionFormat.Empty_format, //UNINT_END
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)58, OPT_InstructionFormat.Empty_format, //READ_CEILING
(memAsLoad | memAsStore | acquire | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)59, OPT_InstructionFormat.Empty_format, //WRITE_FLOOR
(memAsLoad | memAsStore | release | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)60, OPT_InstructionFormat.Phi_format, //PHI
(none | OPT_InstructionFormat.Phi_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)61, OPT_InstructionFormat.Unary_format, //SPLIT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)62, OPT_InstructionFormat.GuardedUnary_format, //PI
(none | OPT_InstructionFormat.GuardedUnary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)63, OPT_InstructionFormat.Empty_format, //NOP
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)64, OPT_InstructionFormat.Move_format, //INT_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)65, OPT_InstructionFormat.Move_format, //LONG_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)66, OPT_InstructionFormat.Move_format, //FLOAT_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)67, OPT_InstructionFormat.Move_format, //DOUBLE_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)68, OPT_InstructionFormat.Move_format, //REF_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)69, OPT_InstructionFormat.Move_format, //GUARD_MOVE
(move | OPT_InstructionFormat.Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)70, OPT_InstructionFormat.CondMove_format, //INT_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)71, OPT_InstructionFormat.CondMove_format, //LONG_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)72, OPT_InstructionFormat.CondMove_format, //FLOAT_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)73, OPT_InstructionFormat.CondMove_format, //DOUBLE_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)74, OPT_InstructionFormat.CondMove_format, //REF_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)75, OPT_InstructionFormat.CondMove_format, //GUARD_COND_MOVE
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)76, OPT_InstructionFormat.Binary_format, //GUARD_COMBINE
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)77, OPT_InstructionFormat.Binary_format, //REF_ADD
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)78, OPT_InstructionFormat.Binary_format, //INT_ADD
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)79, OPT_InstructionFormat.Binary_format, //LONG_ADD
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)80, OPT_InstructionFormat.Binary_format, //FLOAT_ADD
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)81, OPT_InstructionFormat.Binary_format, //DOUBLE_ADD
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)82, OPT_InstructionFormat.Binary_format, //REF_SUB
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)83, OPT_InstructionFormat.Binary_format, //INT_SUB
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)84, OPT_InstructionFormat.Binary_format, //LONG_SUB
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)85, OPT_InstructionFormat.Binary_format, //FLOAT_SUB
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)86, OPT_InstructionFormat.Binary_format, //DOUBLE_SUB
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)87, OPT_InstructionFormat.Binary_format, //INT_MUL
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)88, OPT_InstructionFormat.Binary_format, //LONG_MUL
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)89, OPT_InstructionFormat.Binary_format, //FLOAT_MUL
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)90, OPT_InstructionFormat.Binary_format, //DOUBLE_MUL
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)91, OPT_InstructionFormat.GuardedBinary_format, //INT_DIV
(none | OPT_InstructionFormat.GuardedBinary_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)92, OPT_InstructionFormat.GuardedBinary_format, //LONG_DIV
(none | OPT_InstructionFormat.GuardedBinary_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)93, OPT_InstructionFormat.Binary_format, //FLOAT_DIV
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)94, OPT_InstructionFormat.Binary_format, //DOUBLE_DIV
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)95, OPT_InstructionFormat.GuardedBinary_format, //INT_REM
(none | OPT_InstructionFormat.GuardedBinary_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)96, OPT_InstructionFormat.GuardedBinary_format, //LONG_REM
(none | OPT_InstructionFormat.GuardedBinary_traits),
1, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)97, OPT_InstructionFormat.Binary_format, //FLOAT_REM
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.maskIEEEMagicUses,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)98, OPT_InstructionFormat.Binary_format, //DOUBLE_REM
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.maskIEEEMagicUses,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)99, OPT_InstructionFormat.Unary_format, //REF_NEG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)100, OPT_InstructionFormat.Unary_format, //INT_NEG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)101, OPT_InstructionFormat.Unary_format, //LONG_NEG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)102, OPT_InstructionFormat.Unary_format, //FLOAT_NEG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)103, OPT_InstructionFormat.Unary_format, //DOUBLE_NEG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)104, OPT_InstructionFormat.Binary_format, //REF_SHL
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)105, OPT_InstructionFormat.Binary_format, //INT_SHL
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)106, OPT_InstructionFormat.Binary_format, //LONG_SHL
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)107, OPT_InstructionFormat.Binary_format, //REF_SHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)108, OPT_InstructionFormat.Binary_format, //INT_SHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)109, OPT_InstructionFormat.Binary_format, //LONG_SHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)110, OPT_InstructionFormat.Binary_format, //REF_USHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)111, OPT_InstructionFormat.Binary_format, //INT_USHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)112, OPT_InstructionFormat.Binary_format, //LONG_USHR
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)113, OPT_InstructionFormat.Binary_format, //REF_AND
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)114, OPT_InstructionFormat.Binary_format, //INT_AND
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)115, OPT_InstructionFormat.Binary_format, //LONG_AND
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)116, OPT_InstructionFormat.Binary_format, //REF_OR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)117, OPT_InstructionFormat.Binary_format, //INT_OR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)118, OPT_InstructionFormat.Binary_format, //LONG_OR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)119, OPT_InstructionFormat.Binary_format, //REF_XOR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)120, OPT_InstructionFormat.Binary_format, //INT_XOR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)121, OPT_InstructionFormat.Unary_format, //REF_NOT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)122, OPT_InstructionFormat.Unary_format, //INT_NOT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)123, OPT_InstructionFormat.Unary_format, //LONG_NOT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)124, OPT_InstructionFormat.Binary_format, //LONG_XOR
(commutative | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)125, OPT_InstructionFormat.Unary_format, //INT_2ADDRSigExt
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)126, OPT_InstructionFormat.Unary_format, //INT_2ADDRZerExt
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)127, OPT_InstructionFormat.Unary_format, //LONG_2ADDR
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)128, OPT_InstructionFormat.Unary_format, //ADDR_2INT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)129, OPT_InstructionFormat.Unary_format, //ADDR_2LONG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)130, OPT_InstructionFormat.Unary_format, //INT_2LONG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)131, OPT_InstructionFormat.Unary_format, //INT_2FLOAT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskIEEEMagicUses,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)132, OPT_InstructionFormat.Unary_format, //INT_2DOUBLE
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskIEEEMagicUses,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)133, OPT_InstructionFormat.Unary_format, //LONG_2INT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)134, OPT_InstructionFormat.Unary_format, //LONG_2FLOAT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)135, OPT_InstructionFormat.Unary_format, //LONG_2DOUBLE
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)136, OPT_InstructionFormat.Unary_format, //FLOAT_2INT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)137, OPT_InstructionFormat.Unary_format, //FLOAT_2LONG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)138, OPT_InstructionFormat.Unary_format, //FLOAT_2DOUBLE
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)139, OPT_InstructionFormat.Unary_format, //DOUBLE_2INT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)140, OPT_InstructionFormat.Unary_format, //DOUBLE_2LONG
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)141, OPT_InstructionFormat.Unary_format, //DOUBLE_2FLOAT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)142, OPT_InstructionFormat.Unary_format, //INT_2BYTE
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)143, OPT_InstructionFormat.Unary_format, //INT_2USHORT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)144, OPT_InstructionFormat.Unary_format, //INT_2SHORT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)145, OPT_InstructionFormat.Binary_format, //LONG_CMP
(compare | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)146, OPT_InstructionFormat.Binary_format, //FLOAT_CMPL
(compare | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)147, OPT_InstructionFormat.Binary_format, //FLOAT_CMPG
(compare | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)148, OPT_InstructionFormat.Binary_format, //DOUBLE_CMPL
(compare | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)149, OPT_InstructionFormat.Binary_format, //DOUBLE_CMPG
(compare | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)150, OPT_InstructionFormat.Return_format, //RETURN
(ret | OPT_InstructionFormat.Return_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)151, OPT_InstructionFormat.NullCheck_format, //NULL_CHECK
(immedPEI | OPT_InstructionFormat.NullCheck_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)152, OPT_InstructionFormat.Goto_format, //GOTO
(branch | OPT_InstructionFormat.Goto_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)153, OPT_InstructionFormat.Unary_format, //BOOLEAN_NOT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)154, OPT_InstructionFormat.BooleanCmp_format, //BOOLEAN_CMP_INT
(compare | OPT_InstructionFormat.BooleanCmp_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)155, OPT_InstructionFormat.BooleanCmp_format, //BOOLEAN_CMP_ADDR
(compare | OPT_InstructionFormat.BooleanCmp_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)156, OPT_InstructionFormat.BooleanCmp_format, //BOOLEAN_CMP_LONG
(compare | OPT_InstructionFormat.BooleanCmp_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)157, OPT_InstructionFormat.BooleanCmp_format, //BOOLEAN_CMP_FLOAT
(compare | OPT_InstructionFormat.BooleanCmp_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)158, OPT_InstructionFormat.BooleanCmp_format, //BOOLEAN_CMP_DOUBLE
(compare | OPT_InstructionFormat.BooleanCmp_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)159, OPT_InstructionFormat.Load_format, //BYTE_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)160, OPT_InstructionFormat.Load_format, //UBYTE_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)161, OPT_InstructionFormat.Load_format, //SHORT_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)162, OPT_InstructionFormat.Load_format, //USHORT_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)163, OPT_InstructionFormat.Load_format, //REF_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)164, OPT_InstructionFormat.Store_format, //REF_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)165, OPT_InstructionFormat.Load_format, //INT_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)166, OPT_InstructionFormat.Load_format, //LONG_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)167, OPT_InstructionFormat.Load_format, //FLOAT_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)168, OPT_InstructionFormat.Load_format, //DOUBLE_LOAD
(load | OPT_InstructionFormat.Load_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)169, OPT_InstructionFormat.Store_format, //BYTE_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)170, OPT_InstructionFormat.Store_format, //SHORT_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)171, OPT_InstructionFormat.Store_format, //INT_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)172, OPT_InstructionFormat.Store_format, //LONG_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)173, OPT_InstructionFormat.Store_format, //FLOAT_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)174, OPT_InstructionFormat.Store_format, //DOUBLE_STORE
(store | OPT_InstructionFormat.Store_traits),
0, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)175, OPT_InstructionFormat.Prepare_format, //PREPARE_INT
(load | acquire | OPT_InstructionFormat.Prepare_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)176, OPT_InstructionFormat.Prepare_format, //PREPARE_ADDR
(load | acquire | OPT_InstructionFormat.Prepare_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)177, OPT_InstructionFormat.Prepare_format, //PREPARE_LONG
(load | acquire | OPT_InstructionFormat.Prepare_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)178, OPT_InstructionFormat.Attempt_format, //ATTEMPT_INT
(load | store | compare | release | OPT_InstructionFormat.Attempt_traits),
1, 0, 6,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)179, OPT_InstructionFormat.Attempt_format, //ATTEMPT_ADDR
(load | store | compare | release | OPT_InstructionFormat.Attempt_traits),
1, 0, 6,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)180, OPT_InstructionFormat.Attempt_format, //ATTEMPT_LONG
(load | store | compare | release | OPT_InstructionFormat.Attempt_traits),
1, 0, 6,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)181, OPT_InstructionFormat.Call_format, //CALL
(call | memAsLoad | memAsStore | dynLink | immedPEI | OPT_InstructionFormat.Call_traits),
1, 0, 3,
OPT_PhysicalDefUse.maskcallDefs,
OPT_PhysicalDefUse.maskcallUses),
new OPT_Operator((char)182, OPT_InstructionFormat.Call_format, //SYSCALL
(call | memAsLoad | memAsStore | OPT_InstructionFormat.Call_traits),
1, 0, 3,
OPT_PhysicalDefUse.maskcallDefs,
OPT_PhysicalDefUse.maskcallUses),
new OPT_Operator((char)183, OPT_InstructionFormat.Empty_format, //YIELDPOINT_PROLOGUE
(tsp | yieldPoint | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)184, OPT_InstructionFormat.Empty_format, //YIELDPOINT_EPILOGUE
(tsp | yieldPoint | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)185, OPT_InstructionFormat.Empty_format, //YIELDPOINT_BACKEDGE
(tsp | yieldPoint | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)186, OPT_InstructionFormat.OsrPoint_format, //YIELDPOINT_OSR
(tsp | yieldPoint | OPT_InstructionFormat.OsrPoint_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)187, OPT_InstructionFormat.OsrBarrier_format, //OSR_BARRIER
(none | OPT_InstructionFormat.OsrBarrier_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)188, OPT_InstructionFormat.Prologue_format, //IR_PROLOGUE
(immedPEI | OPT_InstructionFormat.Prologue_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)189, OPT_InstructionFormat.CacheOp_format, //RESOLVE
(tsp | dynLink | immedPEI | OPT_InstructionFormat.CacheOp_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)190, OPT_InstructionFormat.Unary_format, //RESOLVE_MEMBER
(tsp | dynLink | immedPEI | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)191, OPT_InstructionFormat.Nullary_format, //GET_TIME_BASE
(none | OPT_InstructionFormat.Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)192, OPT_InstructionFormat.InstrumentedCounter_format, //INSTRUMENTED_EVENT_COUNTER
(none | OPT_InstructionFormat.InstrumentedCounter_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)193, OPT_InstructionFormat.TrapIf_format, //TRAP_IF
(immedPEI | OPT_InstructionFormat.TrapIf_traits),
1, 0, 4,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)194, OPT_InstructionFormat.Trap_format, //TRAP
(immedPEI | OPT_InstructionFormat.Trap_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)195, OPT_InstructionFormat.Unary_format, //FLOAT_AS_INT_BITS
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)196, OPT_InstructionFormat.Unary_format, //INT_BITS_AS_FLOAT
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)197, OPT_InstructionFormat.Unary_format, //DOUBLE_AS_LONG_BITS
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)198, OPT_InstructionFormat.Unary_format, //LONG_BITS_AS_DOUBLE
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)199, OPT_InstructionFormat.GuardedUnary_format, //ARRAYLENGTH
(none | OPT_InstructionFormat.GuardedUnary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)200, OPT_InstructionFormat.GuardedUnary_format, //GET_OBJ_TIB
(none | OPT_InstructionFormat.GuardedUnary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)201, OPT_InstructionFormat.Unary_format, //GET_CLASS_TIB
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)202, OPT_InstructionFormat.Unary_format, //GET_TYPE_FROM_TIB
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)203, OPT_InstructionFormat.Unary_format, //GET_SUPERCLASS_IDS_FROM_TIB
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)204, OPT_InstructionFormat.Unary_format, //GET_DOES_IMPLEMENT_FROM_TIB
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)205, OPT_InstructionFormat.Unary_format, //GET_ARRAY_ELEMENT_TIB_FROM_TIB
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)206, OPT_InstructionFormat.LowTableSwitch_format, //LOWTABLESWITCH
(branch | OPT_InstructionFormat.LowTableSwitch_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
//////////////////////////
// END Architecture Independent opcodes.
// BEGIN Architecture Dependent opcodes & MIR.
//////////////////////////
new OPT_Operator((char)(0 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //ADDRESS_CONSTANT
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(1 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //INT_CONSTANT
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(2 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //LONG_CONSTANT
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(3 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //REGISTER
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(4 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //OTHER_OPERAND
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(5 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //NULL
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(6 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //BRANCH_TARGET
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(7 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //MATERIALIZE_FP_CONSTANT
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(8 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //GET_JTOC
OPT_InstructionFormat.Unary_format,
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(9 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //GET_CURRENT_PROCESSOR
OPT_InstructionFormat.Nullary_format,
(none | OPT_InstructionFormat.Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(10 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //ROUND_TO_ZERO
OPT_InstructionFormat.Empty_format,
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(11 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //CLEAR_FLOATING_POINT_STATE
OPT_InstructionFormat.Empty_format,
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(12 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //PREFETCH
OPT_InstructionFormat.CacheOp_format,
(none | OPT_InstructionFormat.CacheOp_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(13 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //PAUSE
OPT_InstructionFormat.Empty_format,
(none | OPT_InstructionFormat.Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(14 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_ADD
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(15 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_SUB
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(16 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_MUL
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(17 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_DIV
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(18 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_NEG
OPT_InstructionFormat.Unary_format,
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(19 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FP_REM
OPT_InstructionFormat.Binary_format,
(none | OPT_InstructionFormat.Binary_traits),
1, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(20 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //INT_2FP
OPT_InstructionFormat.Unary_format,
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(21 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //LONG_2FP
OPT_InstructionFormat.Unary_format,
(none | OPT_InstructionFormat.Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(22 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //CMP_CMOV
OPT_InstructionFormat.CondMove_format,
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(23 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FCMP_CMOV
OPT_InstructionFormat.CondMove_format,
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(24 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //LCMP_CMOV
OPT_InstructionFormat.CondMove_format,
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(25 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //CMP_FCMOV
OPT_InstructionFormat.CondMove_format,
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(26 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //FCMP_FCMOV
OPT_InstructionFormat.CondMove_format,
(compare | OPT_InstructionFormat.CondMove_traits),
1, 0, 5,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(27 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //CALL_SAVE_VOLATILE
OPT_InstructionFormat.MIR_Call_format,
(call | immedPEI | OPT_InstructionFormat.MIR_Call_traits),
2, 0, 2,
OPT_PhysicalDefUse.maskcallDefs,
OPT_PhysicalDefUse.maskcallUses),
new OPT_Operator((char)(28 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //MIR_START
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(29 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //REQUIRE_ESP
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(30 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //ADVISE_ESP
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(31 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //MIR_LOWTABLESWITCH
OPT_InstructionFormat.MIR_LowTableSwitch_format,
(branch | OPT_InstructionFormat.MIR_LowTableSwitch_traits),
0, 1, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(32 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FCLEAR
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(33 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //DUMMY_DEF
OPT_InstructionFormat.MIR_Nullary_format,
(none | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(34 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //DUMMY_USE
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(35 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FMOV_ENDING_LIVE_RANGE
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(36 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FMOV
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(37 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_TRAPIF
OPT_InstructionFormat.MIR_TrapIf_format,
(immedPEI | OPT_InstructionFormat.MIR_TrapIf_traits),
1, 0, 4,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(38 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_OFFSET
OPT_InstructionFormat.MIR_CaseLabel_format,
(none | OPT_InstructionFormat.MIR_CaseLabel_traits),
0, 0, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(39 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_LOCK_CMPXCHG
OPT_InstructionFormat.MIR_CompareExchange_format,
(compare | OPT_InstructionFormat.MIR_CompareExchange_traits),
0, 2, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(40 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_LOCK_CMPXCHG8B
OPT_InstructionFormat.MIR_CompareExchange8B_format,
(compare | OPT_InstructionFormat.MIR_CompareExchange8B_traits),
0, 3, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(41 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ADC
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.maskCF),
new OPT_Operator((char)(42 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ADD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(43 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_AND
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(44 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_BSWAP
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(45 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_BT
OPT_InstructionFormat.MIR_Test_format,
(none | OPT_InstructionFormat.MIR_Test_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(46 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_BTC
OPT_InstructionFormat.MIR_Test_format,
(none | OPT_InstructionFormat.MIR_Test_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(47 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_BTR
OPT_InstructionFormat.MIR_Test_format,
(none | OPT_InstructionFormat.MIR_Test_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(48 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_BTS
OPT_InstructionFormat.MIR_Test_format,
(none | OPT_InstructionFormat.MIR_Test_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(49 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SYSCALL
OPT_InstructionFormat.MIR_Call_format,
(call | OPT_InstructionFormat.MIR_Call_traits),
2, 0, 2,
OPT_PhysicalDefUse.maskcallDefs,
OPT_PhysicalDefUse.maskcallUses),
new OPT_Operator((char)(50 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CALL
OPT_InstructionFormat.MIR_Call_format,
(call | immedPEI | OPT_InstructionFormat.MIR_Call_traits),
2, 0, 2,
OPT_PhysicalDefUse.maskcallDefs,
OPT_PhysicalDefUse.maskcallUses),
new OPT_Operator((char)(51 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CDQ
OPT_InstructionFormat.MIR_ConvertDW2QW_format,
(none | OPT_InstructionFormat.MIR_ConvertDW2QW_traits),
1, 1, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(52 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMOV
OPT_InstructionFormat.MIR_CondMove_format,
(none | OPT_InstructionFormat.MIR_CondMove_traits),
0, 1, 2,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.maskCF_OF_PF_SF_ZF),
new OPT_Operator((char)(53 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMP
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(54 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPXCHG
OPT_InstructionFormat.MIR_CompareExchange_format,
(compare | OPT_InstructionFormat.MIR_CompareExchange_traits),
0, 2, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(55 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPXCHG8B
OPT_InstructionFormat.MIR_CompareExchange8B_format,
(compare | OPT_InstructionFormat.MIR_CompareExchange8B_traits),
0, 3, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(56 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_DEC
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.maskAF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(57 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_DIV
OPT_InstructionFormat.MIR_Divide_format,
(none | OPT_InstructionFormat.MIR_Divide_traits),
0, 2, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(58 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FADD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(59 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FADDP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(60 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FCHS
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(61 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FCMOV
OPT_InstructionFormat.MIR_CondMove_format,
(none | OPT_InstructionFormat.MIR_CondMove_traits),
0, 1, 2,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.maskCF_PF_ZF),
new OPT_Operator((char)(62 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FCOMI
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(63 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FCOMIP
OPT_InstructionFormat.MIR_Compare_format,
(compare | fpPop | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(64 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FDIV
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(65 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FDIVP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(66 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FDIVR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(67 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FDIVRP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(68 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FEXAM
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(69 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FXCH
OPT_InstructionFormat.MIR_XChng_format,
(none | OPT_InstructionFormat.MIR_XChng_traits),
0, 2, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(70 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FFREE
OPT_InstructionFormat.MIR_Nullary_format,
(none | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(71 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FIADD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(72 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FIDIV
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(73 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FIDIVR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(74 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FILD
OPT_InstructionFormat.MIR_Move_format,
(fpPush | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(75 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FIMUL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(76 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FINIT
OPT_InstructionFormat.MIR_Empty_format,
(none | OPT_InstructionFormat.MIR_Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(77 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FIST
OPT_InstructionFormat.MIR_Move_format,
(none | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(78 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FISTP
OPT_InstructionFormat.MIR_Move_format,
(fpPop | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(79 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FISUB
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(80 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FISUBR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(81 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLD
OPT_InstructionFormat.MIR_Move_format,
(fpPush | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(82 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDCW
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(83 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLD1
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(84 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDL2T
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(85 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDL2E
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(86 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDPI
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(87 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDLG2
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(88 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDLN2
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(89 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FLDZ
OPT_InstructionFormat.MIR_Nullary_format,
(fpPush | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(90 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FMUL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(91 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FMULP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(92 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FNSTCW
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(93 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FNINIT
OPT_InstructionFormat.MIR_Empty_format,
(none | OPT_InstructionFormat.MIR_Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(94 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FNSAVE
OPT_InstructionFormat.MIR_FSave_format,
(none | OPT_InstructionFormat.MIR_FSave_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(95 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FPREM
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(96 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FRSTOR
OPT_InstructionFormat.MIR_FSave_format,
(none | OPT_InstructionFormat.MIR_FSave_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(97 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FST
OPT_InstructionFormat.MIR_Move_format,
(none | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(98 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSTCW
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(99 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSTP
OPT_InstructionFormat.MIR_Move_format,
(fpPop | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(100 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSUB
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(101 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSUBP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(102 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSUBR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(103 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FSUBRP
OPT_InstructionFormat.MIR_BinaryAcc_format,
(fpPop | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskC0_C1_C2_C3,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(104 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FUCOMI
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(105 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_FUCOMIP
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(106 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_IDIV
OPT_InstructionFormat.MIR_Divide_format,
(none | OPT_InstructionFormat.MIR_Divide_traits),
0, 2, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(107 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_IMUL1
OPT_InstructionFormat.MIR_Multiply_format,
(none | OPT_InstructionFormat.MIR_Multiply_traits),
1, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(108 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_IMUL2
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(109 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_INC
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.maskAF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(110 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_INT
OPT_InstructionFormat.MIR_Trap_format,
(immedPEI | OPT_InstructionFormat.MIR_Trap_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(111 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_JCC
OPT_InstructionFormat.MIR_CondBranch_format,
(branch | conditional | OPT_InstructionFormat.MIR_CondBranch_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF),
new OPT_Operator((char)(112 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_JCC2
OPT_InstructionFormat.MIR_CondBranch2_format,
(branch | conditional | OPT_InstructionFormat.MIR_CondBranch2_traits),
0, 0, 6,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF),
new OPT_Operator((char)(113 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_JMP
OPT_InstructionFormat.MIR_Branch_format,
(branch | OPT_InstructionFormat.MIR_Branch_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(114 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_LEA
OPT_InstructionFormat.MIR_Lea_format,
(none | OPT_InstructionFormat.MIR_Lea_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(115 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_LOCK
OPT_InstructionFormat.MIR_Empty_format,
(none | OPT_InstructionFormat.MIR_Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(116 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOV
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(117 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVZX__B
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(118 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVSX__B
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(119 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVZX__W
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(120 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVSX__W
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(121 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MUL
OPT_InstructionFormat.MIR_Multiply_format,
(none | OPT_InstructionFormat.MIR_Multiply_traits),
1, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(122 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_NEG
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(123 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_NOT
OPT_InstructionFormat.MIR_UnaryAcc_format,
(none | OPT_InstructionFormat.MIR_UnaryAcc_traits),
0, 1, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(124 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_OR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(125 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_PAUSE
OPT_InstructionFormat.MIR_Empty_format,
(none | OPT_InstructionFormat.MIR_Empty_traits),
0, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(126 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_PREFETCHNTA
OPT_InstructionFormat.MIR_CacheOp_format,
(none | OPT_InstructionFormat.MIR_CacheOp_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(127 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_POP
OPT_InstructionFormat.MIR_Nullary_format,
(none | OPT_InstructionFormat.MIR_Nullary_traits),
1, 0, 0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(128 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_PUSH
OPT_InstructionFormat.MIR_UnaryNoRes_format,
(none | OPT_InstructionFormat.MIR_UnaryNoRes_traits),
0, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(129 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_RCL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskCF_OF,
OPT_PhysicalDefUse.maskCF),
new OPT_Operator((char)(130 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_RCR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskCF_OF,
OPT_PhysicalDefUse.maskCF),
new OPT_Operator((char)(131 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ROL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskCF_OF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(132 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ROR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskCF_OF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(133 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_RET
OPT_InstructionFormat.MIR_Return_format,
(ret | OPT_InstructionFormat.MIR_Return_traits),
0, 0, 3,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(134 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SAL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(135 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SAR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(136 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SHL
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(137 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SHR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(138 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SBB
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.maskCF),
new OPT_Operator((char)(139 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SET__B
OPT_InstructionFormat.MIR_Set_format,
(none | OPT_InstructionFormat.MIR_Set_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF),
new OPT_Operator((char)(140 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SHLD
OPT_InstructionFormat.MIR_DoubleShift_format,
(none | OPT_InstructionFormat.MIR_DoubleShift_traits),
0, 1, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(141 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SHRD
OPT_InstructionFormat.MIR_DoubleShift_format,
(none | OPT_InstructionFormat.MIR_DoubleShift_traits),
0, 1, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(142 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SUB
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(143 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_TEST
OPT_InstructionFormat.MIR_Test_format,
(none | OPT_InstructionFormat.MIR_Test_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(144 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_XOR
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.maskAF_CF_OF_PF_SF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(145 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_RDTSC
OPT_InstructionFormat.MIR_RDTSC_format,
(none | OPT_InstructionFormat.MIR_RDTSC_traits),
2, 0, 0,
OPT_PhysicalDefUse.maskCF_OF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(146 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ADDSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(147 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SUBSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(148 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MULSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(149 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_DIVSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(150 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_ADDSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(151 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_SUBSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(152 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MULSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(153 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_DIVSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(154 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_XORPS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(155 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_XORPD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(156 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_UCOMISS
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(157 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_UCOMISD
OPT_InstructionFormat.MIR_Compare_format,
(compare | OPT_InstructionFormat.MIR_Compare_traits),
0, 0, 2,
OPT_PhysicalDefUse.maskCF_PF_ZF,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(158 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPEQSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(159 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPLTSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(160 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPLESS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(161 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPUNORDSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(162 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNESS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(163 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNLTSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(164 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNLESS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(165 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPORDSS
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(166 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPEQSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(167 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPLTSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(168 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPLESD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(169 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPUNORDSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(170 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNESD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(171 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNLTSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(172 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPNLESD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(173 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CMPORDSD
OPT_InstructionFormat.MIR_BinaryAcc_format,
(none | OPT_InstructionFormat.MIR_BinaryAcc_traits),
0, 1, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(174 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVSS
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(175 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVSD
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(176 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVD
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(177 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_MOVQ
OPT_InstructionFormat.MIR_Move_format,
(move | OPT_InstructionFormat.MIR_Move_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(178 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSI2SS
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(179 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSS2SD
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(180 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSS2SI
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(181 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTTSS2SI
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(182 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSI2SD
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(183 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSD2SS
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(184 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTSD2SI
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(185 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //IA32_CVTTSD2SI
OPT_InstructionFormat.MIR_Unary_format,
(move | OPT_InstructionFormat.MIR_Unary_traits),
1, 0, 1,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
new OPT_Operator((char)(186 + OPT_Operators.ARCH_INDEPENDENT_END_opcode), //MIR_END
OPT_InstructionFormat.Unassigned_format,
(none),
0,0,0,
OPT_PhysicalDefUse.mask,
OPT_PhysicalDefUse.mask),
null };
// For HIR/LIR
private OPT_Operator(char opcode, byte format, int traits,
int numDefs, int numDefUses, int numUses,
int iDefs, int iUses) {
this.opcode = opcode;
this.format = format;
this.traits = traits;
this.numberDefs = numDefs;
this.numberDefUses= numDefUses;
this.numberUses = numUses;
this.implicitDefs = iDefs;
this.implicitUses = iUses;
}
}