diff --git a/src/backend_x64/emit_x64_aes.cpp b/src/backend_x64/emit_x64_aes.cpp index f1675271..669e923d 100644 --- a/src/backend_x64/emit_x64_aes.cpp +++ b/src/backend_x64/emit_x64_aes.cpp @@ -19,7 +19,7 @@ namespace AES = Common::Crypto::AES; using AESFn = void(AES::State&, const AES::State&); -static void EmitAESFunction(std::array args, EmitContext& ctx, BlockOfCode& code, +static void EmitAESFunction(RegAlloc::ArgumentInfo args, EmitContext& ctx, BlockOfCode& code, IR::Inst* inst, AESFn fn) { constexpr u32 stack_space = static_cast(sizeof(AES::State)) * 2; const Xbyak::Xmm input = ctx.reg_alloc.UseXmm(args[0]); diff --git a/src/backend_x64/reg_alloc.cpp b/src/backend_x64/reg_alloc.cpp index 3e8ae2c8..78810998 100644 --- a/src/backend_x64/reg_alloc.cpp +++ b/src/backend_x64/reg_alloc.cpp @@ -208,8 +208,8 @@ bool Argument::IsInMemory() const { return HostLocIsSpill(*reg_alloc.ValueLocation(value.GetInst())); } -std::array RegAlloc::GetArgumentInfo(IR::Inst* inst) { - std::array ret = { Argument{*this}, Argument{*this}, Argument{*this} }; +RegAlloc::ArgumentInfo RegAlloc::GetArgumentInfo(IR::Inst* inst) { + ArgumentInfo ret = { Argument{*this}, Argument{*this}, Argument{*this} }; for (size_t i = 0; i < inst->NumArgs(); i++) { const IR::Value& arg = inst->GetArg(i); ret[i].value = arg; diff --git a/src/backend_x64/reg_alloc.h b/src/backend_x64/reg_alloc.h index 028e8510..ac352167 100644 --- a/src/backend_x64/reg_alloc.h +++ b/src/backend_x64/reg_alloc.h @@ -91,10 +91,12 @@ private: class RegAlloc final { public: + using ArgumentInfo = std::array; + explicit RegAlloc(BlockOfCode& code, size_t num_spills, std::function spill_to_addr) : hostloc_info(NonSpillHostLocCount + num_spills), code(code), spill_to_addr(std::move(spill_to_addr)) {} - std::array GetArgumentInfo(IR::Inst* inst); + ArgumentInfo GetArgumentInfo(IR::Inst* inst); Xbyak::Reg64 UseGpr(Argument& arg); Xbyak::Xmm UseXmm(Argument& arg);