microregop.hh (5083:49559a8060e8) microregop.hh (6345:f9ae7c3a036c)
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 65 unchanged lines hidden (view full) ---

74 const uint16_t ext;
75 RegIndex foldOBit;
76
77 // Constructor
78 RegOpBase(ExtMachInst _machInst,
79 const char *mnem, const char *_instMnem,
80 bool isMicro, bool isDelayed,
81 bool isFirst, bool isLast,
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 65 unchanged lines hidden (view full) ---

74 const uint16_t ext;
75 RegIndex foldOBit;
76
77 // Constructor
78 RegOpBase(ExtMachInst _machInst,
79 const char *mnem, const char *_instMnem,
80 bool isMicro, bool isDelayed,
81 bool isFirst, bool isLast,
82 RegIndex _src1, RegIndex _dest,
82 InstRegIndex _src1, InstRegIndex _dest,
83 uint8_t _dataSize, uint16_t _ext,
84 OpClass __opClass) :
85 X86MicroopBase(_machInst, mnem, _instMnem,
86 isMicro, isDelayed, isFirst, isLast,
87 __opClass),
83 uint8_t _dataSize, uint16_t _ext,
84 OpClass __opClass) :
85 X86MicroopBase(_machInst, mnem, _instMnem,
86 isMicro, isDelayed, isFirst, isLast,
87 __opClass),
88 src1(_src1), dest(_dest),
88 src1(_src1.idx), dest(_dest.idx),
89 dataSize(_dataSize), ext(_ext)
90 {
91 foldOBit = (dataSize == 1 && !_machInst.rex.present) ? 1 << 6 : 0;
92 }
93
94 //Figure out what the condition code flags should be.
95 uint64_t genFlags(uint64_t oldFlags, uint64_t flagMask,
96 uint64_t _dest, uint64_t _src1, uint64_t _src2,

--- 5 unchanged lines hidden (view full) ---

102 protected:
103 const RegIndex src2;
104
105 // Constructor
106 RegOp(ExtMachInst _machInst,
107 const char *mnem, const char *_instMnem,
108 bool isMicro, bool isDelayed,
109 bool isFirst, bool isLast,
89 dataSize(_dataSize), ext(_ext)
90 {
91 foldOBit = (dataSize == 1 && !_machInst.rex.present) ? 1 << 6 : 0;
92 }
93
94 //Figure out what the condition code flags should be.
95 uint64_t genFlags(uint64_t oldFlags, uint64_t flagMask,
96 uint64_t _dest, uint64_t _src1, uint64_t _src2,

--- 5 unchanged lines hidden (view full) ---

102 protected:
103 const RegIndex src2;
104
105 // Constructor
106 RegOp(ExtMachInst _machInst,
107 const char *mnem, const char *_instMnem,
108 bool isMicro, bool isDelayed,
109 bool isFirst, bool isLast,
110 RegIndex _src1, RegIndex _src2, RegIndex _dest,
110 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
111 uint8_t _dataSize, uint16_t _ext,
112 OpClass __opClass) :
113 RegOpBase(_machInst, mnem, _instMnem,
114 isMicro, isDelayed, isFirst, isLast,
115 _src1, _dest, _dataSize, _ext,
116 __opClass),
111 uint8_t _dataSize, uint16_t _ext,
112 OpClass __opClass) :
113 RegOpBase(_machInst, mnem, _instMnem,
114 isMicro, isDelayed, isFirst, isLast,
115 _src1, _dest, _dataSize, _ext,
116 __opClass),
117 src2(_src2)
117 src2(_src2.idx)
118 {
119 }
120
121 std::string generateDisassembly(Addr pc,
122 const SymbolTable *symtab) const;
123 };
124
125 class RegOpImm : public RegOpBase
126 {
127 protected:
128 const uint8_t imm8;
129
130 // Constructor
131 RegOpImm(ExtMachInst _machInst,
132 const char * mnem, const char *_instMnem,
133 bool isMicro, bool isDelayed,
134 bool isFirst, bool isLast,
118 {
119 }
120
121 std::string generateDisassembly(Addr pc,
122 const SymbolTable *symtab) const;
123 };
124
125 class RegOpImm : public RegOpBase
126 {
127 protected:
128 const uint8_t imm8;
129
130 // Constructor
131 RegOpImm(ExtMachInst _machInst,
132 const char * mnem, const char *_instMnem,
133 bool isMicro, bool isDelayed,
134 bool isFirst, bool isLast,
135 RegIndex _src1, uint8_t _imm8, RegIndex _dest,
135 InstRegIndex _src1, uint8_t _imm8, InstRegIndex _dest,
136 uint8_t _dataSize, uint16_t _ext,
137 OpClass __opClass) :
138 RegOpBase(_machInst, mnem, _instMnem,
139 isMicro, isDelayed, isFirst, isLast,
140 _src1, _dest, _dataSize, _ext,
141 __opClass),
142 imm8(_imm8)
143 {
144 }
145
146 std::string generateDisassembly(Addr pc,
147 const SymbolTable *symtab) const;
148 };
149}
150
151#endif //__ARCH_X86_INSTS_MICROREGOP_HH__
136 uint8_t _dataSize, uint16_t _ext,
137 OpClass __opClass) :
138 RegOpBase(_machInst, mnem, _instMnem,
139 isMicro, isDelayed, isFirst, isLast,
140 _src1, _dest, _dataSize, _ext,
141 __opClass),
142 imm8(_imm8)
143 {
144 }
145
146 std::string generateDisassembly(Addr pc,
147 const SymbolTable *symtab) const;
148 };
149}
150
151#endif //__ARCH_X86_INSTS_MICROREGOP_HH__