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 #define DEBUG_TYPE "hexagon-isel"
15 #include "Hexagon.h"
42 /// HexagonDAGToDAGISel - Hexagon specific code to select Hexagon machine
47 /// Subtarget - Keep a pointer to the Hexagon Subtarget around so that we can
82 return "Hexagon DAG->DAG Pattern Instruction Selection";
179 /// Hexagon-specific DAG, ready for instruction scheduling.
187 const char *Name = "Hexagon DAG->DAG Pattern Instruction Selection";
188 PassInfo *PI = new PassInfo(Name, "hexagon-isel",
322 return Hexagon::TFR_RsPd;
324 return Hexagon::AND_pp;
326 return Hexagon::XOR_pp;
328 return Hexagon::OR_pp;
330 return Hexagon::NOT_p;
332 return Hexagon::ANY_pp;
334 return Hexagon::ALL_pp;
336 return Hexagon::VITPACK_pp;
338 return Hexagon::MASK_p;
340 return Hexagon::MUX_rr;
345 return Hexagon::MUX_ri;
350 return Hexagon::MUX_ir;
353 return Hexagon::MUX_ii;
355 return Hexagon::VMUX_prr64;
357 return Hexagon::VALIGN_rrp;
359 return Hexagon::VSPLICE_rrp;
402 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
406 if (LoadedVT == MVT::i64) Opcode = Hexagon::LDrid_indexed;
407 else if (LoadedVT == MVT::i32) Opcode = Hexagon::LDriw_indexed;
408 else if (LoadedVT == MVT::i16) Opcode = Hexagon::LDrih_indexed;
409 else if (LoadedVT == MVT::i8) Opcode = Hexagon::LDrib_indexed;
455 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl, MVT::i64,
476 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl,
478 SDNode* Result_3 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl,
523 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
525 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
550 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
552 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
557 SDNode* Result_4 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
597 Opcode = Hexagon::POST_LDrid;
599 Opcode = Hexagon::LDrid;
602 Opcode = Hexagon::POST_LDriw;
604 Opcode = Hexagon::LDriw;
607 Opcode = zextval ? Hexagon::POST_LDriuh : Hexagon::POST_LDrih;
609 Opcode = zextval ? Hexagon::LDriuh : Hexagon::LDrih;
612 Opcode = zextval ? Hexagon::POST_LDriub : Hexagon::POST_LDrib;
614 Opcode = zextval ? Hexagon::LDriub : Hexagon::LDrib;
654 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
711 if (StoredVT == MVT::i64) Opcode = Hexagon::POST_STdri;
712 else if (StoredVT == MVT::i32) Opcode = Hexagon::POST_STwri;
713 else if (StoredVT == MVT::i16) Opcode = Hexagon::POST_SThri;
714 else if (StoredVT == MVT::i8) Opcode = Hexagon::POST_STbri;
737 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid;
738 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
739 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih;
740 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib;
747 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
785 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
790 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid_indexed;
791 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
792 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih_indexed;
793 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib_indexed;
867 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
893 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
902 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY64, dl, MVT::i64,
936 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
938 SDNode *Result = CurDAG->getMachineNode(Hexagon::MAXw_rr, dl,
960 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
962 SDNode *Result = CurDAG->getMachineNode(Hexagon::MINw_rr, dl,
1047 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1072 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1081 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY, dl, MVT::i32,
1114 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl,
1142 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl, MVT::i32,
1179 SDNode *Result_1 = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1182 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl,
1185 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
1194 SDNode* RsPd = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1233 if (RC == &Hexagon::IntRegsRegClass ||
1234 RC == &Hexagon::DoubleRegsRegClass) {
1236 } else if (RC == &Hexagon::PredRegsRegClass) {
1238 SDNode *PdRs = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
1268 return CurDAG->getMachineNode(Hexagon::TFRI_f, dl, MVT::f32,
1272 return CurDAG->getMachineNode(Hexagon::CONST64_Float_Real, dl, MVT::f64,
1291 CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
1295 SDNode* Pd = CurDAG->getMachineNode(Hexagon
1299 SDNode* NotPd = CurDAG->getMachineNode(Hexagon::NOT_p, dl, MVT::i1,
1303 Result = CurDAG->getMachineNode(Hexagon::XOR_pp, dl, MVT::i1,
1336 SDNode* Result = CurDAG->getMachineNode(Hexagon::ASR_ADD_rr, dl, MVT::i32,