backend\A64\a32_emit_a64.cpp: Fix Coproc* after rebase

This commit is contained in:
SachinVin 2019-07-16 21:00:14 +05:30 committed by xperia64
parent 5bf010cc62
commit fe63ef0486

View File

@ -1048,15 +1048,15 @@ void A32EmitA64::EmitA32CoprocSendOneWord(A32EmitContext& ctx, IR::Inst* inst) {
} }
auto action = coproc->CompileSendOneWord(two, opc1, CRn, CRm, opc2); auto action = coproc->CompileSendOneWord(two, opc1, CRn, CRm, opc2);
switch (action.which()) { switch (action.index()) {
case 0: case 0:
EmitCoprocessorException(); EmitCoprocessorException();
return; return;
case 1: case 1:
CallCoprocCallback(code, ctx.reg_alloc, jit_interface, boost::get<A32::Coprocessor::Callback>(action), nullptr, args[1]); CallCoprocCallback(code, ctx.reg_alloc, jit_interface, std::get<A32::Coprocessor::Callback>(action), nullptr, args[1]);
return; return;
case 2: { case 2: {
u32* destination_ptr = boost::get<u32*>(action); u32* destination_ptr = std::get<u32*>(action);
ARM64Reg reg_word = DecodeReg(ctx.reg_alloc.UseGpr(args[1])); ARM64Reg reg_word = DecodeReg(ctx.reg_alloc.UseGpr(args[1]));
ARM64Reg reg_destination_addr = ctx.reg_alloc.ScratchGpr(); ARM64Reg reg_destination_addr = ctx.reg_alloc.ScratchGpr();
@ -1087,15 +1087,15 @@ void A32EmitA64::EmitA32CoprocSendTwoWords(A32EmitContext& ctx, IR::Inst* inst)
} }
auto action = coproc->CompileSendTwoWords(two, opc, CRm); auto action = coproc->CompileSendTwoWords(two, opc, CRm);
switch (action.which()) { switch (action.index()) {
case 0: case 0:
EmitCoprocessorException(); EmitCoprocessorException();
return; return;
case 1: case 1:
CallCoprocCallback(code, ctx.reg_alloc, jit_interface, boost::get<A32::Coprocessor::Callback>(action), nullptr, args[1], args[2]); CallCoprocCallback(code, ctx.reg_alloc, jit_interface, std::get<A32::Coprocessor::Callback>(action), nullptr, args[1], args[2]);
return; return;
case 2: { case 2: {
auto destination_ptrs = boost::get<std::array<u32*, 2>>(action); auto destination_ptrs = std::get<std::array<u32*, 2>>(action);
ARM64Reg reg_word1 = DecodeReg(ctx.reg_alloc.UseGpr(args[1])); ARM64Reg reg_word1 = DecodeReg(ctx.reg_alloc.UseGpr(args[1]));
ARM64Reg reg_word2 = DecodeReg(ctx.reg_alloc.UseGpr(args[2])); ARM64Reg reg_word2 = DecodeReg(ctx.reg_alloc.UseGpr(args[2]));
@ -1130,15 +1130,15 @@ void A32EmitA64::EmitA32CoprocGetOneWord(A32EmitContext& ctx, IR::Inst* inst) {
} }
auto action = coproc->CompileGetOneWord(two, opc1, CRn, CRm, opc2); auto action = coproc->CompileGetOneWord(two, opc1, CRn, CRm, opc2);
switch (action.which()) { switch (action.index()) {
case 0: case 0:
EmitCoprocessorException(); EmitCoprocessorException();
return; return;
case 1: case 1:
CallCoprocCallback(code, ctx.reg_alloc, jit_interface, boost::get<A32::Coprocessor::Callback>(action), inst); CallCoprocCallback(code, ctx.reg_alloc, jit_interface, std::get<A32::Coprocessor::Callback>(action), inst);
return; return;
case 2: { case 2: {
u32* source_ptr = boost::get<u32*>(action); u32* source_ptr = std::get<u32*>(action);
ARM64Reg reg_word = DecodeReg(ctx.reg_alloc.ScratchGpr()); ARM64Reg reg_word = DecodeReg(ctx.reg_alloc.ScratchGpr());
ARM64Reg reg_source_addr = ctx.reg_alloc.ScratchGpr(); ARM64Reg reg_source_addr = ctx.reg_alloc.ScratchGpr();
@ -1170,15 +1170,15 @@ void A32EmitA64::EmitA32CoprocGetTwoWords(A32EmitContext& ctx, IR::Inst* inst) {
} }
auto action = coproc->CompileGetTwoWords(two, opc, CRm); auto action = coproc->CompileGetTwoWords(two, opc, CRm);
switch (action.which()) { switch (action.index()) {
case 0: case 0:
EmitCoprocessorException(); EmitCoprocessorException();
return; return;
case 1: case 1:
CallCoprocCallback(code, ctx.reg_alloc, jit_interface, boost::get<A32::Coprocessor::Callback>(action), inst); CallCoprocCallback(code, ctx.reg_alloc, jit_interface, std::get<A32::Coprocessor::Callback>(action), inst);
return; return;
case 2: { case 2: {
auto source_ptrs = boost::get<std::array<u32*, 2>>(action); auto source_ptrs = std::get<std::array<u32*, 2>>(action);
ARM64Reg reg_result = ctx.reg_alloc.ScratchGpr(); ARM64Reg reg_result = ctx.reg_alloc.ScratchGpr();
ARM64Reg reg_destination_addr = ctx.reg_alloc.ScratchGpr(); ARM64Reg reg_destination_addr = ctx.reg_alloc.ScratchGpr();