public BranchCompareNumbersInstruction(CodeLocationTag codeLocation, NumberCompareOperation operation, NumberArithType numberType, HighSsaRegister left, HighSsaRegister right, HighCfgNodeHandle trueNode, HighCfgNodeHandle falseNode)
     : base(codeLocation)
 {
     m_operation = operation;
     m_trueNode = new HighCfgEdge(this, trueNode);
     m_falseNode = new HighCfgEdge(this, falseNode);
     m_left = left;
     m_right = right;
     m_numberType = numberType;
 }
 public CompareNumbersInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, NumberCompareOperation operation, NumberArithType numberType, HighSsaRegister left, HighSsaRegister right, int trueValue, int falseValue)
     : base(codeLocation)
 {
     m_dest = dest;
     m_operation = operation;
     m_trueValue = trueValue;
     m_falseValue = falseValue;
     m_left = left;
     m_right = right;
     m_numberType = numberType;
 }
 public override void ReadHeader(TagRepository rpa, CatalogReader catalog, HighMethodBodyParseContext methodBody, HighCfgNodeHandle[] cfgNodes, List<HighSsaRegister> ssaRegisters, CodeLocationTag baseLocation, bool haveDebugInfo, BinaryReader reader)
 {
     m_operation = (NumberCompareOperation)reader.ReadByte();
     if (m_operation < 0 || m_operation >= NumberCompareOperation.NumHighCompareTypes)
         throw new Exception("Invalid compare operation");
     m_numberType = (NumberArithType)reader.ReadByte();
     if (m_numberType < 0 || m_numberType >= NumberArithType.NumHighArithTypes)
         throw new Exception("Invalid arithmetic type");
     m_trueValue = reader.ReadInt32();
     m_falseValue = reader.ReadInt32();
 }