Home | History | Annotate | Download | only in quick

Lines Matching refs:MIR

228 bool Mir2Lir::GenSpecialIGet(MIR* mir, const InlineMethod& special) {
241 GenPrintLabel(mir);
268 bool Mir2Lir::GenSpecialIPut(MIR* mir, const InlineMethod& special) {
285 GenPrintLabel(mir);
303 bool Mir2Lir::GenSpecialIdentity(MIR* mir, const InlineMethod& special) {
308 GenPrintLabel(mir);
319 bool Mir2Lir::GenSpecialCase(BasicBlock* bb, MIR* mir, const InlineMethod& special) {
321 current_dalvik_offset_ = mir->offset;
322 MIR* return_mir = nullptr;
328 DCHECK_EQ(mir->dalvikInsn.opcode, Instruction::RETURN_VOID);
329 return_mir = mir;
334 GenPrintLabel(mir);
336 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
340 successful = GenSpecialIdentity(mir, special);
341 return_mir = mir;
344 successful = GenSpecialIGet(mir, special);
345 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
348 successful = GenSpecialIPut(mir, special);
349 return_mir = bb->GetNextUnconditionalMir(mir_graph_, mir);
361 // Handle verbosity for return MIR.
389 void Mir2Lir::CompileDalvikInstruction(MIR* mir, BasicBlock* bb, LIR* label_list) {
393 Instruction::Code opcode = mir->dalvikInsn.opcode;
394 int opt_flags = mir->optimization_flags;
395 uint32_t vB = mir->dalvikInsn.vB;
396 uint32_t vC = mir->dalvikInsn.vC;
407 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
410 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
416 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
419 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
425 rl_src[next_loc++] = mir_graph_->GetSrcWide(mir, next_sreg);
427 rl_src[next_loc++] = mir_graph_->GetSrc(mir, next_sreg);
432 rl_dest = mir_graph_->GetDestWide(mir);
434 rl_dest = mir_graph_->GetDest(mir);
521 GenConstWide(rl_dest, mir->dalvikInsn.vB_wide);
539 GenCheckCast(mir->offset, vB, rl_src[0]);
579 GenFilledNewArray(mir_graph_->NewMemCallInfo(bb, mir, kStatic,
584 GenFilledNewArray(mir_graph_->NewMemCallInfo(bb, mir, kStatic,
604 GenPackedSwitch(mir, vB, rl_src[0]);
608 GenSparseSwitch(mir, vB, rl_src[0]);
712 is_safe = cu_->compiler_driver->IsSafeCast(unit, mir->offset);
733 GenIGet(mir, opt_flags, kReference, rl_dest, rl_src[0], false, true);
737 GenIGet(mir, opt_flags, k64, rl_dest, rl_src[0], true, false);
741 GenIGet(mir, opt_flags, k32, rl_dest, rl_src[0], false, false);
745 GenIGet(mir, opt_flags, kUnsignedHalf, rl_dest, rl_src[0], false, false);
749 GenIGet(mir, opt_flags, kSignedHalf, rl_dest, rl_src[0], false, false);
754 GenIGet(mir, opt_flags, kUnsignedByte, rl_dest, rl_src[0], false, false);
758 GenIPut(mir, opt_flags, k64, rl_src[0], rl_src[1], true, false);
762 GenIPut(mir, opt_flags, kReference, rl_src[0], rl_src[1], false, true);
766 GenIPut(mir, opt_flags, k32, rl_src[0], rl_src[1], false, false);
771 GenIPut(mir, opt_flags, kUnsignedByte, rl_src[0], rl_src[1], false, false);
775 GenIPut(mir, opt_flags, kUnsignedHalf, rl_src[0], rl_src[1], false, false);
779 GenIPut(mir, opt_flags, kSignedHalf, rl_src[0], rl_src[1], false, false);
783 GenSget(mir, rl_dest, false, true);
790 GenSget(mir, rl_dest, false, false);
794 GenSget(mir, rl_dest, true, false);
798 GenSput(mir, rl_src[0], false, true);
806 GenSput(mir, rl_src[0], false, false);
810 GenSput(mir, rl_src[0], true, false);
814 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kStatic, true));
822 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kStatic, false));
829 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kDirect, false));
835 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kDirect, true));
842 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kVirtual, false));
848 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kVirtual, true));
855 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kSuper, false));
861 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kSuper, true));
868 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kInterface, false));
874 GenInvoke(mir_graph_->NewMemCallInfo(bb, mir, kInterface, true));
1063 // Process extended MIR instructions
1064 void Mir2Lir::HandleExtendedMethodMIR(BasicBlock* bb, MIR* mir) {
1065 switch (static_cast<ExtendedMIROpcode>(mir->dalvikInsn.opcode)) {
1067 RegLocation rl_src = mir_graph_->GetSrc(mir, 0);
1068 RegLocation rl_dest = mir_graph_->GetDest(mir);
1073 GenFusedFPCmpBranch(bb, mir, false /*gt bias*/, false /*double*/);
1076 GenFusedFPCmpBranch(bb, mir, true /*gt bias*/, false /*double*/);
1079 GenFusedFPCmpBranch(bb, mir, false /*gt bias*/, true /*double*/);
1082 GenFusedFPCmpBranch(bb, mir, true /*gt bias*/, true /*double*/);
1085 GenFusedLongCmpBranch(bb, mir);
1088 GenSelect(bb, mir);
1100 // Give the backends a chance to handle unknown extended MIR opcodes.
1101 GenMachineSpecificExtendedMethodMIR(bb, mir);
1106 void Mir2Lir::GenPrintLabel(MIR* mir) {
1109 char* inst_str = mir_graph_->GetDalvikDisassembly(mir);
1110 MarkBoundary(mir->offset, inst_str);
1118 MIR* mir;
1148 for (mir = bb->first_mir_insn; mir != NULL; mir = mir->next) {
1165 current_dalvik_offset_ = mir->offset;
1166 int opcode = mir->dalvikInsn.opcode;
1168 GenPrintLabel(mir);
1180 MIR* work_half = mir->meta.throw_insn;
1181 mir->dalvikInsn.opcode = work_half->dalvikInsn.opcode;
1182 mir->meta = work_half->meta; // Whatever the work_half had, we need to copy it.
1185 work_half->ssa_rep = mir->ssa_rep;
1186 mir->ssa_rep = ssa_rep;
1188 work_half->meta.throw_insn = mir;
1191 if (MIR::DecodedInstruction::IsPseudoMirOp(opcode)) {
1192 HandleExtendedMethodMIR(bb, mir);
1196 CompileDalvikInstruction(mir, bb, block_label_list_);
1226 MIR* mir = bb->first_mir_insn;
1233 return GenSpecialCase(bb, mir, special);