001 002/* 003 * This file is part of the Jikes RVM project (http://jikesrvm.org). 004 * 005 * This file is licensed to You under the Eclipse Public License (EPL); 006 * You may not use this file except in compliance with the License. You 007 * may obtain a copy of the License at 008 * 009 * http://www.opensource.org/licenses/eclipse-1.0.php 010 * 011 * See the COPYRIGHT.txt file distributed with this work for information 012 * regarding copyright ownership. 013 */ 014package org.jikesrvm.compilers.opt.ir.ppc; 015 016import org.jikesrvm.VM; 017import org.jikesrvm.compilers.opt.OptimizingCompilerException; 018import org.jikesrvm.compilers.opt.ir.operand.*; 019import org.jikesrvm.compilers.opt.ir.InstructionFormat; 020import org.jikesrvm.compilers.opt.ir.Operator; 021 022/** 023 * Abstract parent class of all InstructionFormat classes.<p> 024 * 025 * The header comment for {@link org.jikesrvm.compilers.opt.ir.Instruction} contains 026 * an explanation of the role of InstructionFormats in the 027 * opt compiler's IR.<p> 028 * 029 * NOTE: We currently only support a subset of cases of variable operands. 030 * <ul> 031 * <li>instructions with 0+ defs, 0+ def/uses, 0+ uses, and a variable number of uses 032 * <li>instructions with 0+ defs and variable number of defs. 033 * Variable number of def/uses and variable number of defs with non-zero 034 * number of def/uses or uses are not supported (and will generate java code 035 * for the instruction format that doesn't compile). Fully general support would 036 * be a pain in the butt and since it currently isn't required, we don't do it. 037 * </ul> 038 * <p> 039 * 040 * THIS FILE IS MACHINE_GENERATED. DO NOT EDIT. 041 * See ArchInstructionFormats.template, InstructionFormatList.dat, 042 * OperatorList.dat, etc 043 */ 044public abstract class ArchInstructionFormat extends InstructionFormat { 045 046 static { 047 if (MIN_OPERAND_ARRAY_LENGTH != 5) { 048 throw new Error("Disagreement between architecture and common instruction formats on minimum operands"); 049 } 050 } 051 052 /** Typecode for the MIR_Load InstructionFormat */ 053 public static final byte MIR_Load_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+0; 054 /** Typecode for the MIR_LoadUpdate InstructionFormat */ 055 public static final byte MIR_LoadUpdate_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+1; 056 /** Typecode for the MIR_Store InstructionFormat */ 057 public static final byte MIR_Store_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+2; 058 /** Typecode for the MIR_StoreUpdate InstructionFormat */ 059 public static final byte MIR_StoreUpdate_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+3; 060 /** Typecode for the MIR_CacheOp InstructionFormat */ 061 public static final byte MIR_CacheOp_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+4; 062 /** Typecode for the MIR_Move InstructionFormat */ 063 public static final byte MIR_Move_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+5; 064 /** Typecode for the MIR_Trap InstructionFormat */ 065 public static final byte MIR_Trap_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+6; 066 /** Typecode for the MIR_DataInt InstructionFormat */ 067 public static final byte MIR_DataInt_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+7; 068 /** Typecode for the MIR_DataLabel InstructionFormat */ 069 public static final byte MIR_DataLabel_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+8; 070 /** Typecode for the MIR_Branch InstructionFormat */ 071 public static final byte MIR_Branch_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+9; 072 /** Typecode for the MIR_CondBranch InstructionFormat */ 073 public static final byte MIR_CondBranch_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+10; 074 /** Typecode for the MIR_CondBranch2 InstructionFormat */ 075 public static final byte MIR_CondBranch2_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+11; 076 /** Typecode for the MIR_Call InstructionFormat */ 077 public static final byte MIR_Call_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+12; 078 /** Typecode for the MIR_CondCall InstructionFormat */ 079 public static final byte MIR_CondCall_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+13; 080 /** Typecode for the MIR_Return InstructionFormat */ 081 public static final byte MIR_Return_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+14; 082 /** Typecode for the MIR_Empty InstructionFormat */ 083 public static final byte MIR_Empty_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+15; 084 /** Typecode for the MIR_Nullary InstructionFormat */ 085 public static final byte MIR_Nullary_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+16; 086 /** Typecode for the MIR_Unary InstructionFormat */ 087 public static final byte MIR_Unary_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+17; 088 /** Typecode for the MIR_Binary InstructionFormat */ 089 public static final byte MIR_Binary_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+18; 090 /** Typecode for the MIR_Condition InstructionFormat */ 091 public static final byte MIR_Condition_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+19; 092 /** Typecode for the MIR_Ternary InstructionFormat */ 093 public static final byte MIR_Ternary_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+20; 094 /** Typecode for the MIR_LowTableSwitch InstructionFormat */ 095 public static final byte MIR_LowTableSwitch_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+21; 096 /** Typecode for the MIR_RotateAndMask InstructionFormat */ 097 public static final byte MIR_RotateAndMask_format = ARCH_INDEPENDENT_INSTR_FORMAT_END_format+22; 098 099 /** Shared traits for operators of the MIR_Load InstructionFormat */ 100 public static final int MIR_Load_traits = Operator.none; 101 /** Shared traits for operators of the MIR_LoadUpdate InstructionFormat */ 102 public static final int MIR_LoadUpdate_traits = Operator.none; 103 /** Shared traits for operators of the MIR_Store InstructionFormat */ 104 public static final int MIR_Store_traits = Operator.none; 105 /** Shared traits for operators of the MIR_StoreUpdate InstructionFormat */ 106 public static final int MIR_StoreUpdate_traits = Operator.none; 107 /** Shared traits for operators of the MIR_CacheOp InstructionFormat */ 108 public static final int MIR_CacheOp_traits = Operator.none; 109 /** Shared traits for operators of the MIR_Move InstructionFormat */ 110 public static final int MIR_Move_traits = Operator.none; 111 /** Shared traits for operators of the MIR_Trap InstructionFormat */ 112 public static final int MIR_Trap_traits = Operator.none; 113 /** Shared traits for operators of the MIR_DataInt InstructionFormat */ 114 public static final int MIR_DataInt_traits = Operator.none; 115 /** Shared traits for operators of the MIR_DataLabel InstructionFormat */ 116 public static final int MIR_DataLabel_traits = Operator.none; 117 /** Shared traits for operators of the MIR_Branch InstructionFormat */ 118 public static final int MIR_Branch_traits = Operator.none; 119 /** Shared traits for operators of the MIR_CondBranch InstructionFormat */ 120 public static final int MIR_CondBranch_traits = Operator.none; 121 /** Shared traits for operators of the MIR_CondBranch2 InstructionFormat */ 122 public static final int MIR_CondBranch2_traits = Operator.none; 123 /** Shared traits for operators of the MIR_Call InstructionFormat */ 124 public static final int MIR_Call_traits = Operator.varUses; 125 /** Shared traits for operators of the MIR_CondCall InstructionFormat */ 126 public static final int MIR_CondCall_traits = Operator.varUses; 127 /** Shared traits for operators of the MIR_Return InstructionFormat */ 128 public static final int MIR_Return_traits = Operator.none; 129 /** Shared traits for operators of the MIR_Empty InstructionFormat */ 130 public static final int MIR_Empty_traits = Operator.none; 131 /** Shared traits for operators of the MIR_Nullary InstructionFormat */ 132 public static final int MIR_Nullary_traits = Operator.none; 133 /** Shared traits for operators of the MIR_Unary InstructionFormat */ 134 public static final int MIR_Unary_traits = Operator.none; 135 /** Shared traits for operators of the MIR_Binary InstructionFormat */ 136 public static final int MIR_Binary_traits = Operator.none; 137 /** Shared traits for operators of the MIR_Condition InstructionFormat */ 138 public static final int MIR_Condition_traits = Operator.none; 139 /** Shared traits for operators of the MIR_Ternary InstructionFormat */ 140 public static final int MIR_Ternary_traits = Operator.none; 141 /** Shared traits for operators of the MIR_LowTableSwitch InstructionFormat */ 142 public static final int MIR_LowTableSwitch_traits = Operator.varUses; 143 /** Shared traits for operators of the MIR_RotateAndMask InstructionFormat */ 144 public static final int MIR_RotateAndMask_traits = Operator.none; 145 146} 147