Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Side by Side Diff: src/IceTargetLoweringX86Base.h

Issue 1368993004: Subzero: Improve usability of liveness-related tools. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | src/IceTargetLoweringX86BaseImpl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLoweringX86Base.h - x86 lowering ----*- C++ -*-===// 1 //===- subzero/src/IceTargetLoweringX86Base.h - x86 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 /// \file 10 /// \file
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 typename Traits::Cond::CmppsCond Condition) { 367 typename Traits::Cond::CmppsCond Condition) {
368 Context.insert(Traits::Insts::Cmpps::create(Func, Dest, Src0, Condition)); 368 Context.insert(Traits::Insts::Cmpps::create(Func, Dest, Src0, Condition));
369 } 369 }
370 void _cmpxchg(Operand *DestOrAddr, Variable *Eax, Variable *Desired, 370 void _cmpxchg(Operand *DestOrAddr, Variable *Eax, Variable *Desired,
371 bool Locked) { 371 bool Locked) {
372 Context.insert( 372 Context.insert(
373 Traits::Insts::Cmpxchg::create(Func, DestOrAddr, Eax, Desired, Locked)); 373 Traits::Insts::Cmpxchg::create(Func, DestOrAddr, Eax, Desired, Locked));
374 // Mark eax as possibly modified by cmpxchg. 374 // Mark eax as possibly modified by cmpxchg.
375 Context.insert( 375 Context.insert(
376 InstFakeDef::create(Func, Eax, llvm::dyn_cast<Variable>(DestOrAddr))); 376 InstFakeDef::create(Func, Eax, llvm::dyn_cast<Variable>(DestOrAddr)));
377 _set_dest_nonkillable(); 377 _set_dest_redefined();
378 Context.insert(InstFakeUse::create(Func, Eax)); 378 Context.insert(InstFakeUse::create(Func, Eax));
379 } 379 }
380 void _cmpxchg8b(typename Traits::X86OperandMem *Addr, Variable *Edx, 380 void _cmpxchg8b(typename Traits::X86OperandMem *Addr, Variable *Edx,
381 Variable *Eax, Variable *Ecx, Variable *Ebx, bool Locked) { 381 Variable *Eax, Variable *Ecx, Variable *Ebx, bool Locked) {
382 Context.insert(Traits::Insts::Cmpxchg8b::create(Func, Addr, Edx, Eax, Ecx, 382 Context.insert(Traits::Insts::Cmpxchg8b::create(Func, Addr, Edx, Eax, Ecx,
383 Ebx, Locked)); 383 Ebx, Locked));
384 // Mark edx, and eax as possibly modified by cmpxchg8b. 384 // Mark edx, and eax as possibly modified by cmpxchg8b.
385 Context.insert(InstFakeDef::create(Func, Edx)); 385 Context.insert(InstFakeDef::create(Func, Edx));
386 _set_dest_nonkillable(); 386 _set_dest_redefined();
387 Context.insert(InstFakeUse::create(Func, Edx)); 387 Context.insert(InstFakeUse::create(Func, Edx));
388 Context.insert(InstFakeDef::create(Func, Eax)); 388 Context.insert(InstFakeDef::create(Func, Eax));
389 _set_dest_nonkillable(); 389 _set_dest_redefined();
390 Context.insert(InstFakeUse::create(Func, Eax)); 390 Context.insert(InstFakeUse::create(Func, Eax));
391 } 391 }
392 void _cvt(Variable *Dest, Operand *Src0, 392 void _cvt(Variable *Dest, Operand *Src0,
393 typename Traits::Insts::Cvt::CvtVariant Variant) { 393 typename Traits::Insts::Cvt::CvtVariant Variant) {
394 Context.insert(Traits::Insts::Cvt::create(Func, Dest, Src0, Variant)); 394 Context.insert(Traits::Insts::Cvt::create(Func, Dest, Src0, Variant));
395 } 395 }
396 void _div(Variable *Dest, Operand *Src0, Operand *Src1) { 396 void _div(Variable *Dest, Operand *Src0, Operand *Src1) {
397 Context.insert(Traits::Insts::Div::create(Func, Dest, Src0, Src1)); 397 Context.insert(Traits::Insts::Div::create(Func, Dest, Src0, Src1));
398 } 398 }
399 void _divps(Variable *Dest, Operand *Src0) { 399 void _divps(Variable *Dest, Operand *Src0) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 void _mfence() { Context.insert(Traits::Insts::Mfence::create(Func)); } 440 void _mfence() { Context.insert(Traits::Insts::Mfence::create(Func)); }
441 /// If Dest=nullptr is passed in, then a new variable is created, marked as 441 /// If Dest=nullptr is passed in, then a new variable is created, marked as
442 /// infinite register allocation weight, and returned through the in/out Dest 442 /// infinite register allocation weight, and returned through the in/out Dest
443 /// argument. 443 /// argument.
444 void _mov(Variable *&Dest, Operand *Src0, 444 void _mov(Variable *&Dest, Operand *Src0,
445 int32_t RegNum = Variable::NoRegister) { 445 int32_t RegNum = Variable::NoRegister) {
446 if (Dest == nullptr) 446 if (Dest == nullptr)
447 Dest = makeReg(Src0->getType(), RegNum); 447 Dest = makeReg(Src0->getType(), RegNum);
448 Context.insert(Traits::Insts::Mov::create(Func, Dest, Src0)); 448 Context.insert(Traits::Insts::Mov::create(Func, Dest, Src0));
449 } 449 }
450 void _mov_nonkillable(Variable *Dest, Operand *Src0) { 450 void _mov_redefined(Variable *Dest, Operand *Src0) {
451 Inst *NewInst = Traits::Insts::Mov::create(Func, Dest, Src0); 451 Inst *NewInst = Traits::Insts::Mov::create(Func, Dest, Src0);
452 NewInst->setDestNonKillable(); 452 NewInst->setDestRedefined();
453 Context.insert(NewInst); 453 Context.insert(NewInst);
454 } 454 }
455 void _movd(Variable *Dest, Operand *Src0) { 455 void _movd(Variable *Dest, Operand *Src0) {
456 Context.insert(Traits::Insts::Movd::create(Func, Dest, Src0)); 456 Context.insert(Traits::Insts::Movd::create(Func, Dest, Src0));
457 } 457 }
458 void _movp(Variable *Dest, Operand *Src0) { 458 void _movp(Variable *Dest, Operand *Src0) {
459 Context.insert(Traits::Insts::Movp::create(Func, Dest, Src0)); 459 Context.insert(Traits::Insts::Movp::create(Func, Dest, Src0));
460 } 460 }
461 void _movq(Variable *Dest, Operand *Src0) { 461 void _movq(Variable *Dest, Operand *Src0) {
462 Context.insert(Traits::Insts::Movq::create(Func, Dest, Src0)); 462 Context.insert(Traits::Insts::Movq::create(Func, Dest, Src0));
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 void _ucomiss(Operand *Src0, Operand *Src1) { 611 void _ucomiss(Operand *Src0, Operand *Src1) {
612 Context.insert(Traits::Insts::Ucomiss::create(Func, Src0, Src1)); 612 Context.insert(Traits::Insts::Ucomiss::create(Func, Src0, Src1));
613 } 613 }
614 void _ud2() { Context.insert(Traits::Insts::UD2::create(Func)); } 614 void _ud2() { Context.insert(Traits::Insts::UD2::create(Func)); }
615 void _xadd(Operand *Dest, Variable *Src, bool Locked) { 615 void _xadd(Operand *Dest, Variable *Src, bool Locked) {
616 Context.insert(Traits::Insts::Xadd::create(Func, Dest, Src, Locked)); 616 Context.insert(Traits::Insts::Xadd::create(Func, Dest, Src, Locked));
617 // The xadd exchanges Dest and Src (modifying Src). Model that update with 617 // The xadd exchanges Dest and Src (modifying Src). Model that update with
618 // a FakeDef followed by a FakeUse. 618 // a FakeDef followed by a FakeUse.
619 Context.insert( 619 Context.insert(
620 InstFakeDef::create(Func, Src, llvm::dyn_cast<Variable>(Dest))); 620 InstFakeDef::create(Func, Src, llvm::dyn_cast<Variable>(Dest)));
621 _set_dest_nonkillable(); 621 _set_dest_redefined();
622 Context.insert(InstFakeUse::create(Func, Src)); 622 Context.insert(InstFakeUse::create(Func, Src));
623 } 623 }
624 void _xchg(Operand *Dest, Variable *Src) { 624 void _xchg(Operand *Dest, Variable *Src) {
625 Context.insert(Traits::Insts::Xchg::create(Func, Dest, Src)); 625 Context.insert(Traits::Insts::Xchg::create(Func, Dest, Src));
626 // The xchg modifies Dest and Src -- model that update with a 626 // The xchg modifies Dest and Src -- model that update with a
627 // FakeDef/FakeUse. 627 // FakeDef/FakeUse.
628 Context.insert( 628 Context.insert(
629 InstFakeDef::create(Func, Src, llvm::dyn_cast<Variable>(Dest))); 629 InstFakeDef::create(Func, Src, llvm::dyn_cast<Variable>(Dest)));
630 _set_dest_nonkillable(); 630 _set_dest_redefined();
631 Context.insert(InstFakeUse::create(Func, Src)); 631 Context.insert(InstFakeUse::create(Func, Src));
632 } 632 }
633 void _xor(Variable *Dest, Operand *Src0) { 633 void _xor(Variable *Dest, Operand *Src0) {
634 Context.insert(Traits::Insts::Xor::create(Func, Dest, Src0)); 634 Context.insert(Traits::Insts::Xor::create(Func, Dest, Src0));
635 } 635 }
636 void _xor_rmw(typename Traits::X86OperandMem *DestSrc0, Operand *Src1) { 636 void _xor_rmw(typename Traits::X86OperandMem *DestSrc0, Operand *Src1) {
637 Context.insert(Traits::Insts::XorRMW::create(Func, DestSrc0, Src1)); 637 Context.insert(Traits::Insts::XorRMW::create(Func, DestSrc0, Src1));
638 } 638 }
639 639
640 void _iaca_start() { 640 void _iaca_start() {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 Operand *Src1Lo, Variable *DestLo, Variable *DestHi); 719 Operand *Src1Lo, Variable *DestLo, Variable *DestHi);
720 720
721 BoolFolding FoldingInfo; 721 BoolFolding FoldingInfo;
722 }; 722 };
723 } // end of namespace X86Internal 723 } // end of namespace X86Internal
724 } // end of namespace Ice 724 } // end of namespace Ice
725 725
726 #include "IceTargetLoweringX86BaseImpl.h" 726 #include "IceTargetLoweringX86BaseImpl.h"
727 727
728 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASE_H 728 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASE_H
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | src/IceTargetLoweringX86BaseImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698