Home | History | Annotate | Download | only in Hexagon

Lines Matching refs:Hexagon

1 //===-- HexagonISelDAGToDAG.cpp - A dag to dag inst selector for Hexagon --===//
10 // This file defines an instruction selector for the Hexagon target.
14 #include "Hexagon.h"
25 #define DEBUG_TYPE "hexagon-isel"
43 /// HexagonDAGToDAGISel - Hexagon specific code to select Hexagon machine
48 /// Subtarget - Keep a pointer to the Hexagon Subtarget around so that we can
83 return "Hexagon DAG->DAG Pattern Instruction Selection";
180 /// Hexagon-specific DAG, ready for instruction scheduling.
188 const char *Name = "Hexagon DAG->DAG Pattern Instruction Selection";
189 PassInfo *PI = new PassInfo(Name, "hexagon-isel",
323 return Hexagon::TFR_RsPd;
325 return Hexagon::AND_pp;
327 return Hexagon::XOR_pp;
329 return Hexagon::OR_pp;
331 return Hexagon::NOT_p;
333 return Hexagon::ANY_pp;
335 return Hexagon::ALL_pp;
337 return Hexagon::VITPACK_pp;
339 return Hexagon::MASK_p;
341 return Hexagon::MUX_rr;
346 return Hexagon::MUX_ri;
351 return Hexagon::MUX_ir;
354 return Hexagon::MUX_ii;
356 return Hexagon::VMUX_prr64;
358 return Hexagon::VALIGN_rrp;
360 return Hexagon::VSPLICE_rrp;
403 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
407 if (LoadedVT == MVT::i64) Opcode = Hexagon::LDrid_indexed;
408 else if (LoadedVT == MVT::i32) Opcode = Hexagon::LDriw_indexed;
409 else if (LoadedVT == MVT::i16) Opcode = Hexagon::LDrih_indexed;
410 else if (LoadedVT == MVT::i8) Opcode = Hexagon::LDrib_indexed;
456 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl, MVT::i64,
477 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl,
479 SDNode* Result_3 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl,
524 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
526 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
551 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
553 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
558 SDNode* Result_4 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
598 Opcode = Hexagon::POST_LDrid;
600 Opcode = Hexagon::LDrid;
603 Opcode = Hexagon::POST_LDriw;
605 Opcode = Hexagon::LDriw;
608 Opcode = zextval ? Hexagon::POST_LDriuh : Hexagon::POST_LDrih;
610 Opcode = zextval ? Hexagon::LDriuh : Hexagon::LDrih;
613 Opcode = zextval ? Hexagon::POST_LDriub : Hexagon::POST_LDrib;
615 Opcode = zextval ? Hexagon::LDriub : Hexagon::LDrib;
655 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
712 if (StoredVT == MVT::i64) Opcode = Hexagon::POST_STdri;
713 else if (StoredVT == MVT::i32) Opcode = Hexagon::POST_STwri;
714 else if (StoredVT == MVT::i16) Opcode = Hexagon::POST_SThri;
715 else if (StoredVT == MVT::i8) Opcode = Hexagon::POST_STbri;
738 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid;
739 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
740 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih;
741 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib;
748 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
786 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
791 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid_indexed;
792 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
793 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih_indexed;
794 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib_indexed;
868 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
894 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
903 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY64, dl, MVT::i64,
937 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
939 SDNode *Result = CurDAG->getMachineNode(Hexagon::MAXw_rr, dl,
961 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
963 SDNode *Result = CurDAG->getMachineNode(Hexagon::MINw_rr, dl,
1048 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1073 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1082 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY, dl, MVT::i32,
1115 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl,
1143 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl, MVT::i32,
1180 SDNode *Result_1 = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1183 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl,
1186 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
1195 SDNode* RsPd = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1234 if (RC == &Hexagon::IntRegsRegClass ||
1235 RC == &Hexagon::DoubleRegsRegClass) {
1237 } else if (RC == &Hexagon::PredRegsRegClass) {
1239 SDNode *PdRs = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
1269 return CurDAG->getMachineNode(Hexagon::TFRI_f, dl, MVT::f32,
1273 return CurDAG->getMachineNode(Hexagon::CONST64_Float_Real, dl, MVT::f64,
1292 CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
1296 SDNode* Pd = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
1300 SDNode* NotPd = CurDAG->getMachineNode(Hexagon::NOT_p, dl, MVT::i1,
1304 Result = CurDAG->getMachineNode(Hexagon::XOR_pp, dl, MVT::i1,
1337 SDNode* Result = CurDAG->getMachineNode(Hexagon::ASR_ADD_rr, dl, MVT::i32,