OLD | NEW |
1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 lowering ---*- C++ -*-===// | 1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 lowering ---*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file declares the TargetLoweringX8632 class, which | 10 // This file declares the TargetLoweringX8632 class, which |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 } | 219 } |
220 void _mul(Variable *Dest, Variable *Src0, Operand *Src1) { | 220 void _mul(Variable *Dest, Variable *Src0, Operand *Src1) { |
221 Context.insert(InstX8632Mul::create(Func, Dest, Src0, Src1)); | 221 Context.insert(InstX8632Mul::create(Func, Dest, Src0, Src1)); |
222 } | 222 } |
223 void _mulss(Variable *Dest, Operand *Src0) { | 223 void _mulss(Variable *Dest, Operand *Src0) { |
224 Context.insert(InstX8632Mulss::create(Func, Dest, Src0)); | 224 Context.insert(InstX8632Mulss::create(Func, Dest, Src0)); |
225 } | 225 } |
226 void _or(Variable *Dest, Operand *Src0) { | 226 void _or(Variable *Dest, Operand *Src0) { |
227 Context.insert(InstX8632Or::create(Func, Dest, Src0)); | 227 Context.insert(InstX8632Or::create(Func, Dest, Src0)); |
228 } | 228 } |
| 229 void _pand(Variable *Dest, Operand *Src0) { |
| 230 Context.insert(InstX8632Pand::create(Func, Dest, Src0)); |
| 231 } |
| 232 void _pcmpeq(Variable *Dest, Operand *Src0) { |
| 233 Context.insert(InstX8632Pcmpeq::create(Func, Dest, Src0)); |
| 234 } |
| 235 void _pcmpgt(Variable *Dest, Operand *Src0) { |
| 236 Context.insert(InstX8632Pcmpgt::create(Func, Dest, Src0)); |
| 237 } |
229 void _pop(Variable *Dest) { | 238 void _pop(Variable *Dest) { |
230 Context.insert(InstX8632Pop::create(Func, Dest)); | 239 Context.insert(InstX8632Pop::create(Func, Dest)); |
231 } | 240 } |
232 void _push(Operand *Src0, bool SuppressStackAdjustment = false) { | 241 void _push(Operand *Src0, bool SuppressStackAdjustment = false) { |
233 Context.insert(InstX8632Push::create(Func, Src0, SuppressStackAdjustment)); | 242 Context.insert(InstX8632Push::create(Func, Src0, SuppressStackAdjustment)); |
234 } | 243 } |
| 244 void _psll(Variable *Dest, Operand *Src0) { |
| 245 Context.insert(InstX8632Psll::create(Func, Dest, Src0)); |
| 246 } |
| 247 void _psra(Variable *Dest, Operand *Src0) { |
| 248 Context.insert(InstX8632Psra::create(Func, Dest, Src0)); |
| 249 } |
| 250 void _psub(Variable *Dest, Operand *Src0) { |
| 251 Context.insert(InstX8632Psub::create(Func, Dest, Src0)); |
| 252 } |
| 253 void _pxor(Variable *Dest, Operand *Src0) { |
| 254 Context.insert(InstX8632Pxor::create(Func, Dest, Src0)); |
| 255 } |
235 void _ret(Variable *Src0 = NULL) { | 256 void _ret(Variable *Src0 = NULL) { |
236 Context.insert(InstX8632Ret::create(Func, Src0)); | 257 Context.insert(InstX8632Ret::create(Func, Src0)); |
237 } | 258 } |
238 void _sar(Variable *Dest, Operand *Src0) { | 259 void _sar(Variable *Dest, Operand *Src0) { |
239 Context.insert(InstX8632Sar::create(Func, Dest, Src0)); | 260 Context.insert(InstX8632Sar::create(Func, Dest, Src0)); |
240 } | 261 } |
241 void _sbb(Variable *Dest, Operand *Src0) { | 262 void _sbb(Variable *Dest, Operand *Src0) { |
242 Context.insert(InstX8632Sbb::create(Func, Dest, Src0)); | 263 Context.insert(InstX8632Sbb::create(Func, Dest, Src0)); |
243 } | 264 } |
244 void _shl(Variable *Dest, Operand *Src0) { | 265 void _shl(Variable *Dest, Operand *Src0) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 void _ud2() { Context.insert(InstX8632UD2::create(Func)); } | 298 void _ud2() { Context.insert(InstX8632UD2::create(Func)); } |
278 void _xadd(Operand *Dest, Variable *Src, bool Locked) { | 299 void _xadd(Operand *Dest, Variable *Src, bool Locked) { |
279 Context.insert(InstX8632Xadd::create(Func, Dest, Src, Locked)); | 300 Context.insert(InstX8632Xadd::create(Func, Dest, Src, Locked)); |
280 // The xadd exchanges Dest and Src (modifying Src). | 301 // The xadd exchanges Dest and Src (modifying Src). |
281 // Model that update with a FakeDef. | 302 // Model that update with a FakeDef. |
282 Context.insert(InstFakeDef::create(Func, Src)); | 303 Context.insert(InstFakeDef::create(Func, Src)); |
283 } | 304 } |
284 void _xor(Variable *Dest, Operand *Src0) { | 305 void _xor(Variable *Dest, Operand *Src0) { |
285 Context.insert(InstX8632Xor::create(Func, Dest, Src0)); | 306 Context.insert(InstX8632Xor::create(Func, Dest, Src0)); |
286 } | 307 } |
287 void _pxor(Variable *Dest, Operand *Src0) { | |
288 Context.insert(InstX8632Pxor::create(Func, Dest, Src0)); | |
289 } | |
290 | 308 |
291 bool IsEbpBasedFrame; | 309 bool IsEbpBasedFrame; |
292 size_t FrameSizeLocals; | 310 size_t FrameSizeLocals; |
293 size_t LocalsSizeBytes; | 311 size_t LocalsSizeBytes; |
294 llvm::SmallBitVector TypeToRegisterSet[IceType_NUM]; | 312 llvm::SmallBitVector TypeToRegisterSet[IceType_NUM]; |
295 llvm::SmallBitVector ScratchRegs; | 313 llvm::SmallBitVector ScratchRegs; |
296 llvm::SmallBitVector RegsUsed; | 314 llvm::SmallBitVector RegsUsed; |
297 SizeT NextLabelNumber; | 315 SizeT NextLabelNumber; |
298 bool ComputedLiveRanges; | 316 bool ComputedLiveRanges; |
299 VarList PhysicalRegisters; | 317 VarList PhysicalRegisters; |
(...skipping 25 matching lines...) Expand all Loading... |
325 virtual ~TargetGlobalInitX8632() {} | 343 virtual ~TargetGlobalInitX8632() {} |
326 }; | 344 }; |
327 | 345 |
328 template <> void ConstantInteger::emit(GlobalContext *Ctx) const; | 346 template <> void ConstantInteger::emit(GlobalContext *Ctx) const; |
329 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; | 347 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; |
330 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; | 348 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; |
331 | 349 |
332 } // end of namespace Ice | 350 } // end of namespace Ice |
333 | 351 |
334 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H | 352 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H |
OLD | NEW |