Value* ARMIREmitter::visit(const SDNode *N) { // return the parent if we are in IR only territory if (N->getOpcode() <= ISD::BUILTIN_OP_END) return IREmitter::visit(N); // If we already visited the node, return the result. if (VisitMap.find(N) != VisitMap.end()) { return VisitMap[N]; } IRB->SetCurrentDebugLocation(N->getDebugLoc()); DEBUG(Infos << "Visiting ARM specific Opcode.\n"); switch (N->getOpcode()) { default: return NULL; case ARMISD::BRCOND: return visitBRCOND(N); case ARMISD::RET_FLAG: return visitRET(N); case ARMISD::CALL: return visitCALL(N); } }
Value* ARMIREmitter::visit(const SDNode *N) { // return the parent if we are in IR only territory if (N->getOpcode() <= ISD::BUILTIN_OP_END) return IREmitter::visit(N); // If we already visited the node, return the result. if (VisitMap.find(N) != VisitMap.end()) { return VisitMap[N]; } IRB->SetCurrentDebugLocation(N->getDebugLoc()); DEBUG(Infos << "Visiting ARM specific Opcode.\n"); switch (N->getOpcode()) { default: { errs() << "OpCode: " << N->getOperationName(DAG) << "\n"; // dyn_cast<MachineSDNode>(N); llvm_unreachable("ARMIREmitter::visit - Every ARM visit should be implemented..."); return NULL; } case ARMISD::Wrapper: return visitWrapper(N); case ARMISD::WrapperPIC: return visitWrapperPIC(N); case ARMISD::WrapperJT: return visitWrapperJT(N); case ARMISD::COPY_STRUCT_BYVAL: return visitCOPY_STRUCT_BYVAL(N); case ARMISD::CALL: return visitCALL(N); case ARMISD::CALL_PRED: return visitCALL_PRED(N); case ARMISD::CALL_NOLINK: return visitCALL_NOLINK(N); case ARMISD::tCALL: return visittCALL(N); case ARMISD::BRCOND: return visitBRCOND(N); case ARMISD::BR_JT: return visitBR_JT(N); case ARMISD::BR2_JT: return visitBR2_JT(N); case ARMISD::RET_FLAG: return visitRET_FLAG(N); case ARMISD::INTRET_FLAG: return visitINTRET_FLAG(N); case ARMISD::PIC_ADD: return visitPIC_ADD(N); case ARMISD::CMP: return visitCMP(N); case ARMISD::CMN: return visitCMN(N); case ARMISD::CMPZ: return visitCMPZ(N); case ARMISD::CMPFP: return visitCMPFP(N); case ARMISD::CMPFPw0: return visitCMPFPw0(N); case ARMISD::FMSTAT: return visitFMSTAT(N); case ARMISD::CMOV: return visitCMOV(N); case ARMISD::BCC_i64: return visitBCC_i64(N); case ARMISD::RBIT: return visitRBIT(N); case ARMISD::FTOSI: return visitFTOSI(N); case ARMISD::FTOUI: return visitFTOUI(N); case ARMISD::SITOF: return visitSITOF(N); case ARMISD::UITOF: return visitUITOF(N); case ARMISD::SRL_FLAG: return visitSRL_FLAG(N); case ARMISD::SRA_FLAG: return visitSRA_FLAG(N); case ARMISD::RRX: return visitRRX(N); case ARMISD::ADDC: return visitADDC(N); case ARMISD::ADDE: return visitADDE(N); case ARMISD::SUBC: return visitSUBC(N); case ARMISD::SUBE: return visitSUBE(N); case ARMISD::VMOVRRD: return visitVMOVRRD(N); case ARMISD::VMOVDRR: return visitVMOVDRR(N); case ARMISD::EH_SJLJ_SETJMP: return visitEH_SJLJ_SETJMP(N); case ARMISD::EH_SJLJ_LONGJMP: return visitEH_SJLJ_LONGJMP(N); case ARMISD::TC_RETURN: return visitTC_RETURN(N); case ARMISD::THREAD_POINTER: return visitTHREAD_POINTER(N); case ARMISD::DYN_ALLOC: return visitDYN_ALLOC(N); case ARMISD::MEMBARRIER_MCR: return visitMEMBARRIER_MCR(N); case ARMISD::PRELOAD: return visitPRELOAD(N); case ARMISD::VCEQ: return visitVCEQ(N); case ARMISD::VCEQZ: return visitVCEQZ(N); case ARMISD::VCGE: return visitVCGE(N); case ARMISD::VCGEZ: return visitVCGEZ(N); case ARMISD::VCLEZ: return visitVCLEZ(N); case ARMISD::VCGEU: return visitVCGEU(N); case ARMISD::VCGT: return visitVCGT(N); case ARMISD::VCGTZ: return visitVCGTZ(N); case ARMISD::VCLTZ: return visitVCLTZ(N); case ARMISD::VCGTU: return visitVCGTU(N); case ARMISD::VTST: return visitVTST(N); case ARMISD::VSHL: return visitVSHL(N); case ARMISD::VSHRs: return visitVSHRs(N); case ARMISD::VSHRu: return visitVSHRu(N); //case ARMISD::VSHLLs: return visitVSHLLs(N); //case ARMISD::VSHLLu: return visitVSHLLu(N); //case ARMISD::VSHLLi: return visitVSHLLi(N); //case ARMISD::VSHRN: return visitVSHRN(N); case ARMISD::VRSHRs: return visitVRSHRs(N); case ARMISD::VRSHRu: return visitVRSHRu(N); //case ARMISD::VRSHRN: return visitVRSHRN(N); case ARMISD::VQSHLs: return visitVQSHLs(N); case ARMISD::VQSHLu: return visitVQSHLu(N); case ARMISD::VQSHLsu: return visitVQSHLsu(N); case ARMISD::VQSHRNs: return visitVQSHRNs(N); case ARMISD::VQSHRNu: return visitVQSHRNu(N); case ARMISD::VQSHRNsu: return visitVQSHRNsu(N); case ARMISD::VQRSHRNs: return visitVQRSHRNs(N); case ARMISD::VQRSHRNu: return visitVQRSHRNu(N); case ARMISD::VQRSHRNsu: return visitVQRSHRNsu(N); case ARMISD::VSLI: return visitVSLI(N); case ARMISD::VSRI: return visitVSRI(N); case ARMISD::VGETLANEu: return visitVGETLANEu(N); case ARMISD::VGETLANEs: return visitVGETLANEs(N); case ARMISD::VMOVIMM: return visitVMOVIMM(N); case ARMISD::VMVNIMM: return visitVMVNIMM(N); case ARMISD::VMOVFPIMM: return visitVMOVFPIMM(N); case ARMISD::VDUP: return visitVDUP(N); case ARMISD::VDUPLANE: return visitVDUPLANE(N); case ARMISD::VEXT: return visitVEXT(N); case ARMISD::VREV64: return visitVREV64(N); case ARMISD::VREV32: return visitVREV32(N); case ARMISD::VREV16: return visitVREV16(N); case ARMISD::VZIP: return visitVZIP(N); case ARMISD::VUZP: return visitVUZP(N); case ARMISD::VTRN: return visitVTRN(N); case ARMISD::VTBL1: return visitVTBL1(N); case ARMISD::VTBL2: return visitVTBL2(N); case ARMISD::VMULLs: return visitVMULLs(N); case ARMISD::VMULLu: return visitVMULLu(N); case ARMISD::UMLAL: return visitUMLAL(N); case ARMISD::SMLAL: return visitSMLAL(N); case ARMISD::BUILD_VECTOR: return visitBUILD_VECTOR(N); case ARMISD::FMAX: return visitFMAX(N); case ARMISD::FMIN: return visitFMIN(N); case ARMISD::VMAXNM: return visitVMAXNM(N); case ARMISD::VMINNM: return visitVMINNM(N); case ARMISD::BFI: return visitBFI(N); case ARMISD::VORRIMM: return visitVORRIMM(N); case ARMISD::VBICIMM: return visitVBICIMM(N); case ARMISD::VBSL: return visitVBSL(N); case ARMISD::VLD2DUP: return visitVLD2DUP(N); case ARMISD::VLD3DUP: return visitVLD3DUP(N); case ARMISD::VLD4DUP: return visitVLD4DUP(N); case ARMISD::VLD1_UPD: return visitVLD1_UPD(N); case ARMISD::VLD2_UPD: return visitVLD2_UPD(N); case ARMISD::VLD3_UPD: return visitVLD3_UPD(N); case ARMISD::VLD4_UPD: return visitVLD4_UPD(N); case ARMISD::VLD2LN_UPD: return visitVLD2LN_UPD(N); case ARMISD::VLD3LN_UPD: return visitVLD3LN_UPD(N); case ARMISD::VLD4LN_UPD: return visitVLD4LN_UPD(N); case ARMISD::VLD2DUP_UPD: return visitVLD2DUP_UPD(N); case ARMISD::VLD3DUP_UPD: return visitVLD3DUP_UPD(N); case ARMISD::VLD4DUP_UPD: return visitVLD4DUP_UPD(N); case ARMISD::VST1_UPD: return visitVST1_UPD(N); case ARMISD::VST2_UPD: return visitVST2_UPD(N); case ARMISD::VST3_UPD: return visitVST3_UPD(N); case ARMISD::VST4_UPD: return visitVST4_UPD(N); case ARMISD::VST2LN_UPD: return visitVST2LN_UPD(N); case ARMISD::VST3LN_UPD: return visitVST3LN_UPD(N); case ARMISD::VST4LN_UPD: return visitVST4LN_UPD(N); } }