summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
diff options
context:
space:
mode:
authorGravatar ameerj2021-03-07 22:01:22 -0500
committerGravatar ameerj2021-07-22 21:51:23 -0400
commit7d6ba5b9840a4ba00a9b0f207c1c119d60dcf8b7 (patch)
treed2e7976c767b5b292f0a0318783869045ff0fda6 /src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
parentshader: Implement SHF (diff)
downloadyuzu-7d6ba5b9840a4ba00a9b0f207c1c119d60dcf8b7.tar.gz
yuzu-7d6ba5b9840a4ba00a9b0f207c1c119d60dcf8b7.tar.xz
yuzu-7d6ba5b9840a4ba00a9b0f207c1c119d60dcf8b7.zip
shader: Implement R2P
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
index 5ab3b5e86..c9de204b0 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
@@ -114,8 +114,13 @@ Id EmitBitFieldSExtract(EmitContext& ctx, Id base, Id offset, Id count) {
114 return ctx.OpBitFieldSExtract(ctx.U32[1], base, offset, count); 114 return ctx.OpBitFieldSExtract(ctx.U32[1], base, offset, count);
115} 115}
116 116
117Id EmitBitFieldUExtract(EmitContext& ctx, Id base, Id offset, Id count) { 117Id EmitBitFieldUExtract(EmitContext& ctx, IR::Inst* inst, Id base, Id offset, Id count) {
118 return ctx.OpBitFieldUExtract(ctx.U32[1], base, offset, count); 118 const Id result{ctx.OpBitFieldUExtract(ctx.U32[1], base, offset, count)};
119 if (IR::Inst* const zero{inst->GetAssociatedPseudoOperation(IR::Opcode::GetZeroFromOp)}) {
120 zero->SetDefinition(ctx.OpIEqual(ctx.U1, result, ctx.u32_zero_value));
121 zero->Invalidate();
122 }
123 return result;
119} 124}
120 125
121Id EmitBitReverse32(EmitContext& ctx, Id value) { 126Id EmitBitReverse32(EmitContext& ctx, Id value) {