summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp
new file mode 100644
index 000000000..76ccaffce
--- /dev/null
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp
@@ -0,0 +1,89 @@
1// Copyright 2021 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "shader_recompiler/backend/spirv/emit_spirv.h"
6
7namespace Shader::Backend::SPIRV {
8
9Id EmitConvertS16F16(EmitContext& ctx, Id value) {
10 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToS(ctx.U16, value));
11}
12
13Id EmitConvertS16F32(EmitContext& ctx, Id value) {
14 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToS(ctx.U16, value));
15}
16
17Id EmitConvertS16F64(EmitContext& ctx, Id value) {
18 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToS(ctx.U16, value));
19}
20
21Id EmitConvertS32F16(EmitContext& ctx, Id value) {
22 return ctx.OpConvertFToS(ctx.U32[1], value);
23}
24
25Id EmitConvertS32F32(EmitContext& ctx, Id value) {
26 return ctx.OpConvertFToS(ctx.U32[1], value);
27}
28
29Id EmitConvertS32F64(EmitContext& ctx, Id value) {
30 return ctx.OpConvertFToS(ctx.U32[1], value);
31}
32
33Id EmitConvertS64F16(EmitContext& ctx, Id value) {
34 return ctx.OpConvertFToS(ctx.U64, value);
35}
36
37Id EmitConvertS64F32(EmitContext& ctx, Id value) {
38 return ctx.OpConvertFToS(ctx.U64, value);
39}
40
41Id EmitConvertS64F64(EmitContext& ctx, Id value) {
42 return ctx.OpConvertFToS(ctx.U64, value);
43}
44
45Id EmitConvertU16F16(EmitContext& ctx, Id value) {
46 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToU(ctx.U16, value));
47}
48
49Id EmitConvertU16F32(EmitContext& ctx, Id value) {
50 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToU(ctx.U16, value));
51}
52
53Id EmitConvertU16F64(EmitContext& ctx, Id value) {
54 return ctx.OpUConvert(ctx.U32[1], ctx.OpConvertFToU(ctx.U16, value));
55}
56
57Id EmitConvertU32F16(EmitContext& ctx, Id value) {
58 return ctx.OpConvertFToU(ctx.U32[1], value);
59}
60
61Id EmitConvertU32F32(EmitContext& ctx, Id value) {
62 return ctx.OpConvertFToU(ctx.U32[1], value);
63}
64
65Id EmitConvertU32F64(EmitContext& ctx, Id value) {
66 return ctx.OpConvertFToU(ctx.U32[1], value);
67}
68
69Id EmitConvertU64F16(EmitContext& ctx, Id value) {
70 return ctx.OpConvertFToU(ctx.U64, value);
71}
72
73Id EmitConvertU64F32(EmitContext& ctx, Id value) {
74 return ctx.OpConvertFToU(ctx.U64, value);
75}
76
77Id EmitConvertU64F64(EmitContext& ctx, Id value) {
78 return ctx.OpConvertFToU(ctx.U64, value);
79}
80
81Id EmitConvertU64U32(EmitContext& ctx, Id value) {
82 return ctx.OpUConvert(ctx.U64, value);
83}
84
85Id EmitConvertU32U64(EmitContext& ctx, Id value) {
86 return ctx.OpUConvert(ctx.U32[1], value);
87}
88
89} // namespace Shader::Backend::SPIRV