00001 // Copyright 2007 Sandia Corporation. Under the terms 00002 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. 00003 // Government retains certain rights in this software. 00004 // 00005 // Copyright (c) 2007, Sandia Corporation 00006 // All rights reserved. 00007 // 00008 // This file is part of the SST software package. For license 00009 // information, see the LICENSE file in the top level directory of the 00010 // distribution. 00011 00012 00013 #ifndef FUCLASSES_H 00014 #define FUCLASSES_H 00015 00016 /* function unit classes, update md_fu2name in individual front-ends if you update this definition */ 00017 enum md_fu_class { 00018 FUClass_NA = 0, /* inst does not use a functional unit */ 00019 IntALU=0x1, /* integer ALU */ 00020 IntMULT=0x2, /* integer multiplier */ 00021 IntDIV=0x4, /* integer divider */ 00022 FloatADD=0x8, /* floating point adder/subtractor */ 00023 FloatCMP=0x10, /* floating point comparator */ 00024 FloatCVT=0x20, /* floating point<->integer converter */ 00025 FloatMULT=0x40, /* floating point multiplier */ 00026 FloatDIV=0x80, /* floating point divider */ 00027 FloatSQRT=0x100, /* floating point square root */ 00028 RdPort=0x200, /* memory read port */ 00029 WrPort=0x400, /* memory write port */ 00030 NUM_FU_CLASSES=0x800 /* total functional unit classes */ 00031 }; 00032 00033 #define F_ICOMP 0x00000001 /* integer computation */ 00034 #define F_FCOMP 0x00000002 /* FP computation */ 00035 #define F_CTRL 0x00000004 /* control inst */ 00036 #define F_UNCOND 0x00000008 /* unconditional change */ 00037 #define F_COND 0x00000010 /* conditional change */ 00038 #define F_MEM 0x00000020 /* memory access inst */ 00039 #define F_LOAD 0x00000040 /* load inst */ 00040 #define F_STORE 0x00000080 /* store inst */ 00041 #define F_DISP 0x00000100 /* displaced (R+C) addr mode */ 00042 #define F_RR 0x00000200 /* R+R addr mode */ 00043 #define F_DIRECT 0x00000400 /* direct addressing mode */ 00044 #define F_TRAP 0x00000800 /* traping inst */ 00045 #define F_LONGLAT 0x00001000 /* long latency inst (for sched) */ 00046 #define F_DIRJMP 0x00002000 /* direct jump */ 00047 #define F_INDIRJMP 0x00004000 /* indirect jump */ 00048 #define F_CALL 0x00008000 /* function call */ 00049 #define F_FPCOND 0x00010000 /* FP conditional branch */ 00050 #define F_IMM 0x00020000 /* instruction has immediate operand */ 00051 #define F_VEC 0x00040000 /* Vector */ 00052 #define F_SYNC 0x00080000 /* PPC-style Sync instruction */ 00053 #define F_WACILOAD 0x00100000 /* WACI Load */ 00054 00055 #endif