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
84 return "Hexagon DAG->DAG Pattern Instruction Selection";
130 /// Hexagon-specific DAG, ready for instruction scheduling.
138 const char *Name = "Hexagon DAG->DAG Pattern Instruction Selection";
139 PassInfo *PI = new PassInfo(Name, "hexagon-isel",
273 return Hexagon::TFR_RsPd;
275 return Hexagon::AND_pp;
277 return Hexagon::XOR_pp;
279 return Hexagon::OR_pp;
281 return Hexagon::NOT_p;
283 return Hexagon::ANY_pp;
285 return Hexagon::ALL_pp;
287 return Hexagon::VITPACK_pp;
289 return Hexagon::MASK_p;
291 return Hexagon::MUX_rr;
296 return Hexagon::MUX_ri;
301 return Hexagon::MUX_ir;
304 return Hexagon::MUX_ii;
306 return Hexagon::VMUX_prr64;
308 return Hexagon::VALIGN_rrp;
310 return Hexagon::VSPLICE_rrp;
353 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
357 if (LoadedVT == MVT::i64) Opcode = Hexagon::LDrid_indexed;
358 else if (LoadedVT == MVT::i32) Opcode = Hexagon::LDriw_indexed;
359 else if (LoadedVT == MVT::i16) Opcode = Hexagon::LDrih_indexed;
360 else if (LoadedVT == MVT::i8) Opcode = Hexagon::LDrib_indexed;
403 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl, MVT::i64,
424 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::SXTW, dl,
426 SDNode* Result_3 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl,
468 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
470 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
495 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
497 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
502 SDNode* Result_4 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
540 Opcode = Hexagon::POST_LDrid;
542 Opcode = Hexagon::LDrid;
545 Opcode = Hexagon::POST_LDriw;
547 Opcode = Hexagon::LDriw;
550 Opcode = zextval ? Hexagon::POST_LDriuh : Hexagon::POST_LDrih;
552 Opcode = zextval ? Hexagon::LDriuh : Hexagon::LDrih;
555 Opcode = zextval ? Hexagon::POST_LDriub : Hexagon::POST_LDrib;
557 Opcode = zextval ? Hexagon::LDriub : Hexagon::LDrib;
597 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
652 if (StoredVT == MVT::i64) Opcode = Hexagon::POST_STdri;
653 else if (StoredVT == MVT::i32) Opcode = Hexagon::POST_STwri;
654 else if (StoredVT == MVT::i16) Opcode = Hexagon::POST_SThri;
655 else if (StoredVT == MVT::i8) Opcode = Hexagon::POST_STbri;
678 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid;
679 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
680 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih;
681 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib;
689 SDNode* Result_2 = CurDAG->getMachineNode(Hexagon::ADD_ri, dl, MVT::i32,
727 SDNode* NewBase = CurDAG->getMachineNode(Hexagon::CONST32_set,
732 if (StoredVT == MVT::i64) Opcode = Hexagon::STrid_indexed;
733 else if (StoredVT == MVT::i32) Opcode = Hexagon::STriw_indexed;
734 else if (StoredVT == MVT::i16) Opcode = Hexagon::STrih_indexed;
735 else if (StoredVT == MVT::i8) Opcode = Hexagon::STrib_indexed;
809 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
835 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
844 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY64, dl, MVT::i64,
878 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
880 SDNode *Result = CurDAG->getMachineNode(Hexagon::MAXw_rr, dl,
902 SDNode *SextNode = CurDAG->getMachineNode(Hexagon::SXTH, dl,
904 SDNode *Result = CurDAG->getMachineNode(Hexagon::MINw_rr, dl,
989 OP0 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1014 OP1 = SDValue (CurDAG->getMachineNode(Hexagon::LDriw, dl, MVT::i32,
1023 SDNode *Result = CurDAG->getMachineNode(Hexagon::MPY, dl, MVT::i32,
1056 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl,
1084 CurDAG->getMachineNode(Hexagon::MPYI_ri, dl, MVT::i32,
1121 SDNode *Result_1 = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1124 SDNode *Result_2 = CurDAG->getMachineNode(Hexagon::TFRI, dl,
1127 SDNode *Result_3 = CurDAG->getMachineNode(Hexagon::COMBINE_rr, dl,
1136 SDNode* RsPd = CurDAG->getMachineNode(Hexagon::TFR_RsPd, dl,
1173 if (RC == &Hexagon::IntRegsRegClass ||
1174 RC == &Hexagon::DoubleRegsRegClass) {
1176 } else if (RC == &Hexagon::PredRegsRegClass) {
1178 SDNode *PdRs = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
1209 return CurDAG->getMachineNode(Hexagon::TFRI_f, dl, MVT::f32,
1213 return CurDAG->getMachineNode(Hexagon::CONST64_Float_Real, dl, MVT::f64,
1232 CurDAG->getMachineNode(Hexagon::TFRI, dl, MVT::i32,
1236 SDNode* Pd = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
1240 SDNode* NotPd = CurDAG->getMachineNode(Hexagon::NOT_p, dl, MVT::i1,
1244 Result = CurDAG->getMachineNode(Hexagon::XOR_pp, dl, MVT::i1,
1277 SDNode* Result = CurDAG->getMachineNode(Hexagon::ASR_ADD_rr, dl, MVT::i32,