Lines Matching refs:mir

242 bool Mir2Lir::GenSpecialIGet(MIR* mir, const InlineMethod& special) {
284 GenPrintLabel(mir);
310 bool Mir2Lir::GenSpecialIPut(MIR* mir, const InlineMethod& special) {
358 GenPrintLabel(mir);
374 bool Mir2Lir::GenSpecialIdentity(MIR* mir, const InlineMethod& special) {
384 GenPrintLabel(mir);
394 bool Mir2Lir::GenSpecialCase(BasicBlock* bb, MIR* mir, const InlineMethod& special) {
396 current_dalvik_offset_ = mir->offset;
405 DCHECK_EQ(mir->dalvikInsn.opcode, Instruction::RETURN_VOID);
409 return_mir = mir;
417 GenPrintLabel(mir);
419 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
423 successful = GenSpecialIdentity(mir, special);
424 return_mir = mir;
427 successful = GenSpecialIGet(mir, special);
428 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
431 successful = GenSpecialIPut(mir, special);
432 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
476 void Mir2Lir::CompileDalvikInstruction(MIR* mir, BasicBlock* bb, LIR* label_list) {
480 const Instruction::Code opcode = mir->dalvikInsn.opcode;
481 const int opt_flags = mir->optimization_flags;
482 const uint32_t vB = mir->dalvikInsn.vB;
483 const uint32_t vC = mir->dalvikInsn.vC;
494 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
497 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
503 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
506 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
512 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
514 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
519 rl_dest = mir_graph_->GetDestWide(mir);
521 rl_dest = mir_graph_->GetDest(mir);
598 GenConstWide(rl_dest, mir->dalvikInsn.vB_wide);
616 GenCheckCast(opt_flags, mir->offset, vB, rl_src[0]);
652 GenFillArrayData(mir, vB, rl_src[0]);
656 GenFilledNewArray(mir_graph_->NewMemCallInfo(bb, mir, kStatic,
661 GenFilledNewArray(mir_graph_->NewMemCallInfo(bb, mir, kStatic,
680 GenPackedSwitch(mir, vB, rl_src[0]);
684 GenSparseSwitch(mir, vB, rl_src[0]);
758 is_safe = cu_->compiler_driver->IsSafeCast(unit, mir->offset);
780 GenIGet(mir, opt_flags, kReference, Primitive::kPrimNot, rl_dest, rl_src[0]);
787 GenIGet(mir, opt_flags, kDouble, Primitive::kPrimDouble, rl_dest, rl_src[0]);
789 GenIGet(mir, opt_flags, k64, Primitive::kPrimLong, rl_dest, rl_src[0]);
796 GenIGet(mir, opt_flags, kSingle, Primitive::kPrimFloat, rl_dest, rl_src[0]);
798 GenIGet(mir, opt_flags, k32, Primitive::kPrimInt, rl_dest, rl_src[0]);
804 GenIGet(mir, opt_flags, kUnsignedHalf, Primitive::kPrimChar, rl_dest, rl_src[0]);
809 GenIGet(mir, opt_flags, kSignedHalf, Primitive::kPrimShort, rl_dest, rl_src[0]);
814 GenIGet(mir, opt_flags, kUnsignedByte, Primitive::kPrimBoolean, rl_dest, rl_src[0]);
819 GenIGet(mir, opt_flags, kSignedByte, Primitive::kPrimByte, rl_dest, rl_src[0]);
824 GenIPut(mir, opt_flags, rl_src[0].fp ? kDouble : k64, rl_src[0], rl_src[1]);
829 GenIPut(mir, opt_flags, kReference, rl_src[0], rl_src[1]);
834 GenIPut(mir, opt_flags, rl_src[0].fp ? kSingle : k32, rl_src[0], rl_src[1]);
841 GenIPut(mir, opt_flags, kUnsignedByte, rl_src[0], rl_src[1]);
846 GenIPut(mir, opt_flags, kUnsignedHalf, rl_src[0], rl_src[1]);
851 GenIPut(mir, opt_flags, kSignedHalf, rl_src[0], rl_src[1]);
855 GenSget(mir, rl_dest, kReference, Primitive::kPrimNot);
859 GenSget(mir, rl_dest, rl_dest.fp ? kSingle : k32, Primitive::kPrimInt);
863 GenSget(mir, rl_dest, kUnsignedHalf, Primitive::kPrimChar);
867 GenSget(mir, rl_dest, kSignedHalf, Primitive::kPrimShort);
871 GenSget(mir, rl_dest, kUnsignedByte, Primitive::kPrimBoolean);
875 GenSget(mir, rl_dest, kSignedByte, Primitive::kPrimByte);
880 GenSget(mir, rl_dest, rl_dest.fp ? kDouble : k64, Primitive::kPrimDouble);
884 GenSput(mir, rl_src[0], kReference);
888 GenSput(mir, rl_src[0], rl_src[0].fp ? kSingle : k32);
893 GenSput(mir, rl_src[0], kUnsignedByte);
897 GenSput(mir, rl_src[0], kUnsignedHalf);
901 GenSput(mir, rl_src[0], kSignedHalf);
906 GenSput(mir, rl_src[0], rl_src[0].fp ? kDouble : k64);
910 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kStatic, true));
913 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kStatic, false));
917 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kDirect, false));
920 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kDirect, true));
925 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kVirtual, false));
930 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kVirtual, true));
934 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kSuper, false));
937 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kSuper, true));
941 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kInterface, false));
944 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kInterface, true));
1136 void Mir2Lir::HandleExtendedMethodMIR(BasicBlock* bb, MIR* mir) {
1137 switch (static_cast<ExtendedMIROpcode>(mir->dalvikInsn.opcode)) {
1139 RegLocation rl_src = mir_graph_->GetSrc(mir, 0);
1140 RegLocation rl_dest = mir_graph_->GetDest(mir);
1146 GenSuspendTest(mir->optimization_flags);
1148 GenFusedFPCmpBranch(bb, mir, false /*gt bias*/, false /*double*/);
1152 GenSuspendTest(mir->optimization_flags);
1154 GenFusedFPCmpBranch(bb, mir, true /*gt bias*/, false /*double*/);
1158 GenSuspendTest(mir->optimization_flags);
1160 GenFusedFPCmpBranch(bb, mir, false /*gt bias*/, true /*double*/);
1164 GenSuspendTest(mir->optimization_flags);
1166 GenFusedFPCmpBranch(bb, mir, true /*gt bias*/, true /*double*/);
1170 GenSuspendTest(mir->optimization_flags);
1172 GenFusedLongCmpBranch(bb, mir);
1175 GenSelect(bb, mir);
1178 RegLocation rl_obj = mir_graph_->GetSrc(mir, 0);
1183 GenExplicitNullCheck(rl_obj.reg, mir->optimization_flags);
1195 GenMachineSpecificExtendedMethodMIR(bb, mir);
1200 void Mir2Lir::GenPrintLabel(MIR* mir) {
1203 char* inst_str = mir_graph_->GetDalvikDisassembly(mir);
1204 MarkBoundary(mir->offset, inst_str);
1212 MIR* mir;
1252 for (mir = bb->first_mir_insn; mir != nullptr; mir = mir->next) {
1269 current_dalvik_offset_ = mir->offset;
1270 current_mir_ = mir;
1271 int opcode = mir->dalvikInsn.opcode;
1273 GenPrintLabel(mir);
1284 HandleExtendedMethodMIR(bb, mir);
1288 CompileDalvikInstruction(mir, bb, block_label_list_);
1317 MIR* mir = bb->first_mir_insn;
1324 return GenSpecialCase(bb, mir, special);