From b7b93eae13ff372f5fb42c81d80c501f696c8e07 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 22 Apr 2019 22:51:05 +0300 Subject: [PATCH] SPU LLVM: minor bitcast cleanup Remove redundant explicit constand propagation in some instructions. --- rpcs3/Emu/Cell/SPURecompiler.cpp | 57 -------------------------------- 1 file changed, 57 deletions(-) diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 860025a872..93355071e5 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -4986,17 +4986,6 @@ public: void GB(spu_opcode_t op) { const auto a = get_vr(op.ra); - - if (auto cv = llvm::dyn_cast(a.value)) - { - v128 data = get_const_vector(cv, m_pos, 680); - u32 res = 0; - for (u32 i = 0; i < 4; i++) - res |= (data._u32[i] & 1) << i; - set_vr(op.rt, build(0, 0, 0, res)); - return; - } - const auto m = zext(bitcast(trunc(a))); set_vr(op.rt, insert(splat(0), 3, eval(m))); } @@ -5004,17 +4993,6 @@ public: void GBH(spu_opcode_t op) { const auto a = get_vr(op.ra); - - if (auto cv = llvm::dyn_cast(a.value)) - { - v128 data = get_const_vector(cv, m_pos, 684); - u32 res = 0; - for (u32 i = 0; i < 8; i++) - res |= (data._u16[i] & 1) << i; - set_vr(op.rt, build(0, 0, 0, res)); - return; - } - const auto m = zext(bitcast(trunc(a))); set_vr(op.rt, insert(splat(0), 3, eval(m))); } @@ -5022,17 +5000,6 @@ public: void GBB(spu_opcode_t op) { const auto a = get_vr(op.ra); - - if (auto cv = llvm::dyn_cast(a.value)) - { - v128 data = get_const_vector(cv, m_pos, 688); - u32 res = 0; - for (u32 i = 0; i < 16; i++) - res |= (data._u8[i] & 1) << i; - set_vr(op.rt, build(0, 0, 0, res)); - return; - } - const auto m = zext(bitcast(trunc(a))); set_vr(op.rt, insert(splat(0), 3, eval(m))); } @@ -5040,14 +5007,6 @@ public: void FSM(spu_opcode_t op) { const auto v = extract(get_vr(op.ra), 3); - - if (auto cv = llvm::dyn_cast(v.value)) - { - const u64 v = cv->getZExtValue() & 0xf; - set_vr(op.rt, -(build(v >> 0, v >> 1, v >> 2, v >> 3) & 1)); - return; - } - const auto m = bitcast(trunc(v)); set_vr(op.rt, sext(m)); } @@ -5055,14 +5014,6 @@ public: void FSMH(spu_opcode_t op) { const auto v = extract(get_vr(op.ra), 3); - - if (auto cv = llvm::dyn_cast(v.value)) - { - const u64 v = cv->getZExtValue() & 0xff; - set_vr(op.rt, -(build(v >> 0, v >> 1, v >> 2, v >> 3, v >> 4, v >> 5, v >> 6, v >> 7) & 1)); - return; - } - const auto m = bitcast(trunc(v)); set_vr(op.rt, sext(m)); } @@ -5070,14 +5021,6 @@ public: void FSMB(spu_opcode_t op) { const auto v = extract(get_vr(op.ra), 3); - - if (auto cv = llvm::dyn_cast(v.value)) - { - const u64 v = cv->getZExtValue() & 0xffff; - op.i16 = static_cast(v); - return FSMBI(op); - } - const auto m = bitcast(trunc(v)); set_vr(op.rt, sext(m)); }