diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp index f01d69d91..079e226de 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp | |||
| @@ -7,11 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | namespace Shader::Backend::SPIRV { | 8 | namespace Shader::Backend::SPIRV { |
| 9 | 9 | ||
| 10 | Id EmitCompositeConstructU32x2(EmitContext& ctx, IR::Inst* inst, Id e1, Id e2) { | 10 | Id EmitCompositeConstructU32x2(EmitContext& ctx, Id e1, Id e2) { |
| 11 | const auto info{inst->Flags<IR::CompositeDecoration>()}; | ||
| 12 | if (info.is_constant) { | ||
| 13 | return ctx.ConstantComposite(ctx.U32[2], e1, e2); | ||
| 14 | } | ||
| 15 | return ctx.OpCompositeConstruct(ctx.U32[2], e1, e2); | 11 | return ctx.OpCompositeConstruct(ctx.U32[2], e1, e2); |
| 16 | } | 12 | } |
| 17 | 13 | ||
| @@ -47,12 +43,7 @@ Id EmitCompositeInsertU32x4(EmitContext& ctx, Id composite, Id object, u32 index | |||
| 47 | return ctx.OpCompositeInsert(ctx.U32[4], object, composite, index); | 43 | return ctx.OpCompositeInsert(ctx.U32[4], object, composite, index); |
| 48 | } | 44 | } |
| 49 | 45 | ||
| 50 | Id EmitCompositeConstructF16x2(EmitContext& ctx, IR::Inst* inst, Id e1, Id e2) { | 46 | Id EmitCompositeConstructF16x2(EmitContext& ctx, Id e1, Id e2) { |
| 51 | |||
| 52 | const auto info{inst->Flags<IR::CompositeDecoration>()}; | ||
| 53 | if (info.is_constant) { | ||
| 54 | return ctx.ConstantComposite(ctx.F16[2], e1, e2); | ||
| 55 | } | ||
| 56 | return ctx.OpCompositeConstruct(ctx.F16[2], e1, e2); | 47 | return ctx.OpCompositeConstruct(ctx.F16[2], e1, e2); |
| 57 | } | 48 | } |
| 58 | 49 | ||
| @@ -88,11 +79,7 @@ Id EmitCompositeInsertF16x4(EmitContext& ctx, Id composite, Id object, u32 index | |||
| 88 | return ctx.OpCompositeInsert(ctx.F16[4], object, composite, index); | 79 | return ctx.OpCompositeInsert(ctx.F16[4], object, composite, index); |
| 89 | } | 80 | } |
| 90 | 81 | ||
| 91 | Id EmitCompositeConstructF32x2(EmitContext& ctx, IR::Inst* inst, Id e1, Id e2) { | 82 | Id EmitCompositeConstructF32x2(EmitContext& ctx, Id e1, Id e2) { |
| 92 | const auto info{inst->Flags<IR::CompositeDecoration>()}; | ||
| 93 | if (info.is_constant) { | ||
| 94 | return ctx.ConstantComposite(ctx.F32[2], e1, e2); | ||
| 95 | } | ||
| 96 | return ctx.OpCompositeConstruct(ctx.F32[2], e1, e2); | 83 | return ctx.OpCompositeConstruct(ctx.F32[2], e1, e2); |
| 97 | } | 84 | } |
| 98 | 85 | ||
| @@ -164,15 +151,4 @@ Id EmitCompositeInsertF64x4(EmitContext& ctx, Id composite, Id object, u32 index | |||
| 164 | return ctx.OpCompositeInsert(ctx.F64[4], object, composite, index); | 151 | return ctx.OpCompositeInsert(ctx.F64[4], object, composite, index); |
| 165 | } | 152 | } |
| 166 | 153 | ||
| 167 | Id EmitCompositeConstructArrayU32x2(EmitContext& ctx, IR::Inst* inst, Id e1, Id e2, Id e3, Id e4) { | ||
| 168 | const auto info{inst->Flags<IR::CompositeDecoration>()}; | ||
| 169 | if (info.is_constant) { | ||
| 170 | return ctx.ConstantComposite(ctx.array_U32x2, e1, e2, e3, e4); | ||
| 171 | } | ||
| 172 | if (ctx.profile.support_variadic_ptp) { | ||
| 173 | return ctx.OpCompositeConstruct(ctx.array_U32x2, e1, e2, e3, e4); | ||
| 174 | } | ||
| 175 | return {}; | ||
| 176 | } | ||
| 177 | |||
| 178 | } // namespace Shader::Backend::SPIRV | 154 | } // namespace Shader::Backend::SPIRV |