OLD | NEW |
1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- C++ -*-===// | 1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- 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 InstX8632 and OperandX8632 classes and | 10 // This file declares the InstX8632 and OperandX8632 classes and |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 public: | 457 public: |
458 static InstX8632InplaceopGPR *create(Cfg *Func, Operand *SrcDest) { | 458 static InstX8632InplaceopGPR *create(Cfg *Func, Operand *SrcDest) { |
459 return new (Func->allocate<InstX8632InplaceopGPR>()) | 459 return new (Func->allocate<InstX8632InplaceopGPR>()) |
460 InstX8632InplaceopGPR(Func, SrcDest); | 460 InstX8632InplaceopGPR(Func, SrcDest); |
461 } | 461 } |
462 void emit(const Cfg *Func) const override { | 462 void emit(const Cfg *Func) const override { |
463 Ostream &Str = Func->getContext()->getStrEmit(); | 463 Ostream &Str = Func->getContext()->getStrEmit(); |
464 assert(getSrcSize() == 1); | 464 assert(getSrcSize() == 1); |
465 Str << "\t" << Opcode << "\t"; | 465 Str << "\t" << Opcode << "\t"; |
466 getSrc(0)->emit(Func); | 466 getSrc(0)->emit(Func); |
467 Str << "\n"; | |
468 } | 467 } |
469 void emitIAS(const Cfg *Func) const override { | 468 void emitIAS(const Cfg *Func) const override { |
470 assert(getSrcSize() == 1); | 469 assert(getSrcSize() == 1); |
471 const Variable *Var = getDest(); | 470 const Variable *Var = getDest(); |
472 Type Ty = Var->getType(); | 471 Type Ty = Var->getType(); |
473 emitIASOpTyGPR(Func, Ty, Var, Emitter); | 472 emitIASOpTyGPR(Func, Ty, Var, Emitter); |
474 } | 473 } |
475 void dump(const Cfg *Func) const override { | 474 void dump(const Cfg *Func) const override { |
476 Ostream &Str = Func->getContext()->getStrDump(); | 475 Ostream &Str = Func->getContext()->getStrDump(); |
477 dumpDest(Func); | 476 dumpDest(Func); |
(...skipping 30 matching lines...) Expand all Loading... |
508 return new (Func->allocate<InstX8632UnaryopGPR>()) | 507 return new (Func->allocate<InstX8632UnaryopGPR>()) |
509 InstX8632UnaryopGPR(Func, Dest, Src); | 508 InstX8632UnaryopGPR(Func, Dest, Src); |
510 } | 509 } |
511 void emit(const Cfg *Func) const override { | 510 void emit(const Cfg *Func) const override { |
512 Ostream &Str = Func->getContext()->getStrEmit(); | 511 Ostream &Str = Func->getContext()->getStrEmit(); |
513 assert(getSrcSize() == 1); | 512 assert(getSrcSize() == 1); |
514 Str << "\t" << Opcode << "\t"; | 513 Str << "\t" << Opcode << "\t"; |
515 getDest()->emit(Func); | 514 getDest()->emit(Func); |
516 Str << ", "; | 515 Str << ", "; |
517 getSrc(0)->emit(Func); | 516 getSrc(0)->emit(Func); |
518 Str << "\n"; | |
519 } | 517 } |
520 void emitIAS(const Cfg *Func) const override { | 518 void emitIAS(const Cfg *Func) const override { |
521 assert(getSrcSize() == 1); | 519 assert(getSrcSize() == 1); |
522 const Variable *Var = getDest(); | 520 const Variable *Var = getDest(); |
523 Type Ty = Var->getType(); | 521 Type Ty = Var->getType(); |
524 const Operand *Src = getSrc(0); | 522 const Operand *Src = getSrc(0); |
525 emitIASRegOpTyGPR(Func, Ty, Var, Src, Emitter); | 523 emitIASRegOpTyGPR(Func, Ty, Var, Src, Emitter); |
526 } | 524 } |
527 void dump(const Cfg *Func) const override { | 525 void dump(const Cfg *Func) const override { |
528 Ostream &Str = Func->getContext()->getStrDump(); | 526 Ostream &Str = Func->getContext()->getStrDump(); |
(...skipping 27 matching lines...) Expand all Loading... |
556 return new (Func->allocate<InstX8632UnaryopXmm>()) | 554 return new (Func->allocate<InstX8632UnaryopXmm>()) |
557 InstX8632UnaryopXmm(Func, Dest, Src); | 555 InstX8632UnaryopXmm(Func, Dest, Src); |
558 } | 556 } |
559 void emit(const Cfg *Func) const override { | 557 void emit(const Cfg *Func) const override { |
560 Ostream &Str = Func->getContext()->getStrEmit(); | 558 Ostream &Str = Func->getContext()->getStrEmit(); |
561 assert(getSrcSize() == 1); | 559 assert(getSrcSize() == 1); |
562 Str << "\t" << Opcode << "\t"; | 560 Str << "\t" << Opcode << "\t"; |
563 getDest()->emit(Func); | 561 getDest()->emit(Func); |
564 Str << ", "; | 562 Str << ", "; |
565 getSrc(0)->emit(Func); | 563 getSrc(0)->emit(Func); |
566 Str << "\n"; | |
567 } | 564 } |
568 void emitIAS(const Cfg *Func) const override { | 565 void emitIAS(const Cfg *Func) const override { |
569 Type Ty = getDest()->getType(); | 566 Type Ty = getDest()->getType(); |
570 assert(getSrcSize() == 1); | 567 assert(getSrcSize() == 1); |
571 emitIASRegOpTyXMM(Func, Ty, getDest(), getSrc(0), Emitter); | 568 emitIASRegOpTyXMM(Func, Ty, getDest(), getSrc(0), Emitter); |
572 } | 569 } |
573 void dump(const Cfg *Func) const override { | 570 void dump(const Cfg *Func) const override { |
574 Ostream &Str = Func->getContext()->getStrDump(); | 571 Ostream &Str = Func->getContext()->getStrDump(); |
575 dumpDest(Func); | 572 dumpDest(Func); |
576 Str << " = " << Opcode << "." << getDest()->getType() << " "; | 573 Str << " = " << Opcode << "." << getDest()->getType() << " "; |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 } | 774 } |
778 void emit(const Cfg *Func) const override { | 775 void emit(const Cfg *Func) const override { |
779 Ostream &Str = Func->getContext()->getStrEmit(); | 776 Ostream &Str = Func->getContext()->getStrEmit(); |
780 assert(getSrcSize() == 3); | 777 assert(getSrcSize() == 3); |
781 Str << "\t" << Opcode << "\t"; | 778 Str << "\t" << Opcode << "\t"; |
782 getDest()->emit(Func); | 779 getDest()->emit(Func); |
783 Str << ", "; | 780 Str << ", "; |
784 getSrc(1)->emit(Func); | 781 getSrc(1)->emit(Func); |
785 Str << ", "; | 782 Str << ", "; |
786 getSrc(2)->emit(Func); | 783 getSrc(2)->emit(Func); |
787 Str << "\n"; | |
788 } | 784 } |
789 void emitIAS(const Cfg *Func) const override; | 785 void emitIAS(const Cfg *Func) const override; |
790 void dump(const Cfg *Func) const override { | 786 void dump(const Cfg *Func) const override { |
791 Ostream &Str = Func->getContext()->getStrDump(); | 787 Ostream &Str = Func->getContext()->getStrDump(); |
792 dumpDest(Func); | 788 dumpDest(Func); |
793 Str << " = " << Opcode << "." << getDest()->getType() << " "; | 789 Str << " = " << Opcode << "." << getDest()->getType() << " "; |
794 dumpSources(Func); | 790 dumpSources(Func); |
795 } | 791 } |
796 static bool classof(const Inst *Inst) { return isClassof(Inst, K); } | 792 static bool classof(const Inst *Inst) { return isClassof(Inst, K); } |
797 | 793 |
(...skipping 22 matching lines...) Expand all Loading... |
820 } | 816 } |
821 void emit(const Cfg *Func) const override { | 817 void emit(const Cfg *Func) const override { |
822 Ostream &Str = Func->getContext()->getStrEmit(); | 818 Ostream &Str = Func->getContext()->getStrEmit(); |
823 assert(getSrcSize() == 2); | 819 assert(getSrcSize() == 2); |
824 Str << "\t" << Opcode << "\t"; | 820 Str << "\t" << Opcode << "\t"; |
825 getDest()->emit(Func); | 821 getDest()->emit(Func); |
826 Str << ", "; | 822 Str << ", "; |
827 getSrc(0)->emit(Func); | 823 getSrc(0)->emit(Func); |
828 Str << ", "; | 824 Str << ", "; |
829 getSrc(1)->emit(Func); | 825 getSrc(1)->emit(Func); |
830 Str << "\n"; | |
831 } | 826 } |
832 void emitIAS(const Cfg *Func) const override; | 827 void emitIAS(const Cfg *Func) const override; |
833 void dump(const Cfg *Func) const override { | 828 void dump(const Cfg *Func) const override { |
834 Ostream &Str = Func->getContext()->getStrDump(); | 829 Ostream &Str = Func->getContext()->getStrDump(); |
835 dumpDest(Func); | 830 dumpDest(Func); |
836 Str << " = " << Opcode << "." << getDest()->getType() << " "; | 831 Str << " = " << Opcode << "." << getDest()->getType() << " "; |
837 dumpSources(Func); | 832 dumpSources(Func); |
838 } | 833 } |
839 static bool classof(const Inst *Inst) { return isClassof(Inst, K); } | 834 static bool classof(const Inst *Inst) { return isClassof(Inst, K); } |
840 | 835 |
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1546 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const; | 1541 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const; |
1547 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const; | 1542 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const; |
1548 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const; | 1543 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const; |
1549 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; | 1544 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; |
1550 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const; | 1545 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const; |
1551 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const; | 1546 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const; |
1552 | 1547 |
1553 } // end of namespace Ice | 1548 } // end of namespace Ice |
1554 | 1549 |
1555 #endif // SUBZERO_SRC_ICEINSTX8632_H | 1550 #endif // SUBZERO_SRC_ICEINSTX8632_H |
OLD | NEW |