From 5892ef17922a67383732138c6eb00383481d19bd Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Sat, 25 Mar 2017 14:04:53 -0700 Subject: [PATCH] JitArm64_Integer: extract bit operation lambdas Fixes warnings like: ``` dolphin/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp:132:37: warning: declaration shadows a local variable [-Wshadow] reg_imm(a, s, inst.UIMM, [](u32 a, u32 b) { return a | b; }, &ARM64XEmitter::ORRI2R); ^ /Users/michaelmaltese/Downloads/dolphin/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp:122:7: note: previous declaration is here u32 a = inst.RA, s = inst.RS; ^ ``` --- .../PowerPC/JitArm64/JitArm64_Integer.cpp | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp index 0d94d1ac30..da0a23b490 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp @@ -115,6 +115,21 @@ void JitArm64::reg_imm(u32 d, u32 a, u32 value, u32 (*do_op)(u32, u32), } } +static constexpr u32 BitOR(u32 a, u32 b) +{ + return a | b; +} + +static constexpr u32 BitAND(u32 a, u32 b) +{ + return a & b; +} + +static constexpr u32 BitXOR(u32 a, u32 b) +{ + return a ^ b; +} + void JitArm64::arith_imm(UGeckoInstruction inst) { INSTRUCTION_START @@ -129,23 +144,22 @@ void JitArm64::arith_imm(UGeckoInstruction inst) // NOP return; } - reg_imm(a, s, inst.UIMM, [](u32 a, u32 b) { return a | b; }, &ARM64XEmitter::ORRI2R); + reg_imm(a, s, inst.UIMM, BitOR, &ARM64XEmitter::ORRI2R); break; case 25: // oris - reg_imm(a, s, inst.UIMM << 16, [](u32 a, u32 b) { return a | b; }, &ARM64XEmitter::ORRI2R); + reg_imm(a, s, inst.UIMM << 16, BitOR, &ARM64XEmitter::ORRI2R); break; case 28: // andi - reg_imm(a, s, inst.UIMM, [](u32 a, u32 b) { return a & b; }, &ARM64XEmitter::ANDI2R, true); + reg_imm(a, s, inst.UIMM, BitAND, &ARM64XEmitter::ANDI2R, true); break; case 29: // andis - reg_imm(a, s, inst.UIMM << 16, [](u32 a, u32 b) { return a & b; }, &ARM64XEmitter::ANDI2R, - true); + reg_imm(a, s, inst.UIMM << 16, BitAND, &ARM64XEmitter::ANDI2R, true); break; case 26: // xori - reg_imm(a, s, inst.UIMM, [](u32 a, u32 b) { return a ^ b; }, &ARM64XEmitter::EORI2R); + reg_imm(a, s, inst.UIMM, BitXOR, &ARM64XEmitter::EORI2R); break; case 27: // xoris - reg_imm(a, s, inst.UIMM << 16, [](u32 a, u32 b) { return a ^ b; }, &ARM64XEmitter::EORI2R); + reg_imm(a, s, inst.UIMM << 16, BitXOR, &ARM64XEmitter::EORI2R); break; } }