summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glsl')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl.cpp7
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl.h6
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_instructions.h788
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp114
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp14
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp669
6 files changed, 838 insertions, 760 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.cpp b/src/shader_recompiler/backend/glsl/emit_glsl.cpp
index 0f528b027..d1c58cefc 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl.cpp
@@ -34,8 +34,8 @@ void SetDefinition(EmitContext& ctx, IR::Inst* inst, Args... args) {
34} 34}
35 35
36template <typename ArgType> 36template <typename ArgType>
37ArgType Arg(EmitContext& ctx, const IR::Value& arg) { 37auto Arg(EmitContext& ctx, const IR::Value& arg) {
38 if constexpr (std::is_same_v<ArgType, std::string>) { 38 if constexpr (std::is_same_v<ArgType, std::string_view>) {
39 return ctx.reg_alloc.Consume(arg); 39 return ctx.reg_alloc.Consume(arg);
40 } else if constexpr (std::is_same_v<ArgType, const IR::Value&>) { 40 } else if constexpr (std::is_same_v<ArgType, const IR::Value&>) {
41 return arg; 41 return arg;
@@ -143,7 +143,8 @@ void EmitCode(EmitContext& ctx, const IR::Program& program) {
143 143
144} // Anonymous namespace 144} // Anonymous namespace
145 145
146std::string EmitGLSL(const Profile& profile, IR::Program& program, Bindings& bindings) { 146std::string EmitGLSL(const Profile& profile, const RuntimeInfo&, IR::Program& program,
147 Bindings& bindings) {
147 EmitContext ctx{program, bindings, profile}; 148 EmitContext ctx{program, bindings, profile};
148 // ctx.SetupBuffers(); 149 // ctx.SetupBuffers();
149 EmitCode(ctx, program); 150 EmitCode(ctx, program);
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.h b/src/shader_recompiler/backend/glsl/emit_glsl.h
index a7c666107..fe221fa7c 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl.h
+++ b/src/shader_recompiler/backend/glsl/emit_glsl.h
@@ -12,12 +12,12 @@
12 12
13namespace Shader::Backend::GLSL { 13namespace Shader::Backend::GLSL {
14 14
15[[nodiscard]] std::string EmitGLSL(const Profile& profile, IR::Program& program, 15[[nodiscard]] std::string EmitGLSL(const Profile& profile, const RuntimeInfo& runtime_info,
16 Bindings& binding); 16 IR::Program& program, Bindings& bindings);
17 17
18[[nodiscard]] inline std::string EmitGLSL(const Profile& profile, IR::Program& program) { 18[[nodiscard]] inline std::string EmitGLSL(const Profile& profile, IR::Program& program) {
19 Bindings binding; 19 Bindings binding;
20 return EmitGLSL(profile, program, binding); 20 return EmitGLSL(profile, {}, program, binding);
21} 21}
22 22
23} // namespace Shader::Backend::GLSL 23} // namespace Shader::Backend::GLSL
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
index 681e0bdb9..ff0c9cd95 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
@@ -31,15 +31,15 @@ void EmitIdentity(EmitContext& ctx, IR::Inst& inst, const IR::Value& value);
31void EmitConditionRef(EmitContext& ctx, IR::Inst& inst, const IR::Value& value); 31void EmitConditionRef(EmitContext& ctx, IR::Inst& inst, const IR::Value& value);
32void EmitReference(EmitContext&); 32void EmitReference(EmitContext&);
33void EmitPhiMove(EmitContext& ctx, const IR::Value& phi, const IR::Value& value); 33void EmitPhiMove(EmitContext& ctx, const IR::Value& phi, const IR::Value& value);
34void EmitBranch(EmitContext& ctx, std::string label); 34void EmitBranch(EmitContext& ctx, std::string_view label);
35void EmitBranchConditional(EmitContext& ctx, std::string condition, std::string true_label, 35void EmitBranchConditional(EmitContext& ctx, std::string_view condition,
36 std::string false_label); 36 std::string_view true_label, std::string_view false_label);
37void EmitLoopMerge(EmitContext& ctx, std::string merge_label, std::string continue_label); 37void EmitLoopMerge(EmitContext& ctx, std::string_view merge_label, std::string_view continue_label);
38void EmitSelectionMerge(EmitContext& ctx, std::string merge_label); 38void EmitSelectionMerge(EmitContext& ctx, std::string_view merge_label);
39void EmitReturn(EmitContext& ctx); 39void EmitReturn(EmitContext& ctx);
40void EmitJoin(EmitContext& ctx); 40void EmitJoin(EmitContext& ctx);
41void EmitUnreachable(EmitContext& ctx); 41void EmitUnreachable(EmitContext& ctx);
42void EmitDemoteToHelperInvocation(EmitContext& ctx, std::string continue_label); 42void EmitDemoteToHelperInvocation(EmitContext& ctx, std::string_view continue_label);
43void EmitBarrier(EmitContext& ctx); 43void EmitBarrier(EmitContext& ctx);
44void EmitWorkgroupMemoryBarrier(EmitContext& ctx); 44void EmitWorkgroupMemoryBarrier(EmitContext& ctx);
45void EmitDeviceMemoryBarrier(EmitContext& ctx); 45void EmitDeviceMemoryBarrier(EmitContext& ctx);
@@ -63,16 +63,17 @@ void EmitGetCbufU32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
63 const IR::Value& offset); 63 const IR::Value& offset);
64void EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 64void EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
65void EmitGetCbufU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 65void EmitGetCbufU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
66void EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, std::string vertex); 66void EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view vertex);
67void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string value, std::string vertex); 67void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view value,
68void EmitGetAttributeIndexed(EmitContext& ctx, std::string offset, std::string vertex); 68 std::string_view vertex);
69void EmitSetAttributeIndexed(EmitContext& ctx, std::string offset, std::string value, 69void EmitGetAttributeIndexed(EmitContext& ctx, std::string_view offset, std::string_view vertex);
70 std::string vertex); 70void EmitSetAttributeIndexed(EmitContext& ctx, std::string_view offset, std::string_view value,
71 std::string_view vertex);
71void EmitGetPatch(EmitContext& ctx, IR::Patch patch); 72void EmitGetPatch(EmitContext& ctx, IR::Patch patch);
72void EmitSetPatch(EmitContext& ctx, IR::Patch patch, std::string value); 73void EmitSetPatch(EmitContext& ctx, IR::Patch patch, std::string_view value);
73void EmitSetFragColor(EmitContext& ctx, u32 index, u32 component, std::string value); 74void EmitSetFragColor(EmitContext& ctx, u32 index, u32 component, std::string_view value);
74void EmitSetSampleMask(EmitContext& ctx, std::string value); 75void EmitSetSampleMask(EmitContext& ctx, std::string_view value);
75void EmitSetFragDepth(EmitContext& ctx, std::string value); 76void EmitSetFragDepth(EmitContext& ctx, std::string_view value);
76void EmitGetZFlag(EmitContext& ctx); 77void EmitGetZFlag(EmitContext& ctx);
77void EmitGetSFlag(EmitContext& ctx); 78void EmitGetSFlag(EmitContext& ctx);
78void EmitGetCFlag(EmitContext& ctx); 79void EmitGetCFlag(EmitContext& ctx);
@@ -87,8 +88,8 @@ void EmitInvocationId(EmitContext& ctx);
87void EmitSampleId(EmitContext& ctx); 88void EmitSampleId(EmitContext& ctx);
88void EmitIsHelperInvocation(EmitContext& ctx); 89void EmitIsHelperInvocation(EmitContext& ctx);
89void EmitYDirection(EmitContext& ctx); 90void EmitYDirection(EmitContext& ctx);
90void EmitLoadLocal(EmitContext& ctx, std::string word_offset); 91void EmitLoadLocal(EmitContext& ctx, std::string_view word_offset);
91void EmitWriteLocal(EmitContext& ctx, std::string word_offset, std::string value); 92void EmitWriteLocal(EmitContext& ctx, std::string_view word_offset, std::string_view value);
92void EmitUndefU1(EmitContext& ctx); 93void EmitUndefU1(EmitContext& ctx);
93void EmitUndefU8(EmitContext& ctx); 94void EmitUndefU8(EmitContext& ctx);
94void EmitUndefU16(EmitContext& ctx); 95void EmitUndefU16(EmitContext& ctx);
@@ -98,16 +99,16 @@ void EmitLoadGlobalU8(EmitContext& ctx);
98void EmitLoadGlobalS8(EmitContext& ctx); 99void EmitLoadGlobalS8(EmitContext& ctx);
99void EmitLoadGlobalU16(EmitContext& ctx); 100void EmitLoadGlobalU16(EmitContext& ctx);
100void EmitLoadGlobalS16(EmitContext& ctx); 101void EmitLoadGlobalS16(EmitContext& ctx);
101void EmitLoadGlobal32(EmitContext& ctx, std::string address); 102void EmitLoadGlobal32(EmitContext& ctx, std::string_view address);
102void EmitLoadGlobal64(EmitContext& ctx, std::string address); 103void EmitLoadGlobal64(EmitContext& ctx, std::string_view address);
103void EmitLoadGlobal128(EmitContext& ctx, std::string address); 104void EmitLoadGlobal128(EmitContext& ctx, std::string_view address);
104void EmitWriteGlobalU8(EmitContext& ctx); 105void EmitWriteGlobalU8(EmitContext& ctx);
105void EmitWriteGlobalS8(EmitContext& ctx); 106void EmitWriteGlobalS8(EmitContext& ctx);
106void EmitWriteGlobalU16(EmitContext& ctx); 107void EmitWriteGlobalU16(EmitContext& ctx);
107void EmitWriteGlobalS16(EmitContext& ctx); 108void EmitWriteGlobalS16(EmitContext& ctx);
108void EmitWriteGlobal32(EmitContext& ctx, std::string address, std::string value); 109void EmitWriteGlobal32(EmitContext& ctx, std::string_view address, std::string_view value);
109void EmitWriteGlobal64(EmitContext& ctx, std::string address, std::string value); 110void EmitWriteGlobal64(EmitContext& ctx, std::string_view address, std::string_view value);
110void EmitWriteGlobal128(EmitContext& ctx, std::string address, std::string value); 111void EmitWriteGlobal128(EmitContext& ctx, std::string_view address, std::string_view value);
111void EmitLoadStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 112void EmitLoadStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
112void EmitLoadStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 113void EmitLoadStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
113void EmitLoadStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 114void EmitLoadStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
@@ -116,69 +117,72 @@ void EmitLoadStorage32(EmitContext& ctx, const IR::Value& binding, const IR::Val
116void EmitLoadStorage64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 117void EmitLoadStorage64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
117void EmitLoadStorage128(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset); 118void EmitLoadStorage128(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset);
118void EmitWriteStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 119void EmitWriteStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
119 std::string value); 120 std::string_view value);
120void EmitWriteStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 121void EmitWriteStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
121 std::string value); 122 std::string_view value);
122void EmitWriteStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 123void EmitWriteStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
123 std::string value); 124 std::string_view value);
124void EmitWriteStorageS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 125void EmitWriteStorageS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
125 std::string value); 126 std::string_view value);
126void EmitWriteStorage32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 127void EmitWriteStorage32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
127 std::string value); 128 std::string_view value);
128void EmitWriteStorage64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 129void EmitWriteStorage64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
129 std::string value); 130 std::string_view value);
130void EmitWriteStorage128(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 131void EmitWriteStorage128(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
131 std::string value); 132 std::string_view value);
132void EmitLoadSharedU8(EmitContext& ctx, std::string offset); 133void EmitLoadSharedU8(EmitContext& ctx, std::string_view offset);
133void EmitLoadSharedS8(EmitContext& ctx, std::string offset); 134void EmitLoadSharedS8(EmitContext& ctx, std::string_view offset);
134void EmitLoadSharedU16(EmitContext& ctx, std::string offset); 135void EmitLoadSharedU16(EmitContext& ctx, std::string_view offset);
135void EmitLoadSharedS16(EmitContext& ctx, std::string offset); 136void EmitLoadSharedS16(EmitContext& ctx, std::string_view offset);
136void EmitLoadSharedU32(EmitContext& ctx, std::string offset); 137void EmitLoadSharedU32(EmitContext& ctx, std::string_view offset);
137void EmitLoadSharedU64(EmitContext& ctx, std::string offset); 138void EmitLoadSharedU64(EmitContext& ctx, std::string_view offset);
138void EmitLoadSharedU128(EmitContext& ctx, std::string offset); 139void EmitLoadSharedU128(EmitContext& ctx, std::string_view offset);
139void EmitWriteSharedU8(EmitContext& ctx, std::string offset, std::string value); 140void EmitWriteSharedU8(EmitContext& ctx, std::string_view offset, std::string_view value);
140void EmitWriteSharedU16(EmitContext& ctx, std::string offset, std::string value); 141void EmitWriteSharedU16(EmitContext& ctx, std::string_view offset, std::string_view value);
141void EmitWriteSharedU32(EmitContext& ctx, std::string offset, std::string value); 142void EmitWriteSharedU32(EmitContext& ctx, std::string_view offset, std::string_view value);
142void EmitWriteSharedU64(EmitContext& ctx, std::string offset, std::string value); 143void EmitWriteSharedU64(EmitContext& ctx, std::string_view offset, std::string_view value);
143void EmitWriteSharedU128(EmitContext& ctx, std::string offset, std::string value); 144void EmitWriteSharedU128(EmitContext& ctx, std::string_view offset, std::string_view value);
144void EmitCompositeConstructU32x2(EmitContext& ctx, std::string e1, std::string e2); 145void EmitCompositeConstructU32x2(EmitContext& ctx, std::string_view e1, std::string_view e2);
145void EmitCompositeConstructU32x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3); 146void EmitCompositeConstructU32x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
146void EmitCompositeConstructU32x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 147 std::string_view e3);
147 std::string e4); 148void EmitCompositeConstructU32x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
148void EmitCompositeExtractU32x2(EmitContext& ctx, std::string composite, u32 index); 149 std::string_view e3, std::string_view e4);
149void EmitCompositeExtractU32x3(EmitContext& ctx, std::string composite, u32 index); 150void EmitCompositeExtractU32x2(EmitContext& ctx, std::string_view composite, u32 index);
150void EmitCompositeExtractU32x4(EmitContext& ctx, std::string composite, u32 index); 151void EmitCompositeExtractU32x3(EmitContext& ctx, std::string_view composite, u32 index);
151void EmitCompositeInsertU32x2(EmitContext& ctx, std::string composite, std::string object, 152void EmitCompositeExtractU32x4(EmitContext& ctx, std::string_view composite, u32 index);
153void EmitCompositeInsertU32x2(EmitContext& ctx, std::string_view composite, std::string_view object,
152 u32 index); 154 u32 index);
153void EmitCompositeInsertU32x3(EmitContext& ctx, std::string composite, std::string object, 155void EmitCompositeInsertU32x3(EmitContext& ctx, std::string_view composite, std::string_view object,
154 u32 index); 156 u32 index);
155void EmitCompositeInsertU32x4(EmitContext& ctx, std::string composite, std::string object, 157void EmitCompositeInsertU32x4(EmitContext& ctx, std::string_view composite, std::string_view object,
156 u32 index); 158 u32 index);
157void EmitCompositeConstructF16x2(EmitContext& ctx, std::string e1, std::string e2); 159void EmitCompositeConstructF16x2(EmitContext& ctx, std::string_view e1, std::string_view e2);
158void EmitCompositeConstructF16x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3); 160void EmitCompositeConstructF16x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
159void EmitCompositeConstructF16x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 161 std::string_view e3);
160 std::string e4); 162void EmitCompositeConstructF16x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
161void EmitCompositeExtractF16x2(EmitContext& ctx, std::string composite, u32 index); 163 std::string_view e3, std::string_view e4);
162void EmitCompositeExtractF16x3(EmitContext& ctx, std::string composite, u32 index); 164void EmitCompositeExtractF16x2(EmitContext& ctx, std::string_view composite, u32 index);
163void EmitCompositeExtractF16x4(EmitContext& ctx, std::string composite, u32 index); 165void EmitCompositeExtractF16x3(EmitContext& ctx, std::string_view composite, u32 index);
164void EmitCompositeInsertF16x2(EmitContext& ctx, std::string composite, std::string object, 166void EmitCompositeExtractF16x4(EmitContext& ctx, std::string_view composite, u32 index);
167void EmitCompositeInsertF16x2(EmitContext& ctx, std::string_view composite, std::string_view object,
165 u32 index); 168 u32 index);
166void EmitCompositeInsertF16x3(EmitContext& ctx, std::string composite, std::string object, 169void EmitCompositeInsertF16x3(EmitContext& ctx, std::string_view composite, std::string_view object,
167 u32 index); 170 u32 index);
168void EmitCompositeInsertF16x4(EmitContext& ctx, std::string composite, std::string object, 171void EmitCompositeInsertF16x4(EmitContext& ctx, std::string_view composite, std::string_view object,
169 u32 index); 172 u32 index);
170void EmitCompositeConstructF32x2(EmitContext& ctx, std::string e1, std::string e2); 173void EmitCompositeConstructF32x2(EmitContext& ctx, std::string_view e1, std::string_view e2);
171void EmitCompositeConstructF32x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3); 174void EmitCompositeConstructF32x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
172void EmitCompositeConstructF32x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 175 std::string_view e3);
173 std::string e4); 176void EmitCompositeConstructF32x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
174void EmitCompositeExtractF32x2(EmitContext& ctx, std::string composite, u32 index); 177 std::string_view e3, std::string_view e4);
175void EmitCompositeExtractF32x3(EmitContext& ctx, std::string composite, u32 index); 178void EmitCompositeExtractF32x2(EmitContext& ctx, std::string_view composite, u32 index);
176void EmitCompositeExtractF32x4(EmitContext& ctx, std::string composite, u32 index); 179void EmitCompositeExtractF32x3(EmitContext& ctx, std::string_view composite, u32 index);
177void EmitCompositeInsertF32x2(EmitContext& ctx, std::string composite, std::string object, 180void EmitCompositeExtractF32x4(EmitContext& ctx, std::string_view composite, u32 index);
181void EmitCompositeInsertF32x2(EmitContext& ctx, std::string_view composite, std::string_view object,
178 u32 index); 182 u32 index);
179void EmitCompositeInsertF32x3(EmitContext& ctx, std::string composite, std::string object, 183void EmitCompositeInsertF32x3(EmitContext& ctx, std::string_view composite, std::string_view object,
180 u32 index); 184 u32 index);
181void EmitCompositeInsertF32x4(EmitContext& ctx, std::string composite, std::string object, 185void EmitCompositeInsertF32x4(EmitContext& ctx, std::string_view composite, std::string_view object,
182 u32 index); 186 u32 index);
183void EmitCompositeConstructF64x2(EmitContext& ctx); 187void EmitCompositeConstructF64x2(EmitContext& ctx);
184void EmitCompositeConstructF64x3(EmitContext& ctx); 188void EmitCompositeConstructF64x3(EmitContext& ctx);
@@ -186,251 +190,274 @@ void EmitCompositeConstructF64x4(EmitContext& ctx);
186void EmitCompositeExtractF64x2(EmitContext& ctx); 190void EmitCompositeExtractF64x2(EmitContext& ctx);
187void EmitCompositeExtractF64x3(EmitContext& ctx); 191void EmitCompositeExtractF64x3(EmitContext& ctx);
188void EmitCompositeExtractF64x4(EmitContext& ctx); 192void EmitCompositeExtractF64x4(EmitContext& ctx);
189void EmitCompositeInsertF64x2(EmitContext& ctx, std::string composite, std::string object, 193void EmitCompositeInsertF64x2(EmitContext& ctx, std::string_view composite, std::string_view object,
190 u32 index); 194 u32 index);
191void EmitCompositeInsertF64x3(EmitContext& ctx, std::string composite, std::string object, 195void EmitCompositeInsertF64x3(EmitContext& ctx, std::string_view composite, std::string_view object,
192 u32 index); 196 u32 index);
193void EmitCompositeInsertF64x4(EmitContext& ctx, std::string composite, std::string object, 197void EmitCompositeInsertF64x4(EmitContext& ctx, std::string_view composite, std::string_view object,
194 u32 index); 198 u32 index);
195void EmitSelectU1(EmitContext& ctx, std::string cond, std::string true_value, 199void EmitSelectU1(EmitContext& ctx, std::string_view cond, std::string_view true_value,
196 std::string false_value); 200 std::string_view false_value);
197void EmitSelectU8(EmitContext& ctx, std::string cond, std::string true_value, 201void EmitSelectU8(EmitContext& ctx, std::string_view cond, std::string_view true_value,
198 std::string false_value); 202 std::string_view false_value);
199void EmitSelectU16(EmitContext& ctx, std::string cond, std::string true_value, 203void EmitSelectU16(EmitContext& ctx, std::string_view cond, std::string_view true_value,
200 std::string false_value); 204 std::string_view false_value);
201void EmitSelectU32(EmitContext& ctx, std::string cond, std::string true_value, 205void EmitSelectU32(EmitContext& ctx, std::string_view cond, std::string_view true_value,
202 std::string false_value); 206 std::string_view false_value);
203void EmitSelectU64(EmitContext& ctx, std::string cond, std::string true_value, 207void EmitSelectU64(EmitContext& ctx, std::string_view cond, std::string_view true_value,
204 std::string false_value); 208 std::string_view false_value);
205void EmitSelectF16(EmitContext& ctx, std::string cond, std::string true_value, 209void EmitSelectF16(EmitContext& ctx, std::string_view cond, std::string_view true_value,
206 std::string false_value); 210 std::string_view false_value);
207void EmitSelectF32(EmitContext& ctx, std::string cond, std::string true_value, 211void EmitSelectF32(EmitContext& ctx, std::string_view cond, std::string_view true_value,
208 std::string false_value); 212 std::string_view false_value);
209void EmitSelectF64(EmitContext& ctx, std::string cond, std::string true_value, 213void EmitSelectF64(EmitContext& ctx, std::string_view cond, std::string_view true_value,
210 std::string false_value); 214 std::string_view false_value);
211void EmitBitCastU16F16(EmitContext& ctx); 215void EmitBitCastU16F16(EmitContext& ctx);
212void EmitBitCastU32F32(EmitContext& ctx, std::string value); 216void EmitBitCastU32F32(EmitContext& ctx, std::string_view value);
213void EmitBitCastU64F64(EmitContext& ctx); 217void EmitBitCastU64F64(EmitContext& ctx);
214void EmitBitCastF16U16(EmitContext& ctx); 218void EmitBitCastF16U16(EmitContext& ctx);
215void EmitBitCastF32U32(EmitContext& ctx, std::string value); 219void EmitBitCastF32U32(EmitContext& ctx, std::string_view value);
216void EmitBitCastF64U64(EmitContext& ctx); 220void EmitBitCastF64U64(EmitContext& ctx);
217void EmitPackUint2x32(EmitContext& ctx, std::string value); 221void EmitPackUint2x32(EmitContext& ctx, std::string_view value);
218void EmitUnpackUint2x32(EmitContext& ctx, std::string value); 222void EmitUnpackUint2x32(EmitContext& ctx, std::string_view value);
219void EmitPackFloat2x16(EmitContext& ctx, std::string value); 223void EmitPackFloat2x16(EmitContext& ctx, std::string_view value);
220void EmitUnpackFloat2x16(EmitContext& ctx, std::string value); 224void EmitUnpackFloat2x16(EmitContext& ctx, std::string_view value);
221void EmitPackHalf2x16(EmitContext& ctx, std::string value); 225void EmitPackHalf2x16(EmitContext& ctx, std::string_view value);
222void EmitUnpackHalf2x16(EmitContext& ctx, std::string value); 226void EmitUnpackHalf2x16(EmitContext& ctx, std::string_view value);
223void EmitPackDouble2x32(EmitContext& ctx, std::string value); 227void EmitPackDouble2x32(EmitContext& ctx, std::string_view value);
224void EmitUnpackDouble2x32(EmitContext& ctx, std::string value); 228void EmitUnpackDouble2x32(EmitContext& ctx, std::string_view value);
225void EmitGetZeroFromOp(EmitContext& ctx); 229void EmitGetZeroFromOp(EmitContext& ctx);
226void EmitGetSignFromOp(EmitContext& ctx); 230void EmitGetSignFromOp(EmitContext& ctx);
227void EmitGetCarryFromOp(EmitContext& ctx); 231void EmitGetCarryFromOp(EmitContext& ctx);
228void EmitGetOverflowFromOp(EmitContext& ctx); 232void EmitGetOverflowFromOp(EmitContext& ctx);
229void EmitGetSparseFromOp(EmitContext& ctx); 233void EmitGetSparseFromOp(EmitContext& ctx);
230void EmitGetInBoundsFromOp(EmitContext& ctx); 234void EmitGetInBoundsFromOp(EmitContext& ctx);
231void EmitFPAbs16(EmitContext& ctx, std::string value); 235void EmitFPAbs16(EmitContext& ctx, std::string_view value);
232void EmitFPAbs32(EmitContext& ctx, std::string value); 236void EmitFPAbs32(EmitContext& ctx, std::string_view value);
233void EmitFPAbs64(EmitContext& ctx, std::string value); 237void EmitFPAbs64(EmitContext& ctx, std::string_view value);
234void EmitFPAdd16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 238void EmitFPAdd16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
235void EmitFPAdd32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 239void EmitFPAdd32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
236void EmitFPAdd64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 240void EmitFPAdd64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
237void EmitFPFma16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c); 241void EmitFPFma16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
238void EmitFPFma32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c); 242 std::string_view c);
239void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c); 243void EmitFPFma32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
240void EmitFPMax32(EmitContext& ctx, std::string a, std::string b); 244 std::string_view c);
241void EmitFPMax64(EmitContext& ctx, std::string a, std::string b); 245void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
242void EmitFPMin32(EmitContext& ctx, std::string a, std::string b); 246 std::string_view c);
243void EmitFPMin64(EmitContext& ctx, std::string a, std::string b); 247void EmitFPMax32(EmitContext& ctx, std::string_view a, std::string_view b);
244void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 248void EmitFPMax64(EmitContext& ctx, std::string_view a, std::string_view b);
245void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 249void EmitFPMin32(EmitContext& ctx, std::string_view a, std::string_view b);
246void EmitFPMul64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 250void EmitFPMin64(EmitContext& ctx, std::string_view a, std::string_view b);
247void EmitFPNeg16(EmitContext& ctx, std::string value); 251void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
248void EmitFPNeg32(EmitContext& ctx, std::string value); 252void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
249void EmitFPNeg64(EmitContext& ctx, std::string value); 253void EmitFPMul64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
250void EmitFPSin(EmitContext& ctx, std::string value); 254void EmitFPNeg16(EmitContext& ctx, std::string_view value);
251void EmitFPCos(EmitContext& ctx, std::string value); 255void EmitFPNeg32(EmitContext& ctx, std::string_view value);
252void EmitFPExp2(EmitContext& ctx, std::string value); 256void EmitFPNeg64(EmitContext& ctx, std::string_view value);
253void EmitFPLog2(EmitContext& ctx, std::string value); 257void EmitFPSin(EmitContext& ctx, std::string_view value);
254void EmitFPRecip32(EmitContext& ctx, std::string value); 258void EmitFPCos(EmitContext& ctx, std::string_view value);
255void EmitFPRecip64(EmitContext& ctx, std::string value); 259void EmitFPExp2(EmitContext& ctx, std::string_view value);
256void EmitFPRecipSqrt32(EmitContext& ctx, std::string value); 260void EmitFPLog2(EmitContext& ctx, std::string_view value);
257void EmitFPRecipSqrt64(EmitContext& ctx, std::string value); 261void EmitFPRecip32(EmitContext& ctx, std::string_view value);
258void EmitFPSqrt(EmitContext& ctx, std::string value); 262void EmitFPRecip64(EmitContext& ctx, std::string_view value);
259void EmitFPSaturate16(EmitContext& ctx, std::string value); 263void EmitFPRecipSqrt32(EmitContext& ctx, std::string_view value);
260void EmitFPSaturate32(EmitContext& ctx, std::string value); 264void EmitFPRecipSqrt64(EmitContext& ctx, std::string_view value);
261void EmitFPSaturate64(EmitContext& ctx, std::string value); 265void EmitFPSqrt(EmitContext& ctx, std::string_view value);
262void EmitFPClamp16(EmitContext& ctx, std::string value, std::string min_value, 266void EmitFPSaturate16(EmitContext& ctx, std::string_view value);
263 std::string max_value); 267void EmitFPSaturate32(EmitContext& ctx, std::string_view value);
264void EmitFPClamp32(EmitContext& ctx, std::string value, std::string min_value, 268void EmitFPSaturate64(EmitContext& ctx, std::string_view value);
265 std::string max_value); 269void EmitFPClamp16(EmitContext& ctx, std::string_view value, std::string_view min_value,
266void EmitFPClamp64(EmitContext& ctx, std::string value, std::string min_value, 270 std::string_view max_value);
267 std::string max_value); 271void EmitFPClamp32(EmitContext& ctx, std::string_view value, std::string_view min_value,
268void EmitFPRoundEven16(EmitContext& ctx, std::string value); 272 std::string_view max_value);
269void EmitFPRoundEven32(EmitContext& ctx, std::string value); 273void EmitFPClamp64(EmitContext& ctx, std::string_view value, std::string_view min_value,
270void EmitFPRoundEven64(EmitContext& ctx, std::string value); 274 std::string_view max_value);
271void EmitFPFloor16(EmitContext& ctx, std::string value); 275void EmitFPRoundEven16(EmitContext& ctx, std::string_view value);
272void EmitFPFloor32(EmitContext& ctx, std::string value); 276void EmitFPRoundEven32(EmitContext& ctx, std::string_view value);
273void EmitFPFloor64(EmitContext& ctx, std::string value); 277void EmitFPRoundEven64(EmitContext& ctx, std::string_view value);
274void EmitFPCeil16(EmitContext& ctx, std::string value); 278void EmitFPFloor16(EmitContext& ctx, std::string_view value);
275void EmitFPCeil32(EmitContext& ctx, std::string value); 279void EmitFPFloor32(EmitContext& ctx, std::string_view value);
276void EmitFPCeil64(EmitContext& ctx, std::string value); 280void EmitFPFloor64(EmitContext& ctx, std::string_view value);
277void EmitFPTrunc16(EmitContext& ctx, std::string value); 281void EmitFPCeil16(EmitContext& ctx, std::string_view value);
278void EmitFPTrunc32(EmitContext& ctx, std::string value); 282void EmitFPCeil32(EmitContext& ctx, std::string_view value);
279void EmitFPTrunc64(EmitContext& ctx, std::string value); 283void EmitFPCeil64(EmitContext& ctx, std::string_view value);
280void EmitFPOrdEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 284void EmitFPTrunc16(EmitContext& ctx, std::string_view value);
281void EmitFPOrdEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 285void EmitFPTrunc32(EmitContext& ctx, std::string_view value);
282void EmitFPOrdEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 286void EmitFPTrunc64(EmitContext& ctx, std::string_view value);
283void EmitFPUnordEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 287void EmitFPOrdEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
284void EmitFPUnordEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 288void EmitFPOrdEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
285void EmitFPUnordEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 289void EmitFPOrdEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
286void EmitFPOrdNotEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 290void EmitFPUnordEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
287void EmitFPOrdNotEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 291void EmitFPUnordEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
288void EmitFPOrdNotEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 292void EmitFPUnordEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
289void EmitFPUnordNotEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 293void EmitFPOrdNotEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
290void EmitFPUnordNotEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 294void EmitFPOrdNotEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
291void EmitFPUnordNotEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 295void EmitFPOrdNotEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
292void EmitFPOrdLessThan16(EmitContext& ctx, std::string lhs, std::string rhs); 296void EmitFPUnordNotEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
293void EmitFPOrdLessThan32(EmitContext& ctx, std::string lhs, std::string rhs); 297void EmitFPUnordNotEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
294void EmitFPOrdLessThan64(EmitContext& ctx, std::string lhs, std::string rhs); 298void EmitFPUnordNotEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
295void EmitFPUnordLessThan16(EmitContext& ctx, std::string lhs, std::string rhs); 299void EmitFPOrdLessThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
296void EmitFPUnordLessThan32(EmitContext& ctx, std::string lhs, std::string rhs); 300void EmitFPOrdLessThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
297void EmitFPUnordLessThan64(EmitContext& ctx, std::string lhs, std::string rhs); 301void EmitFPOrdLessThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
298void EmitFPOrdGreaterThan16(EmitContext& ctx, std::string lhs, std::string rhs); 302void EmitFPUnordLessThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
299void EmitFPOrdGreaterThan32(EmitContext& ctx, std::string lhs, std::string rhs); 303void EmitFPUnordLessThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
300void EmitFPOrdGreaterThan64(EmitContext& ctx, std::string lhs, std::string rhs); 304void EmitFPUnordLessThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
301void EmitFPUnordGreaterThan16(EmitContext& ctx, std::string lhs, std::string rhs); 305void EmitFPOrdGreaterThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
302void EmitFPUnordGreaterThan32(EmitContext& ctx, std::string lhs, std::string rhs); 306void EmitFPOrdGreaterThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
303void EmitFPUnordGreaterThan64(EmitContext& ctx, std::string lhs, std::string rhs); 307void EmitFPOrdGreaterThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
304void EmitFPOrdLessThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 308void EmitFPUnordGreaterThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
305void EmitFPOrdLessThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 309void EmitFPUnordGreaterThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
306void EmitFPOrdLessThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 310void EmitFPUnordGreaterThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
307void EmitFPUnordLessThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 311void EmitFPOrdLessThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
308void EmitFPUnordLessThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 312void EmitFPOrdLessThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
309void EmitFPUnordLessThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 313void EmitFPOrdLessThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
310void EmitFPOrdGreaterThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 314void EmitFPUnordLessThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
311void EmitFPOrdGreaterThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 315void EmitFPUnordLessThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
312void EmitFPOrdGreaterThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 316void EmitFPUnordLessThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
313void EmitFPUnordGreaterThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs); 317void EmitFPOrdGreaterThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
314void EmitFPUnordGreaterThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs); 318void EmitFPOrdGreaterThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
315void EmitFPUnordGreaterThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs); 319void EmitFPOrdGreaterThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
316void EmitFPIsNan16(EmitContext& ctx, std::string value); 320void EmitFPUnordGreaterThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
317void EmitFPIsNan32(EmitContext& ctx, std::string value); 321void EmitFPUnordGreaterThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
318void EmitFPIsNan64(EmitContext& ctx, std::string value); 322void EmitFPUnordGreaterThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs);
319void EmitIAdd32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 323void EmitFPIsNan16(EmitContext& ctx, std::string_view value);
320void EmitIAdd64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 324void EmitFPIsNan32(EmitContext& ctx, std::string_view value);
321void EmitISub32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 325void EmitFPIsNan64(EmitContext& ctx, std::string_view value);
322void EmitISub64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 326void EmitIAdd32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
323void EmitIMul32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 327void EmitIAdd64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
324void EmitINeg32(EmitContext& ctx, IR::Inst& inst, std::string value); 328void EmitISub32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
325void EmitINeg64(EmitContext& ctx, IR::Inst& inst, std::string value); 329void EmitISub64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
326void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, std::string value); 330void EmitIMul32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
327void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, std::string value); 331void EmitINeg32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
328void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, std::string base, std::string shift); 332void EmitINeg64(EmitContext& ctx, IR::Inst& inst, std::string_view value);
329void EmitShiftLeftLogical64(EmitContext& ctx, IR::Inst& inst, std::string base, std::string shift); 333void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
330void EmitShiftRightLogical32(EmitContext& ctx, IR::Inst& inst, std::string base, std::string shift); 334void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, std::string_view value);
331void EmitShiftRightLogical64(EmitContext& ctx, IR::Inst& inst, std::string base, std::string shift); 335void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, std::string_view base,
332void EmitShiftRightArithmetic32(EmitContext& ctx, IR::Inst& inst, std::string base, 336 std::string_view shift);
333 std::string shift); 337void EmitShiftLeftLogical64(EmitContext& ctx, IR::Inst& inst, std::string_view base,
334void EmitShiftRightArithmetic64(EmitContext& ctx, IR::Inst& inst, std::string base, 338 std::string_view shift);
335 std::string shift); 339void EmitShiftRightLogical32(EmitContext& ctx, IR::Inst& inst, std::string_view base,
336void EmitBitwiseAnd32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 340 std::string_view shift);
337void EmitBitwiseOr32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 341void EmitShiftRightLogical64(EmitContext& ctx, IR::Inst& inst, std::string_view base,
338void EmitBitwiseXor32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 342 std::string_view shift);
339void EmitBitFieldInsert(EmitContext& ctx, IR::Inst& inst, std::string base, std::string insert, 343void EmitShiftRightArithmetic32(EmitContext& ctx, IR::Inst& inst, std::string_view base,
340 std::string offset, std::string count); 344 std::string_view shift);
341void EmitBitFieldSExtract(EmitContext& ctx, IR::Inst& inst, std::string base, std::string offset, 345void EmitShiftRightArithmetic64(EmitContext& ctx, IR::Inst& inst, std::string_view base,
342 std::string count); 346 std::string_view shift);
343void EmitBitFieldUExtract(EmitContext& ctx, IR::Inst& inst, std::string base, std::string offset, 347void EmitBitwiseAnd32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
344 std::string count); 348void EmitBitwiseOr32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
345void EmitBitReverse32(EmitContext& ctx, IR::Inst& inst, std::string value); 349void EmitBitwiseXor32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
346void EmitBitCount32(EmitContext& ctx, IR::Inst& inst, std::string value); 350void EmitBitFieldInsert(EmitContext& ctx, IR::Inst& inst, std::string_view base,
347void EmitBitwiseNot32(EmitContext& ctx, IR::Inst& inst, std::string value); 351 std::string_view insert, std::string_view offset, std::string_view count);
348void EmitFindSMsb32(EmitContext& ctx, IR::Inst& inst, std::string value); 352void EmitBitFieldSExtract(EmitContext& ctx, IR::Inst& inst, std::string_view base,
349void EmitFindUMsb32(EmitContext& ctx, IR::Inst& inst, std::string value); 353 std::string_view offset, std::string_view count);
350void EmitSMin32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 354void EmitBitFieldUExtract(EmitContext& ctx, IR::Inst& inst, std::string_view base,
351void EmitUMin32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 355 std::string_view offset, std::string_view count);
352void EmitSMax32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 356void EmitBitReverse32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
353void EmitUMax32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b); 357void EmitBitCount32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
354void EmitSClamp32(EmitContext& ctx, IR::Inst& inst, std::string value, std::string min, 358void EmitBitwiseNot32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
355 std::string max); 359void EmitFindSMsb32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
356void EmitUClamp32(EmitContext& ctx, IR::Inst& inst, std::string value, std::string min, 360void EmitFindUMsb32(EmitContext& ctx, IR::Inst& inst, std::string_view value);
357 std::string max); 361void EmitSMin32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
358void EmitSLessThan(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 362void EmitUMin32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
359void EmitULessThan(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 363void EmitSMax32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
360void EmitIEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 364void EmitUMax32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b);
361void EmitSLessThanEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 365void EmitSClamp32(EmitContext& ctx, IR::Inst& inst, std::string_view value, std::string_view min,
362void EmitULessThanEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 366 std::string_view max);
363void EmitSGreaterThan(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 367void EmitUClamp32(EmitContext& ctx, IR::Inst& inst, std::string_view value, std::string_view min,
364void EmitUGreaterThan(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 368 std::string_view max);
365void EmitINotEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 369void EmitSLessThan(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
366void EmitSGreaterThanEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 370void EmitULessThan(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
367void EmitUGreaterThanEqual(EmitContext& ctx, IR::Inst& inst, std::string lhs, std::string rhs); 371void EmitIEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
368void EmitSharedAtomicIAdd32(EmitContext& ctx, std::string pointer_offset, std::string value); 372void EmitSLessThanEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs,
369void EmitSharedAtomicSMin32(EmitContext& ctx, std::string pointer_offset, std::string value); 373 std::string_view rhs);
370void EmitSharedAtomicUMin32(EmitContext& ctx, std::string pointer_offset, std::string value); 374void EmitULessThanEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs,
371void EmitSharedAtomicSMax32(EmitContext& ctx, std::string pointer_offset, std::string value); 375 std::string_view rhs);
372void EmitSharedAtomicUMax32(EmitContext& ctx, std::string pointer_offset, std::string value); 376void EmitSGreaterThan(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
373void EmitSharedAtomicInc32(EmitContext& ctx, std::string pointer_offset, std::string value); 377void EmitUGreaterThan(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
374void EmitSharedAtomicDec32(EmitContext& ctx, std::string pointer_offset, std::string value); 378void EmitINotEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs);
375void EmitSharedAtomicAnd32(EmitContext& ctx, std::string pointer_offset, std::string value); 379void EmitSGreaterThanEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs,
376void EmitSharedAtomicOr32(EmitContext& ctx, std::string pointer_offset, std::string value); 380 std::string_view rhs);
377void EmitSharedAtomicXor32(EmitContext& ctx, std::string pointer_offset, std::string value); 381void EmitUGreaterThanEqual(EmitContext& ctx, IR::Inst& inst, std::string_view lhs,
378void EmitSharedAtomicExchange32(EmitContext& ctx, std::string pointer_offset, std::string value); 382 std::string_view rhs);
379void EmitSharedAtomicExchange64(EmitContext& ctx, std::string pointer_offset, std::string value); 383void EmitSharedAtomicIAdd32(EmitContext& ctx, std::string_view pointer_offset,
384 std::string_view value);
385void EmitSharedAtomicSMin32(EmitContext& ctx, std::string_view pointer_offset,
386 std::string_view value);
387void EmitSharedAtomicUMin32(EmitContext& ctx, std::string_view pointer_offset,
388 std::string_view value);
389void EmitSharedAtomicSMax32(EmitContext& ctx, std::string_view pointer_offset,
390 std::string_view value);
391void EmitSharedAtomicUMax32(EmitContext& ctx, std::string_view pointer_offset,
392 std::string_view value);
393void EmitSharedAtomicInc32(EmitContext& ctx, std::string_view pointer_offset,
394 std::string_view value);
395void EmitSharedAtomicDec32(EmitContext& ctx, std::string_view pointer_offset,
396 std::string_view value);
397void EmitSharedAtomicAnd32(EmitContext& ctx, std::string_view pointer_offset,
398 std::string_view value);
399void EmitSharedAtomicOr32(EmitContext& ctx, std::string_view pointer_offset,
400 std::string_view value);
401void EmitSharedAtomicXor32(EmitContext& ctx, std::string_view pointer_offset,
402 std::string_view value);
403void EmitSharedAtomicExchange32(EmitContext& ctx, std::string_view pointer_offset,
404 std::string_view value);
405void EmitSharedAtomicExchange64(EmitContext& ctx, std::string_view pointer_offset,
406 std::string_view value);
380void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 407void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
381 std::string value); 408 std::string_view value);
382void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 409void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
383 std::string value); 410 std::string_view value);
384void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 411void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
385 std::string value); 412 std::string_view value);
386void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 413void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
387 std::string value); 414 std::string_view value);
388void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 415void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
389 std::string value); 416 std::string_view value);
390void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 417void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
391 std::string value); 418 std::string_view value);
392void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 419void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
393 std::string value); 420 std::string_view value);
394void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 421void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
395 std::string value); 422 std::string_view value);
396void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 423void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
397 std::string value); 424 std::string_view value);
398void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 425void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
399 std::string value); 426 std::string_view value);
400void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding, 427void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding,
401 const IR::Value& offset, std::string value); 428 const IR::Value& offset, std::string_view value);
402void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 429void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
403 std::string value); 430 std::string_view value);
404void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 431void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
405 std::string value); 432 std::string_view value);
406void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 433void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
407 std::string value); 434 std::string_view value);
408void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 435void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
409 std::string value); 436 std::string_view value);
410void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 437void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
411 std::string value); 438 std::string_view value);
412void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 439void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
413 std::string value); 440 std::string_view value);
414void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 441void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
415 std::string value); 442 std::string_view value);
416void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 443void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
417 std::string value); 444 std::string_view value);
418void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, 445void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding,
419 const IR::Value& offset, std::string value); 446 const IR::Value& offset, std::string_view value);
420void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 447void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
421 std::string value); 448 std::string_view value);
422void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 449void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
423 std::string value); 450 std::string_view value);
424void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 451void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
425 std::string value); 452 std::string_view value);
426void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 453void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
427 std::string value); 454 std::string_view value);
428void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 455void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
429 std::string value); 456 std::string_view value);
430void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 457void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
431 std::string value); 458 std::string_view value);
432void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 459void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
433 std::string value); 460 std::string_view value);
434void EmitGlobalAtomicIAdd32(EmitContext& ctx); 461void EmitGlobalAtomicIAdd32(EmitContext& ctx);
435void EmitGlobalAtomicSMin32(EmitContext& ctx); 462void EmitGlobalAtomicSMin32(EmitContext& ctx);
436void EmitGlobalAtomicUMin32(EmitContext& ctx); 463void EmitGlobalAtomicUMin32(EmitContext& ctx);
@@ -460,58 +487,58 @@ void EmitGlobalAtomicMinF16x2(EmitContext& ctx);
460void EmitGlobalAtomicMinF32x2(EmitContext& ctx); 487void EmitGlobalAtomicMinF32x2(EmitContext& ctx);
461void EmitGlobalAtomicMaxF16x2(EmitContext& ctx); 488void EmitGlobalAtomicMaxF16x2(EmitContext& ctx);
462void EmitGlobalAtomicMaxF32x2(EmitContext& ctx); 489void EmitGlobalAtomicMaxF32x2(EmitContext& ctx);
463void EmitLogicalOr(EmitContext& ctx, std::string a, std::string b); 490void EmitLogicalOr(EmitContext& ctx, std::string_view a, std::string_view b);
464void EmitLogicalAnd(EmitContext& ctx, std::string a, std::string b); 491void EmitLogicalAnd(EmitContext& ctx, std::string_view a, std::string_view b);
465void EmitLogicalXor(EmitContext& ctx, std::string a, std::string b); 492void EmitLogicalXor(EmitContext& ctx, std::string_view a, std::string_view b);
466void EmitLogicalNot(EmitContext& ctx, std::string value); 493void EmitLogicalNot(EmitContext& ctx, std::string_view value);
467void EmitConvertS16F16(EmitContext& ctx, std::string value); 494void EmitConvertS16F16(EmitContext& ctx, std::string_view value);
468void EmitConvertS16F32(EmitContext& ctx, std::string value); 495void EmitConvertS16F32(EmitContext& ctx, std::string_view value);
469void EmitConvertS16F64(EmitContext& ctx, std::string value); 496void EmitConvertS16F64(EmitContext& ctx, std::string_view value);
470void EmitConvertS32F16(EmitContext& ctx, std::string value); 497void EmitConvertS32F16(EmitContext& ctx, std::string_view value);
471void EmitConvertS32F32(EmitContext& ctx, std::string value); 498void EmitConvertS32F32(EmitContext& ctx, std::string_view value);
472void EmitConvertS32F64(EmitContext& ctx, std::string value); 499void EmitConvertS32F64(EmitContext& ctx, std::string_view value);
473void EmitConvertS64F16(EmitContext& ctx, std::string value); 500void EmitConvertS64F16(EmitContext& ctx, std::string_view value);
474void EmitConvertS64F32(EmitContext& ctx, std::string value); 501void EmitConvertS64F32(EmitContext& ctx, std::string_view value);
475void EmitConvertS64F64(EmitContext& ctx, std::string value); 502void EmitConvertS64F64(EmitContext& ctx, std::string_view value);
476void EmitConvertU16F16(EmitContext& ctx, std::string value); 503void EmitConvertU16F16(EmitContext& ctx, std::string_view value);
477void EmitConvertU16F32(EmitContext& ctx, std::string value); 504void EmitConvertU16F32(EmitContext& ctx, std::string_view value);
478void EmitConvertU16F64(EmitContext& ctx, std::string value); 505void EmitConvertU16F64(EmitContext& ctx, std::string_view value);
479void EmitConvertU32F16(EmitContext& ctx, std::string value); 506void EmitConvertU32F16(EmitContext& ctx, std::string_view value);
480void EmitConvertU32F32(EmitContext& ctx, std::string value); 507void EmitConvertU32F32(EmitContext& ctx, std::string_view value);
481void EmitConvertU32F64(EmitContext& ctx, std::string value); 508void EmitConvertU32F64(EmitContext& ctx, std::string_view value);
482void EmitConvertU64F16(EmitContext& ctx, std::string value); 509void EmitConvertU64F16(EmitContext& ctx, std::string_view value);
483void EmitConvertU64F32(EmitContext& ctx, std::string value); 510void EmitConvertU64F32(EmitContext& ctx, std::string_view value);
484void EmitConvertU64F64(EmitContext& ctx, std::string value); 511void EmitConvertU64F64(EmitContext& ctx, std::string_view value);
485void EmitConvertU64U32(EmitContext& ctx, std::string value); 512void EmitConvertU64U32(EmitContext& ctx, std::string_view value);
486void EmitConvertU32U64(EmitContext& ctx, std::string value); 513void EmitConvertU32U64(EmitContext& ctx, std::string_view value);
487void EmitConvertF16F32(EmitContext& ctx, std::string value); 514void EmitConvertF16F32(EmitContext& ctx, std::string_view value);
488void EmitConvertF32F16(EmitContext& ctx, std::string value); 515void EmitConvertF32F16(EmitContext& ctx, std::string_view value);
489void EmitConvertF32F64(EmitContext& ctx, std::string value); 516void EmitConvertF32F64(EmitContext& ctx, std::string_view value);
490void EmitConvertF64F32(EmitContext& ctx, std::string value); 517void EmitConvertF64F32(EmitContext& ctx, std::string_view value);
491void EmitConvertF16S8(EmitContext& ctx, std::string value); 518void EmitConvertF16S8(EmitContext& ctx, std::string_view value);
492void EmitConvertF16S16(EmitContext& ctx, std::string value); 519void EmitConvertF16S16(EmitContext& ctx, std::string_view value);
493void EmitConvertF16S32(EmitContext& ctx, std::string value); 520void EmitConvertF16S32(EmitContext& ctx, std::string_view value);
494void EmitConvertF16S64(EmitContext& ctx, std::string value); 521void EmitConvertF16S64(EmitContext& ctx, std::string_view value);
495void EmitConvertF16U8(EmitContext& ctx, std::string value); 522void EmitConvertF16U8(EmitContext& ctx, std::string_view value);
496void EmitConvertF16U16(EmitContext& ctx, std::string value); 523void EmitConvertF16U16(EmitContext& ctx, std::string_view value);
497void EmitConvertF16U32(EmitContext& ctx, std::string value); 524void EmitConvertF16U32(EmitContext& ctx, std::string_view value);
498void EmitConvertF16U64(EmitContext& ctx, std::string value); 525void EmitConvertF16U64(EmitContext& ctx, std::string_view value);
499void EmitConvertF32S8(EmitContext& ctx, std::string value); 526void EmitConvertF32S8(EmitContext& ctx, std::string_view value);
500void EmitConvertF32S16(EmitContext& ctx, std::string value); 527void EmitConvertF32S16(EmitContext& ctx, std::string_view value);
501void EmitConvertF32S32(EmitContext& ctx, std::string value); 528void EmitConvertF32S32(EmitContext& ctx, std::string_view value);
502void EmitConvertF32S64(EmitContext& ctx, std::string value); 529void EmitConvertF32S64(EmitContext& ctx, std::string_view value);
503void EmitConvertF32U8(EmitContext& ctx, std::string value); 530void EmitConvertF32U8(EmitContext& ctx, std::string_view value);
504void EmitConvertF32U16(EmitContext& ctx, std::string value); 531void EmitConvertF32U16(EmitContext& ctx, std::string_view value);
505void EmitConvertF32U32(EmitContext& ctx, std::string value); 532void EmitConvertF32U32(EmitContext& ctx, std::string_view value);
506void EmitConvertF32U64(EmitContext& ctx, std::string value); 533void EmitConvertF32U64(EmitContext& ctx, std::string_view value);
507void EmitConvertF64S8(EmitContext& ctx, std::string value); 534void EmitConvertF64S8(EmitContext& ctx, std::string_view value);
508void EmitConvertF64S16(EmitContext& ctx, std::string value); 535void EmitConvertF64S16(EmitContext& ctx, std::string_view value);
509void EmitConvertF64S32(EmitContext& ctx, std::string value); 536void EmitConvertF64S32(EmitContext& ctx, std::string_view value);
510void EmitConvertF64S64(EmitContext& ctx, std::string value); 537void EmitConvertF64S64(EmitContext& ctx, std::string_view value);
511void EmitConvertF64U8(EmitContext& ctx, std::string value); 538void EmitConvertF64U8(EmitContext& ctx, std::string_view value);
512void EmitConvertF64U16(EmitContext& ctx, std::string value); 539void EmitConvertF64U16(EmitContext& ctx, std::string_view value);
513void EmitConvertF64U32(EmitContext& ctx, std::string value); 540void EmitConvertF64U32(EmitContext& ctx, std::string_view value);
514void EmitConvertF64U64(EmitContext& ctx, std::string value); 541void EmitConvertF64U64(EmitContext& ctx, std::string_view value);
515void EmitBindlessImageSampleImplicitLod(EmitContext&); 542void EmitBindlessImageSampleImplicitLod(EmitContext&);
516void EmitBindlessImageSampleExplicitLod(EmitContext&); 543void EmitBindlessImageSampleExplicitLod(EmitContext&);
517void EmitBindlessImageSampleDrefImplicitLod(EmitContext&); 544void EmitBindlessImageSampleDrefImplicitLod(EmitContext&);
@@ -537,31 +564,36 @@ void EmitBoundImageGradient(EmitContext&);
537void EmitBoundImageRead(EmitContext&); 564void EmitBoundImageRead(EmitContext&);
538void EmitBoundImageWrite(EmitContext&); 565void EmitBoundImageWrite(EmitContext&);
539void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 566void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
540 std::string coords, std::string bias_lc, const IR::Value& offset); 567 std::string_view coords, std::string_view bias_lc,
568 const IR::Value& offset);
541void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 569void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
542 std::string coords, std::string lod_lc, const IR::Value& offset); 570 std::string_view coords, std::string_view lod_lc,
571 const IR::Value& offset);
543void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 572void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
544 std::string coords, std::string dref, std::string bias_lc, 573 std::string_view coords, std::string_view dref,
545 const IR::Value& offset); 574 std::string_view bias_lc, const IR::Value& offset);
546void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 575void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
547 std::string coords, std::string dref, std::string lod_lc, 576 std::string_view coords, std::string_view dref,
548 const IR::Value& offset); 577 std::string_view lod_lc, const IR::Value& offset);
549void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 578void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
550 const IR::Value& offset, const IR::Value& offset2); 579 std::string_view coords, const IR::Value& offset, const IR::Value& offset2);
551void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 580void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
552 std::string coords, const IR::Value& offset, const IR::Value& offset2, 581 std::string_view coords, const IR::Value& offset, const IR::Value& offset2,
553 std::string dref); 582 std::string_view dref);
554void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 583void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
555 std::string offset, std::string lod, std::string ms); 584 std::string_view coords, std::string_view offset, std::string_view lod,
585 std::string_view ms);
556void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 586void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
557 std::string lod); 587 std::string_view lod);
558void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 588void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
559 std::string coords); 589 std::string_view coords);
560void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 590void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
561 std::string derivates, std::string offset, std::string lod_clamp); 591 std::string_view coords, std::string_view derivates, std::string_view offset,
562void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords); 592 std::string_view lod_clamp);
563void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 593void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
564 std::string color); 594 std::string_view coords);
595void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
596 std::string_view coords, std::string_view color);
565void EmitBindlessImageAtomicIAdd32(EmitContext&); 597void EmitBindlessImageAtomicIAdd32(EmitContext&);
566void EmitBindlessImageAtomicSMin32(EmitContext&); 598void EmitBindlessImageAtomicSMin32(EmitContext&);
567void EmitBindlessImageAtomicUMin32(EmitContext&); 599void EmitBindlessImageAtomicUMin32(EmitContext&);
@@ -585,49 +617,53 @@ void EmitBoundImageAtomicOr32(EmitContext&);
585void EmitBoundImageAtomicXor32(EmitContext&); 617void EmitBoundImageAtomicXor32(EmitContext&);
586void EmitBoundImageAtomicExchange32(EmitContext&); 618void EmitBoundImageAtomicExchange32(EmitContext&);
587void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 619void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
588 std::string coords, std::string value); 620 std::string_view coords, std::string_view value);
589void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 621void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
590 std::string coords, std::string value); 622 std::string_view coords, std::string_view value);
591void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 623void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
592 std::string coords, std::string value); 624 std::string_view coords, std::string_view value);
593void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 625void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
594 std::string coords, std::string value); 626 std::string_view coords, std::string_view value);
595void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 627void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
596 std::string coords, std::string value); 628 std::string_view coords, std::string_view value);
597void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 629void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
598 std::string coords, std::string value); 630 std::string_view coords, std::string_view value);
599void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 631void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
600 std::string coords, std::string value); 632 std::string_view coords, std::string_view value);
601void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 633void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
602 std::string coords, std::string value); 634 std::string_view coords, std::string_view value);
603void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 635void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
604 std::string coords, std::string value); 636 std::string_view coords, std::string_view value);
605void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 637void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
606 std::string coords, std::string value); 638 std::string_view coords, std::string_view value);
607void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 639void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
608 std::string coords, std::string value); 640 std::string_view coords, std::string_view value);
609void EmitLaneId(EmitContext& ctx); 641void EmitLaneId(EmitContext& ctx);
610void EmitVoteAll(EmitContext& ctx, std::string pred); 642void EmitVoteAll(EmitContext& ctx, std::string_view pred);
611void EmitVoteAny(EmitContext& ctx, std::string pred); 643void EmitVoteAny(EmitContext& ctx, std::string_view pred);
612void EmitVoteEqual(EmitContext& ctx, std::string pred); 644void EmitVoteEqual(EmitContext& ctx, std::string_view pred);
613void EmitSubgroupBallot(EmitContext& ctx, std::string pred); 645void EmitSubgroupBallot(EmitContext& ctx, std::string_view pred);
614void EmitSubgroupEqMask(EmitContext& ctx); 646void EmitSubgroupEqMask(EmitContext& ctx);
615void EmitSubgroupLtMask(EmitContext& ctx); 647void EmitSubgroupLtMask(EmitContext& ctx);
616void EmitSubgroupLeMask(EmitContext& ctx); 648void EmitSubgroupLeMask(EmitContext& ctx);
617void EmitSubgroupGtMask(EmitContext& ctx); 649void EmitSubgroupGtMask(EmitContext& ctx);
618void EmitSubgroupGeMask(EmitContext& ctx); 650void EmitSubgroupGeMask(EmitContext& ctx);
619void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 651void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, std::string_view value,
620 std::string clamp, std::string segmentation_mask); 652 std::string_view index, std::string_view clamp,
621void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 653 std::string_view segmentation_mask);
622 std::string clamp, std::string segmentation_mask); 654void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, std::string_view value, std::string_view index,
623void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 655 std::string_view clamp, std::string_view segmentation_mask);
624 std::string clamp, std::string segmentation_mask); 656void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, std::string_view value,
625void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 657 std::string_view index, std::string_view clamp,
626 std::string clamp, std::string segmentation_mask); 658 std::string_view segmentation_mask);
627void EmitFSwizzleAdd(EmitContext& ctx, std::string op_a, std::string op_b, std::string swizzle); 659void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, std::string_view value,
628void EmitDPdxFine(EmitContext& ctx, std::string op_a); 660 std::string_view index, std::string_view clamp,
629void EmitDPdyFine(EmitContext& ctx, std::string op_a); 661 std::string_view segmentation_mask);
630void EmitDPdxCoarse(EmitContext& ctx, std::string op_a); 662void EmitFSwizzleAdd(EmitContext& ctx, std::string_view op_a, std::string_view op_b,
631void EmitDPdyCoarse(EmitContext& ctx, std::string op_a); 663 std::string_view swizzle);
664void EmitDPdxFine(EmitContext& ctx, std::string_view op_a);
665void EmitDPdyFine(EmitContext& ctx, std::string_view op_a);
666void EmitDPdxCoarse(EmitContext& ctx, std::string_view op_a);
667void EmitDPdyCoarse(EmitContext& ctx, std::string_view op_a);
632 668
633} // namespace Shader::Backend::GLSL 669} // namespace Shader::Backend::GLSL
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
index 0dadf1d93..a22313141 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
@@ -12,221 +12,233 @@
12 12
13namespace Shader::Backend::GLSL { 13namespace Shader::Backend::GLSL {
14void EmitIAdd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 14void EmitIAdd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
15 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 15 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
16 ctx.AddU32("{}={}+{};", inst, a, b); 16 ctx.AddU32("{}={}+{};", inst, a, b);
17} 17}
18 18
19void EmitIAdd64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 19void EmitIAdd64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
20 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 20 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
21 throw NotImplementedException("GLSL Instruction"); 21 throw NotImplementedException("GLSL Instruction");
22} 22}
23 23
24void EmitISub32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 24void EmitISub32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
25 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 25 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
26 throw NotImplementedException("GLSL Instruction"); 26 throw NotImplementedException("GLSL Instruction");
27} 27}
28 28
29void EmitISub64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 29void EmitISub64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
30 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 30 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
31 throw NotImplementedException("GLSL Instruction"); 31 throw NotImplementedException("GLSL Instruction");
32} 32}
33 33
34void EmitIMul32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 34void EmitIMul32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
35 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 35 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
36 throw NotImplementedException("GLSL Instruction"); 36 throw NotImplementedException("GLSL Instruction");
37} 37}
38 38
39void EmitINeg32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 39void EmitINeg32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
40 [[maybe_unused]] std::string value) { 40 [[maybe_unused]] std::string_view value) {
41 ctx.AddU32("{}=-{};", inst, value); 41 ctx.AddU32("{}=-{};", inst, value);
42} 42}
43 43
44void EmitINeg64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 44void EmitINeg64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
45 [[maybe_unused]] std::string value) { 45 [[maybe_unused]] std::string_view value) {
46 throw NotImplementedException("GLSL Instruction"); 46 throw NotImplementedException("GLSL Instruction");
47} 47}
48 48
49void EmitIAbs32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 49void EmitIAbs32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
50 [[maybe_unused]] std::string value) { 50 [[maybe_unused]] std::string_view value) {
51 throw NotImplementedException("GLSL Instruction"); 51 throw NotImplementedException("GLSL Instruction");
52} 52}
53 53
54void EmitIAbs64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 54void EmitIAbs64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
55 [[maybe_unused]] std::string value) { 55 [[maybe_unused]] std::string_view value) {
56 throw NotImplementedException("GLSL Instruction"); 56 throw NotImplementedException("GLSL Instruction");
57} 57}
58 58
59void EmitShiftLeftLogical32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 59void EmitShiftLeftLogical32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
60 [[maybe_unused]] std::string base, [[maybe_unused]] std::string shift) { 60 [[maybe_unused]] std::string_view base,
61 [[maybe_unused]] std::string_view shift) {
61 throw NotImplementedException("GLSL Instruction"); 62 throw NotImplementedException("GLSL Instruction");
62} 63}
63 64
64void EmitShiftLeftLogical64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 65void EmitShiftLeftLogical64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
65 [[maybe_unused]] std::string base, [[maybe_unused]] std::string shift) { 66 [[maybe_unused]] std::string_view base,
67 [[maybe_unused]] std::string_view shift) {
66 throw NotImplementedException("GLSL Instruction"); 68 throw NotImplementedException("GLSL Instruction");
67} 69}
68 70
69void EmitShiftRightLogical32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 71void EmitShiftRightLogical32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
70 [[maybe_unused]] std::string base, 72 [[maybe_unused]] std::string_view base,
71 [[maybe_unused]] std::string shift) { 73 [[maybe_unused]] std::string_view shift) {
72 throw NotImplementedException("GLSL Instruction"); 74 throw NotImplementedException("GLSL Instruction");
73} 75}
74 76
75void EmitShiftRightLogical64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 77void EmitShiftRightLogical64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
76 [[maybe_unused]] std::string base, 78 [[maybe_unused]] std::string_view base,
77 [[maybe_unused]] std::string shift) { 79 [[maybe_unused]] std::string_view shift) {
78 throw NotImplementedException("GLSL Instruction"); 80 throw NotImplementedException("GLSL Instruction");
79} 81}
80 82
81void EmitShiftRightArithmetic32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 83void EmitShiftRightArithmetic32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
82 [[maybe_unused]] std::string base, 84 [[maybe_unused]] std::string_view base,
83 [[maybe_unused]] std::string shift) { 85 [[maybe_unused]] std::string_view shift) {
84 throw NotImplementedException("GLSL Instruction"); 86 throw NotImplementedException("GLSL Instruction");
85} 87}
86 88
87void EmitShiftRightArithmetic64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 89void EmitShiftRightArithmetic64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
88 [[maybe_unused]] std::string base, 90 [[maybe_unused]] std::string_view base,
89 [[maybe_unused]] std::string shift) { 91 [[maybe_unused]] std::string_view shift) {
90 throw NotImplementedException("GLSL Instruction"); 92 throw NotImplementedException("GLSL Instruction");
91} 93}
92 94
93void EmitBitwiseAnd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 95void EmitBitwiseAnd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
94 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 96 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
95 throw NotImplementedException("GLSL Instruction"); 97 throw NotImplementedException("GLSL Instruction");
96} 98}
97 99
98void EmitBitwiseOr32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 100void EmitBitwiseOr32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
99 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 101 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
100 throw NotImplementedException("GLSL Instruction"); 102 throw NotImplementedException("GLSL Instruction");
101} 103}
102 104
103void EmitBitwiseXor32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 105void EmitBitwiseXor32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
104 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 106 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
105 throw NotImplementedException("GLSL Instruction"); 107 throw NotImplementedException("GLSL Instruction");
106} 108}
107 109
108void EmitBitFieldInsert([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 110void EmitBitFieldInsert([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
109 [[maybe_unused]] std::string base, [[maybe_unused]] std::string insert, 111 [[maybe_unused]] std::string_view base,
110 [[maybe_unused]] std::string offset, std::string count) { 112 [[maybe_unused]] std::string_view insert,
113 [[maybe_unused]] std::string_view offset,
114 [[maybe_unused]] std::string_view count) {
111 throw NotImplementedException("GLSL Instruction"); 115 throw NotImplementedException("GLSL Instruction");
112} 116}
113 117
114void EmitBitFieldSExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 118void EmitBitFieldSExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
115 [[maybe_unused]] std::string base, [[maybe_unused]] std::string offset, 119 [[maybe_unused]] std::string_view base,
116 std::string count) { 120 [[maybe_unused]] std::string_view offset,
121 [[maybe_unused]] std::string_view count) {
117 throw NotImplementedException("GLSL Instruction"); 122 throw NotImplementedException("GLSL Instruction");
118} 123}
119 124
120void EmitBitFieldUExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 125void EmitBitFieldUExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
121 [[maybe_unused]] std::string base, [[maybe_unused]] std::string offset, 126 [[maybe_unused]] std::string_view base,
122 std::string count) { 127 [[maybe_unused]] std::string_view offset,
128 [[maybe_unused]] std::string_view count) {
123 throw NotImplementedException("GLSL Instruction"); 129 throw NotImplementedException("GLSL Instruction");
124} 130}
125 131
126void EmitBitReverse32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 132void EmitBitReverse32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
127 [[maybe_unused]] std::string value) { 133 [[maybe_unused]] std::string_view value) {
128 throw NotImplementedException("GLSL Instruction"); 134 throw NotImplementedException("GLSL Instruction");
129} 135}
130 136
131void EmitBitCount32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 137void EmitBitCount32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
132 [[maybe_unused]] std::string value) { 138 [[maybe_unused]] std::string_view value) {
133 throw NotImplementedException("GLSL Instruction"); 139 throw NotImplementedException("GLSL Instruction");
134} 140}
135 141
136void EmitBitwiseNot32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 142void EmitBitwiseNot32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
137 [[maybe_unused]] std::string value) { 143 [[maybe_unused]] std::string_view value) {
138 throw NotImplementedException("GLSL Instruction"); 144 throw NotImplementedException("GLSL Instruction");
139} 145}
140 146
141void EmitFindSMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 147void EmitFindSMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
142 [[maybe_unused]] std::string value) { 148 [[maybe_unused]] std::string_view value) {
143 throw NotImplementedException("GLSL Instruction"); 149 throw NotImplementedException("GLSL Instruction");
144} 150}
145 151
146void EmitFindUMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 152void EmitFindUMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
147 [[maybe_unused]] std::string value) { 153 [[maybe_unused]] std::string_view value) {
148 throw NotImplementedException("GLSL Instruction"); 154 throw NotImplementedException("GLSL Instruction");
149} 155}
150 156
151void EmitSMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 157void EmitSMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
152 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 158 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
153 throw NotImplementedException("GLSL Instruction"); 159 throw NotImplementedException("GLSL Instruction");
154} 160}
155 161
156void EmitUMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 162void EmitUMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
157 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 163 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
158 throw NotImplementedException("GLSL Instruction"); 164 throw NotImplementedException("GLSL Instruction");
159} 165}
160 166
161void EmitSMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 167void EmitSMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
162 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 168 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
163 throw NotImplementedException("GLSL Instruction"); 169 throw NotImplementedException("GLSL Instruction");
164} 170}
165 171
166void EmitUMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 172void EmitUMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
167 [[maybe_unused]] std::string a, [[maybe_unused]] std::string b) { 173 [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
168 throw NotImplementedException("GLSL Instruction"); 174 throw NotImplementedException("GLSL Instruction");
169} 175}
170 176
171void EmitSClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 177void EmitSClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
172 [[maybe_unused]] std::string value, [[maybe_unused]] std::string min, 178 [[maybe_unused]] std::string_view value, [[maybe_unused]] std::string_view min,
173 std::string max) { 179 [[maybe_unused]] std::string_view max) {
174 throw NotImplementedException("GLSL Instruction"); 180 throw NotImplementedException("GLSL Instruction");
175} 181}
176 182
177void EmitUClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 183void EmitUClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
178 [[maybe_unused]] std::string value, [[maybe_unused]] std::string min, 184 [[maybe_unused]] std::string_view value, [[maybe_unused]] std::string_view min,
179 std::string max) { 185 [[maybe_unused]] std::string_view max) {
180 throw NotImplementedException("GLSL Instruction"); 186 throw NotImplementedException("GLSL Instruction");
181} 187}
182 188
183void EmitSLessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 189void EmitSLessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
184 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 190 [[maybe_unused]] std::string_view lhs, [[maybe_unused]] std::string_view rhs) {
185 throw NotImplementedException("GLSL Instruction"); 191 throw NotImplementedException("GLSL Instruction");
186} 192}
187 193
188void EmitULessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 194void EmitULessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
189 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 195 [[maybe_unused]] std::string_view lhs, [[maybe_unused]] std::string_view rhs) {
190 throw NotImplementedException("GLSL Instruction"); 196 throw NotImplementedException("GLSL Instruction");
191} 197}
192 198
193void EmitIEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 199void EmitIEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
194 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 200 [[maybe_unused]] std::string_view lhs, [[maybe_unused]] std::string_view rhs) {
195 throw NotImplementedException("GLSL Instruction"); 201 throw NotImplementedException("GLSL Instruction");
196} 202}
197 203
198void EmitSLessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 204void EmitSLessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
199 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 205 [[maybe_unused]] std::string_view lhs,
206 [[maybe_unused]] std::string_view rhs) {
200 throw NotImplementedException("GLSL Instruction"); 207 throw NotImplementedException("GLSL Instruction");
201} 208}
202 209
203void EmitULessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 210void EmitULessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
204 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 211 [[maybe_unused]] std::string_view lhs,
212 [[maybe_unused]] std::string_view rhs) {
205 throw NotImplementedException("GLSL Instruction"); 213 throw NotImplementedException("GLSL Instruction");
206} 214}
207 215
208void EmitSGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 216void EmitSGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
209 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 217 [[maybe_unused]] std::string_view lhs,
218 [[maybe_unused]] std::string_view rhs) {
210 throw NotImplementedException("GLSL Instruction"); 219 throw NotImplementedException("GLSL Instruction");
211} 220}
212 221
213void EmitUGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 222void EmitUGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
214 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 223 [[maybe_unused]] std::string_view lhs,
224 [[maybe_unused]] std::string_view rhs) {
215 throw NotImplementedException("GLSL Instruction"); 225 throw NotImplementedException("GLSL Instruction");
216} 226}
217 227
218void EmitINotEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 228void EmitINotEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
219 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 229 [[maybe_unused]] std::string_view lhs, [[maybe_unused]] std::string_view rhs) {
220 throw NotImplementedException("GLSL Instruction"); 230 throw NotImplementedException("GLSL Instruction");
221} 231}
222 232
223void EmitSGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 233void EmitSGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
224 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 234 [[maybe_unused]] std::string_view lhs,
235 [[maybe_unused]] std::string_view rhs) {
225 throw NotImplementedException("GLSL Instruction"); 236 throw NotImplementedException("GLSL Instruction");
226} 237}
227 238
228void EmitUGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, 239void EmitUGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
229 [[maybe_unused]] std::string lhs, [[maybe_unused]] std::string rhs) { 240 [[maybe_unused]] std::string_view lhs,
241 [[maybe_unused]] std::string_view rhs) {
230 throw NotImplementedException("GLSL Instruction"); 242 throw NotImplementedException("GLSL Instruction");
231} 243}
232} // namespace Shader::Backend::GLSL 244} // namespace Shader::Backend::GLSL
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
index 8cdb9abfa..2344fd2a9 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
@@ -51,49 +51,49 @@ void EmitLoadStorage128([[maybe_unused]] EmitContext& ctx,
51void EmitWriteStorageU8([[maybe_unused]] EmitContext& ctx, 51void EmitWriteStorageU8([[maybe_unused]] EmitContext& ctx,
52 [[maybe_unused]] const IR::Value& binding, 52 [[maybe_unused]] const IR::Value& binding,
53 [[maybe_unused]] const IR::Value& offset, 53 [[maybe_unused]] const IR::Value& offset,
54 [[maybe_unused]] std::string value) { 54 [[maybe_unused]] std::string_view value) {
55 throw NotImplementedException("GLSL Instrucion"); 55 throw NotImplementedException("GLSL Instrucion");
56} 56}
57 57
58void EmitWriteStorageS8([[maybe_unused]] EmitContext& ctx, 58void EmitWriteStorageS8([[maybe_unused]] EmitContext& ctx,
59 [[maybe_unused]] const IR::Value& binding, 59 [[maybe_unused]] const IR::Value& binding,
60 [[maybe_unused]] const IR::Value& offset, 60 [[maybe_unused]] const IR::Value& offset,
61 [[maybe_unused]] std::string value) { 61 [[maybe_unused]] std::string_view value) {
62 throw NotImplementedException("GLSL Instrucion"); 62 throw NotImplementedException("GLSL Instrucion");
63} 63}
64 64
65void EmitWriteStorageU16([[maybe_unused]] EmitContext& ctx, 65void EmitWriteStorageU16([[maybe_unused]] EmitContext& ctx,
66 [[maybe_unused]] const IR::Value& binding, 66 [[maybe_unused]] const IR::Value& binding,
67 [[maybe_unused]] const IR::Value& offset, 67 [[maybe_unused]] const IR::Value& offset,
68 [[maybe_unused]] std::string value) { 68 [[maybe_unused]] std::string_view value) {
69 throw NotImplementedException("GLSL Instrucion"); 69 throw NotImplementedException("GLSL Instrucion");
70} 70}
71 71
72void EmitWriteStorageS16([[maybe_unused]] EmitContext& ctx, 72void EmitWriteStorageS16([[maybe_unused]] EmitContext& ctx,
73 [[maybe_unused]] const IR::Value& binding, 73 [[maybe_unused]] const IR::Value& binding,
74 [[maybe_unused]] const IR::Value& offset, 74 [[maybe_unused]] const IR::Value& offset,
75 [[maybe_unused]] std::string value) { 75 [[maybe_unused]] std::string_view value) {
76 throw NotImplementedException("GLSL Instrucion"); 76 throw NotImplementedException("GLSL Instrucion");
77} 77}
78 78
79void EmitWriteStorage32([[maybe_unused]] EmitContext& ctx, 79void EmitWriteStorage32([[maybe_unused]] EmitContext& ctx,
80 [[maybe_unused]] const IR::Value& binding, 80 [[maybe_unused]] const IR::Value& binding,
81 [[maybe_unused]] const IR::Value& offset, 81 [[maybe_unused]] const IR::Value& offset,
82 [[maybe_unused]] std::string value) { 82 [[maybe_unused]] std::string_view value) {
83 ctx.Add("buff{}[{}]={};", binding.U32(), offset.U32(), value); 83 ctx.Add("buff{}[{}]={};", binding.U32(), offset.U32(), value);
84} 84}
85 85
86void EmitWriteStorage64([[maybe_unused]] EmitContext& ctx, 86void EmitWriteStorage64([[maybe_unused]] EmitContext& ctx,
87 [[maybe_unused]] const IR::Value& binding, 87 [[maybe_unused]] const IR::Value& binding,
88 [[maybe_unused]] const IR::Value& offset, 88 [[maybe_unused]] const IR::Value& offset,
89 [[maybe_unused]] std::string value) { 89 [[maybe_unused]] std::string_view value) {
90 throw NotImplementedException("GLSL Instrucion"); 90 throw NotImplementedException("GLSL Instrucion");
91} 91}
92 92
93void EmitWriteStorage128([[maybe_unused]] EmitContext& ctx, 93void EmitWriteStorage128([[maybe_unused]] EmitContext& ctx,
94 [[maybe_unused]] const IR::Value& binding, 94 [[maybe_unused]] const IR::Value& binding,
95 [[maybe_unused]] const IR::Value& offset, 95 [[maybe_unused]] const IR::Value& offset,
96 [[maybe_unused]] std::string value) { 96 [[maybe_unused]] std::string_view value) {
97 throw NotImplementedException("GLSL Instrucion"); 97 throw NotImplementedException("GLSL Instrucion");
98} 98}
99} // namespace Shader::Backend::GLSL 99} // namespace Shader::Backend::GLSL
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp
index 0775d5c84..ff2b30eee 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp
@@ -39,20 +39,21 @@ void EmitPhiMove(EmitContext& ctx, const IR::Value& phi, const IR::Value& value)
39 NotImplemented(); 39 NotImplemented();
40} 40}
41 41
42void EmitBranch(EmitContext& ctx, std::string label) { 42void EmitBranch(EmitContext& ctx, std::string_view label) {
43 NotImplemented(); 43 NotImplemented();
44} 44}
45 45
46void EmitBranchConditional(EmitContext& ctx, std::string condition, std::string true_label, 46void EmitBranchConditional(EmitContext& ctx, std::string_view condition,
47 std::string false_label) { 47 std::string_view true_label, std::string_view false_label) {
48 NotImplemented(); 48 NotImplemented();
49} 49}
50 50
51void EmitLoopMerge(EmitContext& ctx, std::string merge_label, std::string continue_label) { 51void EmitLoopMerge(EmitContext& ctx, std::string_view merge_label,
52 std::string_view continue_label) {
52 NotImplemented(); 53 NotImplemented();
53} 54}
54 55
55void EmitSelectionMerge(EmitContext& ctx, std::string merge_label) { 56void EmitSelectionMerge(EmitContext& ctx, std::string_view merge_label) {
56 NotImplemented(); 57 NotImplemented();
57} 58}
58 59
@@ -68,7 +69,7 @@ void EmitUnreachable(EmitContext& ctx) {
68 NotImplemented(); 69 NotImplemented();
69} 70}
70 71
71void EmitDemoteToHelperInvocation(EmitContext& ctx, std::string continue_label) { 72void EmitDemoteToHelperInvocation(EmitContext& ctx, std::string_view continue_label) {
72 NotImplemented(); 73 NotImplemented();
73} 74}
74 75
@@ -132,20 +133,21 @@ void EmitGetIndirectBranchVariable(EmitContext& ctx) {
132 NotImplemented(); 133 NotImplemented();
133} 134}
134 135
135void EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, std::string vertex) { 136void EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view vertex) {
136 NotImplemented(); 137 NotImplemented();
137} 138}
138 139
139void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string value, std::string vertex) { 140void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view value,
141 std::string_view vertex) {
140 NotImplemented(); 142 NotImplemented();
141} 143}
142 144
143void EmitGetAttributeIndexed(EmitContext& ctx, std::string offset, std::string vertex) { 145void EmitGetAttributeIndexed(EmitContext& ctx, std::string_view offset, std::string_view vertex) {
144 NotImplemented(); 146 NotImplemented();
145} 147}
146 148
147void EmitSetAttributeIndexed(EmitContext& ctx, std::string offset, std::string value, 149void EmitSetAttributeIndexed(EmitContext& ctx, std::string_view offset, std::string_view value,
148 std::string vertex) { 150 std::string_view vertex) {
149 NotImplemented(); 151 NotImplemented();
150} 152}
151 153
@@ -153,19 +155,19 @@ void EmitGetPatch(EmitContext& ctx, IR::Patch patch) {
153 NotImplemented(); 155 NotImplemented();
154} 156}
155 157
156void EmitSetPatch(EmitContext& ctx, IR::Patch patch, std::string value) { 158void EmitSetPatch(EmitContext& ctx, IR::Patch patch, std::string_view value) {
157 NotImplemented(); 159 NotImplemented();
158} 160}
159 161
160void EmitSetFragColor(EmitContext& ctx, u32 index, u32 component, std::string value) { 162void EmitSetFragColor(EmitContext& ctx, u32 index, u32 component, std::string_view value) {
161 NotImplemented(); 163 NotImplemented();
162} 164}
163 165
164void EmitSetSampleMask(EmitContext& ctx, std::string value) { 166void EmitSetSampleMask(EmitContext& ctx, std::string_view value) {
165 NotImplemented(); 167 NotImplemented();
166} 168}
167 169
168void EmitSetFragDepth(EmitContext& ctx, std::string value) { 170void EmitSetFragDepth(EmitContext& ctx, std::string_view value) {
169 NotImplemented(); 171 NotImplemented();
170} 172}
171 173
@@ -225,11 +227,11 @@ void EmitYDirection(EmitContext& ctx) {
225 NotImplemented(); 227 NotImplemented();
226} 228}
227 229
228void EmitLoadLocal(EmitContext& ctx, std::string word_offset) { 230void EmitLoadLocal(EmitContext& ctx, std::string_view word_offset) {
229 NotImplemented(); 231 NotImplemented();
230} 232}
231 233
232void EmitWriteLocal(EmitContext& ctx, std::string word_offset, std::string value) { 234void EmitWriteLocal(EmitContext& ctx, std::string_view word_offset, std::string_view value) {
233 NotImplemented(); 235 NotImplemented();
234} 236}
235 237
@@ -269,15 +271,15 @@ void EmitLoadGlobalS16(EmitContext& ctx) {
269 NotImplemented(); 271 NotImplemented();
270} 272}
271 273
272void EmitLoadGlobal32(EmitContext& ctx, std::string address) { 274void EmitLoadGlobal32(EmitContext& ctx, std::string_view address) {
273 NotImplemented(); 275 NotImplemented();
274} 276}
275 277
276void EmitLoadGlobal64(EmitContext& ctx, std::string address) { 278void EmitLoadGlobal64(EmitContext& ctx, std::string_view address) {
277 NotImplemented(); 279 NotImplemented();
278} 280}
279 281
280void EmitLoadGlobal128(EmitContext& ctx, std::string address) { 282void EmitLoadGlobal128(EmitContext& ctx, std::string_view address) {
281 NotImplemented(); 283 NotImplemented();
282} 284}
283 285
@@ -297,182 +299,185 @@ void EmitWriteGlobalS16(EmitContext& ctx) {
297 NotImplemented(); 299 NotImplemented();
298} 300}
299 301
300void EmitWriteGlobal32(EmitContext& ctx, std::string address, std::string value) { 302void EmitWriteGlobal32(EmitContext& ctx, std::string_view address, std::string_view value) {
301 NotImplemented(); 303 NotImplemented();
302} 304}
303 305
304void EmitWriteGlobal64(EmitContext& ctx, std::string address, std::string value) { 306void EmitWriteGlobal64(EmitContext& ctx, std::string_view address, std::string_view value) {
305 NotImplemented(); 307 NotImplemented();
306} 308}
307 309
308void EmitWriteGlobal128(EmitContext& ctx, std::string address, std::string value) { 310void EmitWriteGlobal128(EmitContext& ctx, std::string_view address, std::string_view value) {
309 NotImplemented(); 311 NotImplemented();
310} 312}
311 313
312void EmitLoadSharedU8(EmitContext& ctx, std::string offset) { 314void EmitLoadSharedU8(EmitContext& ctx, std::string_view offset) {
313 NotImplemented(); 315 NotImplemented();
314} 316}
315 317
316void EmitLoadSharedS8(EmitContext& ctx, std::string offset) { 318void EmitLoadSharedS8(EmitContext& ctx, std::string_view offset) {
317 NotImplemented(); 319 NotImplemented();
318} 320}
319 321
320void EmitLoadSharedU16(EmitContext& ctx, std::string offset) { 322void EmitLoadSharedU16(EmitContext& ctx, std::string_view offset) {
321 NotImplemented(); 323 NotImplemented();
322} 324}
323 325
324void EmitLoadSharedS16(EmitContext& ctx, std::string offset) { 326void EmitLoadSharedS16(EmitContext& ctx, std::string_view offset) {
325 NotImplemented(); 327 NotImplemented();
326} 328}
327 329
328void EmitLoadSharedU32(EmitContext& ctx, std::string offset) { 330void EmitLoadSharedU32(EmitContext& ctx, std::string_view offset) {
329 NotImplemented(); 331 NotImplemented();
330} 332}
331 333
332void EmitLoadSharedU64(EmitContext& ctx, std::string offset) { 334void EmitLoadSharedU64(EmitContext& ctx, std::string_view offset) {
333 NotImplemented(); 335 NotImplemented();
334} 336}
335 337
336void EmitLoadSharedU128(EmitContext& ctx, std::string offset) { 338void EmitLoadSharedU128(EmitContext& ctx, std::string_view offset) {
337 NotImplemented(); 339 NotImplemented();
338} 340}
339 341
340void EmitWriteSharedU8(EmitContext& ctx, std::string offset, std::string value) { 342void EmitWriteSharedU8(EmitContext& ctx, std::string_view offset, std::string_view value) {
341 NotImplemented(); 343 NotImplemented();
342} 344}
343 345
344void EmitWriteSharedU16(EmitContext& ctx, std::string offset, std::string value) { 346void EmitWriteSharedU16(EmitContext& ctx, std::string_view offset, std::string_view value) {
345 NotImplemented(); 347 NotImplemented();
346} 348}
347 349
348void EmitWriteSharedU32(EmitContext& ctx, std::string offset, std::string value) { 350void EmitWriteSharedU32(EmitContext& ctx, std::string_view offset, std::string_view value) {
349 NotImplemented(); 351 NotImplemented();
350} 352}
351 353
352void EmitWriteSharedU64(EmitContext& ctx, std::string offset, std::string value) { 354void EmitWriteSharedU64(EmitContext& ctx, std::string_view offset, std::string_view value) {
353 NotImplemented(); 355 NotImplemented();
354} 356}
355 357
356void EmitWriteSharedU128(EmitContext& ctx, std::string offset, std::string value) { 358void EmitWriteSharedU128(EmitContext& ctx, std::string_view offset, std::string_view value) {
357 NotImplemented(); 359 NotImplemented();
358} 360}
359 361
360void EmitCompositeConstructU32x2(EmitContext& ctx, std::string e1, std::string e2) { 362void EmitCompositeConstructU32x2(EmitContext& ctx, std::string_view e1, std::string_view e2) {
361 NotImplemented(); 363 NotImplemented();
362} 364}
363 365
364void EmitCompositeConstructU32x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3) { 366void EmitCompositeConstructU32x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
367 std::string_view e3) {
365 NotImplemented(); 368 NotImplemented();
366} 369}
367 370
368void EmitCompositeConstructU32x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 371void EmitCompositeConstructU32x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
369 std::string e4) { 372 std::string_view e3, std::string_view e4) {
370 NotImplemented(); 373 NotImplemented();
371} 374}
372 375
373void EmitCompositeExtractU32x2(EmitContext& ctx, std::string composite, u32 index) { 376void EmitCompositeExtractU32x2(EmitContext& ctx, std::string_view composite, u32 index) {
374 NotImplemented(); 377 NotImplemented();
375} 378}
376 379
377void EmitCompositeExtractU32x3(EmitContext& ctx, std::string composite, u32 index) { 380void EmitCompositeExtractU32x3(EmitContext& ctx, std::string_view composite, u32 index) {
378 NotImplemented(); 381 NotImplemented();
379} 382}
380 383
381void EmitCompositeExtractU32x4(EmitContext& ctx, std::string composite, u32 index) { 384void EmitCompositeExtractU32x4(EmitContext& ctx, std::string_view composite, u32 index) {
382 NotImplemented(); 385 NotImplemented();
383} 386}
384 387
385void EmitCompositeInsertU32x2(EmitContext& ctx, std::string composite, std::string object, 388void EmitCompositeInsertU32x2(EmitContext& ctx, std::string_view composite, std::string_view object,
386 u32 index) { 389 u32 index) {
387 NotImplemented(); 390 NotImplemented();
388} 391}
389 392
390void EmitCompositeInsertU32x3(EmitContext& ctx, std::string composite, std::string object, 393void EmitCompositeInsertU32x3(EmitContext& ctx, std::string_view composite, std::string_view object,
391 u32 index) { 394 u32 index) {
392 NotImplemented(); 395 NotImplemented();
393} 396}
394 397
395void EmitCompositeInsertU32x4(EmitContext& ctx, std::string composite, std::string object, 398void EmitCompositeInsertU32x4(EmitContext& ctx, std::string_view composite, std::string_view object,
396 u32 index) { 399 u32 index) {
397 NotImplemented(); 400 NotImplemented();
398} 401}
399 402
400void EmitCompositeConstructF16x2(EmitContext& ctx, std::string e1, std::string e2) { 403void EmitCompositeConstructF16x2(EmitContext& ctx, std::string_view e1, std::string_view e2) {
401 NotImplemented(); 404 NotImplemented();
402} 405}
403 406
404void EmitCompositeConstructF16x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3) { 407void EmitCompositeConstructF16x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
408 std::string_view e3) {
405 NotImplemented(); 409 NotImplemented();
406} 410}
407 411
408void EmitCompositeConstructF16x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 412void EmitCompositeConstructF16x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
409 std::string e4) { 413 std::string_view e3, std::string_view e4) {
410 NotImplemented(); 414 NotImplemented();
411} 415}
412 416
413void EmitCompositeExtractF16x2(EmitContext& ctx, std::string composite, u32 index) { 417void EmitCompositeExtractF16x2(EmitContext& ctx, std::string_view composite, u32 index) {
414 NotImplemented(); 418 NotImplemented();
415} 419}
416 420
417void EmitCompositeExtractF16x3(EmitContext& ctx, std::string composite, u32 index) { 421void EmitCompositeExtractF16x3(EmitContext& ctx, std::string_view composite, u32 index) {
418 NotImplemented(); 422 NotImplemented();
419} 423}
420 424
421void EmitCompositeExtractF16x4(EmitContext& ctx, std::string composite, u32 index) { 425void EmitCompositeExtractF16x4(EmitContext& ctx, std::string_view composite, u32 index) {
422 NotImplemented(); 426 NotImplemented();
423} 427}
424 428
425void EmitCompositeInsertF16x2(EmitContext& ctx, std::string composite, std::string object, 429void EmitCompositeInsertF16x2(EmitContext& ctx, std::string_view composite, std::string_view object,
426 u32 index) { 430 u32 index) {
427 NotImplemented(); 431 NotImplemented();
428} 432}
429 433
430void EmitCompositeInsertF16x3(EmitContext& ctx, std::string composite, std::string object, 434void EmitCompositeInsertF16x3(EmitContext& ctx, std::string_view composite, std::string_view object,
431 u32 index) { 435 u32 index) {
432 NotImplemented(); 436 NotImplemented();
433} 437}
434 438
435void EmitCompositeInsertF16x4(EmitContext& ctx, std::string composite, std::string object, 439void EmitCompositeInsertF16x4(EmitContext& ctx, std::string_view composite, std::string_view object,
436 u32 index) { 440 u32 index) {
437 NotImplemented(); 441 NotImplemented();
438} 442}
439 443
440void EmitCompositeConstructF32x2(EmitContext& ctx, std::string e1, std::string e2) { 444void EmitCompositeConstructF32x2(EmitContext& ctx, std::string_view e1, std::string_view e2) {
441 NotImplemented(); 445 NotImplemented();
442} 446}
443 447
444void EmitCompositeConstructF32x3(EmitContext& ctx, std::string e1, std::string e2, std::string e3) { 448void EmitCompositeConstructF32x3(EmitContext& ctx, std::string_view e1, std::string_view e2,
449 std::string_view e3) {
445 NotImplemented(); 450 NotImplemented();
446} 451}
447 452
448void EmitCompositeConstructF32x4(EmitContext& ctx, std::string e1, std::string e2, std::string e3, 453void EmitCompositeConstructF32x4(EmitContext& ctx, std::string_view e1, std::string_view e2,
449 std::string e4) { 454 std::string_view e3, std::string_view e4) {
450 NotImplemented(); 455 NotImplemented();
451} 456}
452 457
453void EmitCompositeExtractF32x2(EmitContext& ctx, std::string composite, u32 index) { 458void EmitCompositeExtractF32x2(EmitContext& ctx, std::string_view composite, u32 index) {
454 NotImplemented(); 459 NotImplemented();
455} 460}
456 461
457void EmitCompositeExtractF32x3(EmitContext& ctx, std::string composite, u32 index) { 462void EmitCompositeExtractF32x3(EmitContext& ctx, std::string_view composite, u32 index) {
458 NotImplemented(); 463 NotImplemented();
459} 464}
460 465
461void EmitCompositeExtractF32x4(EmitContext& ctx, std::string composite, u32 index) { 466void EmitCompositeExtractF32x4(EmitContext& ctx, std::string_view composite, u32 index) {
462 NotImplemented(); 467 NotImplemented();
463} 468}
464 469
465void EmitCompositeInsertF32x2(EmitContext& ctx, std::string composite, std::string object, 470void EmitCompositeInsertF32x2(EmitContext& ctx, std::string_view composite, std::string_view object,
466 u32 index) { 471 u32 index) {
467 NotImplemented(); 472 NotImplemented();
468} 473}
469 474
470void EmitCompositeInsertF32x3(EmitContext& ctx, std::string composite, std::string object, 475void EmitCompositeInsertF32x3(EmitContext& ctx, std::string_view composite, std::string_view object,
471 u32 index) { 476 u32 index) {
472 NotImplemented(); 477 NotImplemented();
473} 478}
474 479
475void EmitCompositeInsertF32x4(EmitContext& ctx, std::string composite, std::string object, 480void EmitCompositeInsertF32x4(EmitContext& ctx, std::string_view composite, std::string_view object,
476 u32 index) { 481 u32 index) {
477 NotImplemented(); 482 NotImplemented();
478} 483}
@@ -501,58 +506,58 @@ void EmitCompositeExtractF64x4(EmitContext& ctx) {
501 NotImplemented(); 506 NotImplemented();
502} 507}
503 508
504void EmitCompositeInsertF64x2(EmitContext& ctx, std::string composite, std::string object, 509void EmitCompositeInsertF64x2(EmitContext& ctx, std::string_view composite, std::string_view object,
505 u32 index) { 510 u32 index) {
506 NotImplemented(); 511 NotImplemented();
507} 512}
508 513
509void EmitCompositeInsertF64x3(EmitContext& ctx, std::string composite, std::string object, 514void EmitCompositeInsertF64x3(EmitContext& ctx, std::string_view composite, std::string_view object,
510 u32 index) { 515 u32 index) {
511 NotImplemented(); 516 NotImplemented();
512} 517}
513 518
514void EmitCompositeInsertF64x4(EmitContext& ctx, std::string composite, std::string object, 519void EmitCompositeInsertF64x4(EmitContext& ctx, std::string_view composite, std::string_view object,
515 u32 index) { 520 u32 index) {
516 NotImplemented(); 521 NotImplemented();
517} 522}
518 523
519void EmitSelectU1(EmitContext& ctx, std::string cond, std::string true_value, 524void EmitSelectU1(EmitContext& ctx, std::string_view cond, std::string_view true_value,
520 std::string false_value) { 525 std::string_view false_value) {
521 NotImplemented(); 526 NotImplemented();
522} 527}
523 528
524void EmitSelectU8(EmitContext& ctx, std::string cond, std::string true_value, 529void EmitSelectU8(EmitContext& ctx, std::string_view cond, std::string_view true_value,
525 std::string false_value) { 530 std::string_view false_value) {
526 NotImplemented(); 531 NotImplemented();
527} 532}
528 533
529void EmitSelectU16(EmitContext& ctx, std::string cond, std::string true_value, 534void EmitSelectU16(EmitContext& ctx, std::string_view cond, std::string_view true_value,
530 std::string false_value) { 535 std::string_view false_value) {
531 NotImplemented(); 536 NotImplemented();
532} 537}
533 538
534void EmitSelectU32(EmitContext& ctx, std::string cond, std::string true_value, 539void EmitSelectU32(EmitContext& ctx, std::string_view cond, std::string_view true_value,
535 std::string false_value) { 540 std::string_view false_value) {
536 NotImplemented(); 541 NotImplemented();
537} 542}
538 543
539void EmitSelectU64(EmitContext& ctx, std::string cond, std::string true_value, 544void EmitSelectU64(EmitContext& ctx, std::string_view cond, std::string_view true_value,
540 std::string false_value) { 545 std::string_view false_value) {
541 NotImplemented(); 546 NotImplemented();
542} 547}
543 548
544void EmitSelectF16(EmitContext& ctx, std::string cond, std::string true_value, 549void EmitSelectF16(EmitContext& ctx, std::string_view cond, std::string_view true_value,
545 std::string false_value) { 550 std::string_view false_value) {
546 NotImplemented(); 551 NotImplemented();
547} 552}
548 553
549void EmitSelectF32(EmitContext& ctx, std::string cond, std::string true_value, 554void EmitSelectF32(EmitContext& ctx, std::string_view cond, std::string_view true_value,
550 std::string false_value) { 555 std::string_view false_value) {
551 NotImplemented(); 556 NotImplemented();
552} 557}
553 558
554void EmitSelectF64(EmitContext& ctx, std::string cond, std::string true_value, 559void EmitSelectF64(EmitContext& ctx, std::string_view cond, std::string_view true_value,
555 std::string false_value) { 560 std::string_view false_value) {
556 NotImplemented(); 561 NotImplemented();
557} 562}
558 563
@@ -560,7 +565,7 @@ void EmitBitCastU16F16(EmitContext& ctx) {
560 NotImplemented(); 565 NotImplemented();
561} 566}
562 567
563void EmitBitCastU32F32(EmitContext& ctx, std::string value) { 568void EmitBitCastU32F32(EmitContext& ctx, std::string_view value) {
564 NotImplemented(); 569 NotImplemented();
565} 570}
566 571
@@ -572,7 +577,7 @@ void EmitBitCastF16U16(EmitContext& ctx) {
572 NotImplemented(); 577 NotImplemented();
573} 578}
574 579
575void EmitBitCastF32U32(EmitContext& ctx, std::string value) { 580void EmitBitCastF32U32(EmitContext& ctx, std::string_view value) {
576 NotImplemented(); 581 NotImplemented();
577} 582}
578 583
@@ -580,35 +585,35 @@ void EmitBitCastF64U64(EmitContext& ctx) {
580 NotImplemented(); 585 NotImplemented();
581} 586}
582 587
583void EmitPackUint2x32(EmitContext& ctx, std::string value) { 588void EmitPackUint2x32(EmitContext& ctx, std::string_view value) {
584 NotImplemented(); 589 NotImplemented();
585} 590}
586 591
587void EmitUnpackUint2x32(EmitContext& ctx, std::string value) { 592void EmitUnpackUint2x32(EmitContext& ctx, std::string_view value) {
588 NotImplemented(); 593 NotImplemented();
589} 594}
590 595
591void EmitPackFloat2x16(EmitContext& ctx, std::string value) { 596void EmitPackFloat2x16(EmitContext& ctx, std::string_view value) {
592 NotImplemented(); 597 NotImplemented();
593} 598}
594 599
595void EmitUnpackFloat2x16(EmitContext& ctx, std::string value) { 600void EmitUnpackFloat2x16(EmitContext& ctx, std::string_view value) {
596 NotImplemented(); 601 NotImplemented();
597} 602}
598 603
599void EmitPackHalf2x16(EmitContext& ctx, std::string value) { 604void EmitPackHalf2x16(EmitContext& ctx, std::string_view value) {
600 NotImplemented(); 605 NotImplemented();
601} 606}
602 607
603void EmitUnpackHalf2x16(EmitContext& ctx, std::string value) { 608void EmitUnpackHalf2x16(EmitContext& ctx, std::string_view value) {
604 NotImplemented(); 609 NotImplemented();
605} 610}
606 611
607void EmitPackDouble2x32(EmitContext& ctx, std::string value) { 612void EmitPackDouble2x32(EmitContext& ctx, std::string_view value) {
608 NotImplemented(); 613 NotImplemented();
609} 614}
610 615
611void EmitUnpackDouble2x32(EmitContext& ctx, std::string value) { 616void EmitUnpackDouble2x32(EmitContext& ctx, std::string_view value) {
612 NotImplemented(); 617 NotImplemented();
613} 618}
614 619
@@ -636,529 +641,544 @@ void EmitGetInBoundsFromOp(EmitContext& ctx) {
636 NotImplemented(); 641 NotImplemented();
637} 642}
638 643
639void EmitFPAbs16(EmitContext& ctx, std::string value) { 644void EmitFPAbs16(EmitContext& ctx, std::string_view value) {
640 NotImplemented(); 645 NotImplemented();
641} 646}
642 647
643void EmitFPAbs32(EmitContext& ctx, std::string value) { 648void EmitFPAbs32(EmitContext& ctx, std::string_view value) {
644 NotImplemented(); 649 NotImplemented();
645} 650}
646 651
647void EmitFPAbs64(EmitContext& ctx, std::string value) { 652void EmitFPAbs64(EmitContext& ctx, std::string_view value) {
648 NotImplemented(); 653 NotImplemented();
649} 654}
650 655
651void EmitFPAdd16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 656void EmitFPAdd16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
652 NotImplemented(); 657 NotImplemented();
653} 658}
654 659
655void EmitFPAdd32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 660void EmitFPAdd32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
656 NotImplemented(); 661 NotImplemented();
657} 662}
658 663
659void EmitFPAdd64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 664void EmitFPAdd64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
660 NotImplemented(); 665 NotImplemented();
661} 666}
662 667
663void EmitFPFma16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c) { 668void EmitFPFma16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
669 std::string_view c) {
664 NotImplemented(); 670 NotImplemented();
665} 671}
666 672
667void EmitFPFma32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c) { 673void EmitFPFma32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
674 std::string_view c) {
668 NotImplemented(); 675 NotImplemented();
669} 676}
670 677
671void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b, std::string c) { 678void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b,
679 std::string_view c) {
672 NotImplemented(); 680 NotImplemented();
673} 681}
674 682
675void EmitFPMax32(EmitContext& ctx, std::string a, std::string b) { 683void EmitFPMax32(EmitContext& ctx, std::string_view a, std::string_view b) {
676 NotImplemented(); 684 NotImplemented();
677} 685}
678 686
679void EmitFPMax64(EmitContext& ctx, std::string a, std::string b) { 687void EmitFPMax64(EmitContext& ctx, std::string_view a, std::string_view b) {
680 NotImplemented(); 688 NotImplemented();
681} 689}
682 690
683void EmitFPMin32(EmitContext& ctx, std::string a, std::string b) { 691void EmitFPMin32(EmitContext& ctx, std::string_view a, std::string_view b) {
684 NotImplemented(); 692 NotImplemented();
685} 693}
686 694
687void EmitFPMin64(EmitContext& ctx, std::string a, std::string b) { 695void EmitFPMin64(EmitContext& ctx, std::string_view a, std::string_view b) {
688 NotImplemented(); 696 NotImplemented();
689} 697}
690 698
691void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 699void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
692 NotImplemented(); 700 NotImplemented();
693} 701}
694 702
695void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 703void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
696 NotImplemented(); 704 NotImplemented();
697} 705}
698 706
699void EmitFPMul64(EmitContext& ctx, IR::Inst& inst, std::string a, std::string b) { 707void EmitFPMul64(EmitContext& ctx, IR::Inst& inst, std::string_view a, std::string_view b) {
700 NotImplemented(); 708 NotImplemented();
701} 709}
702 710
703void EmitFPNeg16(EmitContext& ctx, std::string value) { 711void EmitFPNeg16(EmitContext& ctx, std::string_view value) {
704 NotImplemented(); 712 NotImplemented();
705} 713}
706 714
707void EmitFPNeg32(EmitContext& ctx, std::string value) { 715void EmitFPNeg32(EmitContext& ctx, std::string_view value) {
708 NotImplemented(); 716 NotImplemented();
709} 717}
710 718
711void EmitFPNeg64(EmitContext& ctx, std::string value) { 719void EmitFPNeg64(EmitContext& ctx, std::string_view value) {
712 NotImplemented(); 720 NotImplemented();
713} 721}
714 722
715void EmitFPSin(EmitContext& ctx, std::string value) { 723void EmitFPSin(EmitContext& ctx, std::string_view value) {
716 NotImplemented(); 724 NotImplemented();
717} 725}
718 726
719void EmitFPCos(EmitContext& ctx, std::string value) { 727void EmitFPCos(EmitContext& ctx, std::string_view value) {
720 NotImplemented(); 728 NotImplemented();
721} 729}
722 730
723void EmitFPExp2(EmitContext& ctx, std::string value) { 731void EmitFPExp2(EmitContext& ctx, std::string_view value) {
724 NotImplemented(); 732 NotImplemented();
725} 733}
726 734
727void EmitFPLog2(EmitContext& ctx, std::string value) { 735void EmitFPLog2(EmitContext& ctx, std::string_view value) {
728 NotImplemented(); 736 NotImplemented();
729} 737}
730 738
731void EmitFPRecip32(EmitContext& ctx, std::string value) { 739void EmitFPRecip32(EmitContext& ctx, std::string_view value) {
732 NotImplemented(); 740 NotImplemented();
733} 741}
734 742
735void EmitFPRecip64(EmitContext& ctx, std::string value) { 743void EmitFPRecip64(EmitContext& ctx, std::string_view value) {
736 NotImplemented(); 744 NotImplemented();
737} 745}
738 746
739void EmitFPRecipSqrt32(EmitContext& ctx, std::string value) { 747void EmitFPRecipSqrt32(EmitContext& ctx, std::string_view value) {
740 NotImplemented(); 748 NotImplemented();
741} 749}
742 750
743void EmitFPRecipSqrt64(EmitContext& ctx, std::string value) { 751void EmitFPRecipSqrt64(EmitContext& ctx, std::string_view value) {
744 NotImplemented(); 752 NotImplemented();
745} 753}
746 754
747void EmitFPSqrt(EmitContext& ctx, std::string value) { 755void EmitFPSqrt(EmitContext& ctx, std::string_view value) {
748 NotImplemented(); 756 NotImplemented();
749} 757}
750 758
751void EmitFPSaturate16(EmitContext& ctx, std::string value) { 759void EmitFPSaturate16(EmitContext& ctx, std::string_view value) {
752 NotImplemented(); 760 NotImplemented();
753} 761}
754 762
755void EmitFPSaturate32(EmitContext& ctx, std::string value) { 763void EmitFPSaturate32(EmitContext& ctx, std::string_view value) {
756 NotImplemented(); 764 NotImplemented();
757} 765}
758 766
759void EmitFPSaturate64(EmitContext& ctx, std::string value) { 767void EmitFPSaturate64(EmitContext& ctx, std::string_view value) {
760 NotImplemented(); 768 NotImplemented();
761} 769}
762 770
763void EmitFPClamp16(EmitContext& ctx, std::string value, std::string min_value, 771void EmitFPClamp16(EmitContext& ctx, std::string_view value, std::string_view min_value,
764 std::string max_value) { 772 std::string_view max_value) {
765 NotImplemented(); 773 NotImplemented();
766} 774}
767 775
768void EmitFPClamp32(EmitContext& ctx, std::string value, std::string min_value, 776void EmitFPClamp32(EmitContext& ctx, std::string_view value, std::string_view min_value,
769 std::string max_value) { 777 std::string_view max_value) {
770 NotImplemented(); 778 NotImplemented();
771} 779}
772 780
773void EmitFPClamp64(EmitContext& ctx, std::string value, std::string min_value, 781void EmitFPClamp64(EmitContext& ctx, std::string_view value, std::string_view min_value,
774 std::string max_value) { 782 std::string_view max_value) {
775 NotImplemented(); 783 NotImplemented();
776} 784}
777 785
778void EmitFPRoundEven16(EmitContext& ctx, std::string value) { 786void EmitFPRoundEven16(EmitContext& ctx, std::string_view value) {
779 NotImplemented(); 787 NotImplemented();
780} 788}
781 789
782void EmitFPRoundEven32(EmitContext& ctx, std::string value) { 790void EmitFPRoundEven32(EmitContext& ctx, std::string_view value) {
783 NotImplemented(); 791 NotImplemented();
784} 792}
785 793
786void EmitFPRoundEven64(EmitContext& ctx, std::string value) { 794void EmitFPRoundEven64(EmitContext& ctx, std::string_view value) {
787 NotImplemented(); 795 NotImplemented();
788} 796}
789 797
790void EmitFPFloor16(EmitContext& ctx, std::string value) { 798void EmitFPFloor16(EmitContext& ctx, std::string_view value) {
791 NotImplemented(); 799 NotImplemented();
792} 800}
793 801
794void EmitFPFloor32(EmitContext& ctx, std::string value) { 802void EmitFPFloor32(EmitContext& ctx, std::string_view value) {
795 NotImplemented(); 803 NotImplemented();
796} 804}
797 805
798void EmitFPFloor64(EmitContext& ctx, std::string value) { 806void EmitFPFloor64(EmitContext& ctx, std::string_view value) {
799 NotImplemented(); 807 NotImplemented();
800} 808}
801 809
802void EmitFPCeil16(EmitContext& ctx, std::string value) { 810void EmitFPCeil16(EmitContext& ctx, std::string_view value) {
803 NotImplemented(); 811 NotImplemented();
804} 812}
805 813
806void EmitFPCeil32(EmitContext& ctx, std::string value) { 814void EmitFPCeil32(EmitContext& ctx, std::string_view value) {
807 NotImplemented(); 815 NotImplemented();
808} 816}
809 817
810void EmitFPCeil64(EmitContext& ctx, std::string value) { 818void EmitFPCeil64(EmitContext& ctx, std::string_view value) {
811 NotImplemented(); 819 NotImplemented();
812} 820}
813 821
814void EmitFPTrunc16(EmitContext& ctx, std::string value) { 822void EmitFPTrunc16(EmitContext& ctx, std::string_view value) {
815 NotImplemented(); 823 NotImplemented();
816} 824}
817 825
818void EmitFPTrunc32(EmitContext& ctx, std::string value) { 826void EmitFPTrunc32(EmitContext& ctx, std::string_view value) {
819 NotImplemented(); 827 NotImplemented();
820} 828}
821 829
822void EmitFPTrunc64(EmitContext& ctx, std::string value) { 830void EmitFPTrunc64(EmitContext& ctx, std::string_view value) {
823 NotImplemented(); 831 NotImplemented();
824} 832}
825 833
826void EmitFPOrdEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 834void EmitFPOrdEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
827 NotImplemented(); 835 NotImplemented();
828} 836}
829 837
830void EmitFPOrdEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 838void EmitFPOrdEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
831 NotImplemented(); 839 NotImplemented();
832} 840}
833 841
834void EmitFPOrdEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 842void EmitFPOrdEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
835 NotImplemented(); 843 NotImplemented();
836} 844}
837 845
838void EmitFPUnordEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 846void EmitFPUnordEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
839 NotImplemented(); 847 NotImplemented();
840} 848}
841 849
842void EmitFPUnordEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 850void EmitFPUnordEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
843 NotImplemented(); 851 NotImplemented();
844} 852}
845 853
846void EmitFPUnordEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 854void EmitFPUnordEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
847 NotImplemented(); 855 NotImplemented();
848} 856}
849 857
850void EmitFPOrdNotEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 858void EmitFPOrdNotEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
851 NotImplemented(); 859 NotImplemented();
852} 860}
853 861
854void EmitFPOrdNotEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 862void EmitFPOrdNotEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
855 NotImplemented(); 863 NotImplemented();
856} 864}
857 865
858void EmitFPOrdNotEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 866void EmitFPOrdNotEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
859 NotImplemented(); 867 NotImplemented();
860} 868}
861 869
862void EmitFPUnordNotEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 870void EmitFPUnordNotEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
863 NotImplemented(); 871 NotImplemented();
864} 872}
865 873
866void EmitFPUnordNotEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 874void EmitFPUnordNotEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
867 NotImplemented(); 875 NotImplemented();
868} 876}
869 877
870void EmitFPUnordNotEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 878void EmitFPUnordNotEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
871 NotImplemented(); 879 NotImplemented();
872} 880}
873 881
874void EmitFPOrdLessThan16(EmitContext& ctx, std::string lhs, std::string rhs) { 882void EmitFPOrdLessThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
875 NotImplemented(); 883 NotImplemented();
876} 884}
877 885
878void EmitFPOrdLessThan32(EmitContext& ctx, std::string lhs, std::string rhs) { 886void EmitFPOrdLessThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
879 NotImplemented(); 887 NotImplemented();
880} 888}
881 889
882void EmitFPOrdLessThan64(EmitContext& ctx, std::string lhs, std::string rhs) { 890void EmitFPOrdLessThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
883 NotImplemented(); 891 NotImplemented();
884} 892}
885 893
886void EmitFPUnordLessThan16(EmitContext& ctx, std::string lhs, std::string rhs) { 894void EmitFPUnordLessThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
887 NotImplemented(); 895 NotImplemented();
888} 896}
889 897
890void EmitFPUnordLessThan32(EmitContext& ctx, std::string lhs, std::string rhs) { 898void EmitFPUnordLessThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
891 NotImplemented(); 899 NotImplemented();
892} 900}
893 901
894void EmitFPUnordLessThan64(EmitContext& ctx, std::string lhs, std::string rhs) { 902void EmitFPUnordLessThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
895 NotImplemented(); 903 NotImplemented();
896} 904}
897 905
898void EmitFPOrdGreaterThan16(EmitContext& ctx, std::string lhs, std::string rhs) { 906void EmitFPOrdGreaterThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
899 NotImplemented(); 907 NotImplemented();
900} 908}
901 909
902void EmitFPOrdGreaterThan32(EmitContext& ctx, std::string lhs, std::string rhs) { 910void EmitFPOrdGreaterThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
903 NotImplemented(); 911 NotImplemented();
904} 912}
905 913
906void EmitFPOrdGreaterThan64(EmitContext& ctx, std::string lhs, std::string rhs) { 914void EmitFPOrdGreaterThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
907 NotImplemented(); 915 NotImplemented();
908} 916}
909 917
910void EmitFPUnordGreaterThan16(EmitContext& ctx, std::string lhs, std::string rhs) { 918void EmitFPUnordGreaterThan16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
911 NotImplemented(); 919 NotImplemented();
912} 920}
913 921
914void EmitFPUnordGreaterThan32(EmitContext& ctx, std::string lhs, std::string rhs) { 922void EmitFPUnordGreaterThan32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
915 NotImplemented(); 923 NotImplemented();
916} 924}
917 925
918void EmitFPUnordGreaterThan64(EmitContext& ctx, std::string lhs, std::string rhs) { 926void EmitFPUnordGreaterThan64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
919 NotImplemented(); 927 NotImplemented();
920} 928}
921 929
922void EmitFPOrdLessThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 930void EmitFPOrdLessThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
923 NotImplemented(); 931 NotImplemented();
924} 932}
925 933
926void EmitFPOrdLessThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 934void EmitFPOrdLessThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
927 NotImplemented(); 935 NotImplemented();
928} 936}
929 937
930void EmitFPOrdLessThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 938void EmitFPOrdLessThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
931 NotImplemented(); 939 NotImplemented();
932} 940}
933 941
934void EmitFPUnordLessThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 942void EmitFPUnordLessThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
935 NotImplemented(); 943 NotImplemented();
936} 944}
937 945
938void EmitFPUnordLessThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 946void EmitFPUnordLessThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
939 NotImplemented(); 947 NotImplemented();
940} 948}
941 949
942void EmitFPUnordLessThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 950void EmitFPUnordLessThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
943 NotImplemented(); 951 NotImplemented();
944} 952}
945 953
946void EmitFPOrdGreaterThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 954void EmitFPOrdGreaterThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
947 NotImplemented(); 955 NotImplemented();
948} 956}
949 957
950void EmitFPOrdGreaterThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 958void EmitFPOrdGreaterThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
951 NotImplemented(); 959 NotImplemented();
952} 960}
953 961
954void EmitFPOrdGreaterThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 962void EmitFPOrdGreaterThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
955 NotImplemented(); 963 NotImplemented();
956} 964}
957 965
958void EmitFPUnordGreaterThanEqual16(EmitContext& ctx, std::string lhs, std::string rhs) { 966void EmitFPUnordGreaterThanEqual16(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
959 NotImplemented(); 967 NotImplemented();
960} 968}
961 969
962void EmitFPUnordGreaterThanEqual32(EmitContext& ctx, std::string lhs, std::string rhs) { 970void EmitFPUnordGreaterThanEqual32(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
963 NotImplemented(); 971 NotImplemented();
964} 972}
965 973
966void EmitFPUnordGreaterThanEqual64(EmitContext& ctx, std::string lhs, std::string rhs) { 974void EmitFPUnordGreaterThanEqual64(EmitContext& ctx, std::string_view lhs, std::string_view rhs) {
967 NotImplemented(); 975 NotImplemented();
968} 976}
969 977
970void EmitFPIsNan16(EmitContext& ctx, std::string value) { 978void EmitFPIsNan16(EmitContext& ctx, std::string_view value) {
971 NotImplemented(); 979 NotImplemented();
972} 980}
973 981
974void EmitFPIsNan32(EmitContext& ctx, std::string value) { 982void EmitFPIsNan32(EmitContext& ctx, std::string_view value) {
975 NotImplemented(); 983 NotImplemented();
976} 984}
977 985
978void EmitFPIsNan64(EmitContext& ctx, std::string value) { 986void EmitFPIsNan64(EmitContext& ctx, std::string_view value) {
979 NotImplemented(); 987 NotImplemented();
980} 988}
981 989
982void EmitSharedAtomicIAdd32(EmitContext& ctx, std::string pointer_offset, std::string value) { 990void EmitSharedAtomicIAdd32(EmitContext& ctx, std::string_view pointer_offset,
991 std::string_view value) {
983 NotImplemented(); 992 NotImplemented();
984} 993}
985 994
986void EmitSharedAtomicSMin32(EmitContext& ctx, std::string pointer_offset, std::string value) { 995void EmitSharedAtomicSMin32(EmitContext& ctx, std::string_view pointer_offset,
996 std::string_view value) {
987 NotImplemented(); 997 NotImplemented();
988} 998}
989 999
990void EmitSharedAtomicUMin32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1000void EmitSharedAtomicUMin32(EmitContext& ctx, std::string_view pointer_offset,
1001 std::string_view value) {
991 NotImplemented(); 1002 NotImplemented();
992} 1003}
993 1004
994void EmitSharedAtomicSMax32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1005void EmitSharedAtomicSMax32(EmitContext& ctx, std::string_view pointer_offset,
1006 std::string_view value) {
995 NotImplemented(); 1007 NotImplemented();
996} 1008}
997 1009
998void EmitSharedAtomicUMax32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1010void EmitSharedAtomicUMax32(EmitContext& ctx, std::string_view pointer_offset,
1011 std::string_view value) {
999 NotImplemented(); 1012 NotImplemented();
1000} 1013}
1001 1014
1002void EmitSharedAtomicInc32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1015void EmitSharedAtomicInc32(EmitContext& ctx, std::string_view pointer_offset,
1016 std::string_view value) {
1003 NotImplemented(); 1017 NotImplemented();
1004} 1018}
1005 1019
1006void EmitSharedAtomicDec32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1020void EmitSharedAtomicDec32(EmitContext& ctx, std::string_view pointer_offset,
1021 std::string_view value) {
1007 NotImplemented(); 1022 NotImplemented();
1008} 1023}
1009 1024
1010void EmitSharedAtomicAnd32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1025void EmitSharedAtomicAnd32(EmitContext& ctx, std::string_view pointer_offset,
1026 std::string_view value) {
1011 NotImplemented(); 1027 NotImplemented();
1012} 1028}
1013 1029
1014void EmitSharedAtomicOr32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1030void EmitSharedAtomicOr32(EmitContext& ctx, std::string_view pointer_offset,
1031 std::string_view value) {
1015 NotImplemented(); 1032 NotImplemented();
1016} 1033}
1017 1034
1018void EmitSharedAtomicXor32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1035void EmitSharedAtomicXor32(EmitContext& ctx, std::string_view pointer_offset,
1036 std::string_view value) {
1019 NotImplemented(); 1037 NotImplemented();
1020} 1038}
1021 1039
1022void EmitSharedAtomicExchange32(EmitContext& ctx, std::string pointer_offset, std::string value) { 1040void EmitSharedAtomicExchange32(EmitContext& ctx, std::string_view pointer_offset,
1041 std::string_view value) {
1023 NotImplemented(); 1042 NotImplemented();
1024} 1043}
1025 1044
1026void EmitSharedAtomicExchange64(EmitContext& ctx, std::string pointer_offset, std::string value) { 1045void EmitSharedAtomicExchange64(EmitContext& ctx, std::string_view pointer_offset,
1046 std::string_view value) {
1027 NotImplemented(); 1047 NotImplemented();
1028} 1048}
1029 1049
1030void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1050void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1031 std::string value) { 1051 std::string_view value) {
1032 NotImplemented(); 1052 NotImplemented();
1033} 1053}
1034 1054
1035void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1055void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1036 std::string value) { 1056 std::string_view value) {
1037 NotImplemented(); 1057 NotImplemented();
1038} 1058}
1039 1059
1040void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1060void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1041 std::string value) { 1061 std::string_view value) {
1042 NotImplemented(); 1062 NotImplemented();
1043} 1063}
1044 1064
1045void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1065void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1046 std::string value) { 1066 std::string_view value) {
1047 NotImplemented(); 1067 NotImplemented();
1048} 1068}
1049 1069
1050void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1070void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1051 std::string value) { 1071 std::string_view value) {
1052 NotImplemented(); 1072 NotImplemented();
1053} 1073}
1054 1074
1055void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1075void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1056 std::string value) { 1076 std::string_view value) {
1057 NotImplemented(); 1077 NotImplemented();
1058} 1078}
1059 1079
1060void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1080void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1061 std::string value) { 1081 std::string_view value) {
1062 NotImplemented(); 1082 NotImplemented();
1063} 1083}
1064 1084
1065void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1085void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1066 std::string value) { 1086 std::string_view value) {
1067 NotImplemented(); 1087 NotImplemented();
1068} 1088}
1069 1089
1070void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1090void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1071 std::string value) { 1091 std::string_view value) {
1072 NotImplemented(); 1092 NotImplemented();
1073} 1093}
1074 1094
1075void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1095void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1076 std::string value) { 1096 std::string_view value) {
1077 NotImplemented(); 1097 NotImplemented();
1078} 1098}
1079 1099
1080void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding, 1100void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding,
1081 const IR::Value& offset, std::string value) { 1101 const IR::Value& offset, std::string_view value) {
1082 NotImplemented(); 1102 NotImplemented();
1083} 1103}
1084 1104
1085void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1105void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1086 std::string value) { 1106 std::string_view value) {
1087 NotImplemented(); 1107 NotImplemented();
1088} 1108}
1089 1109
1090void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1110void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1091 std::string value) { 1111 std::string_view value) {
1092 NotImplemented(); 1112 NotImplemented();
1093} 1113}
1094 1114
1095void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1115void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1096 std::string value) { 1116 std::string_view value) {
1097 NotImplemented(); 1117 NotImplemented();
1098} 1118}
1099 1119
1100void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1120void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1101 std::string value) { 1121 std::string_view value) {
1102 NotImplemented(); 1122 NotImplemented();
1103} 1123}
1104 1124
1105void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1125void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1106 std::string value) { 1126 std::string_view value) {
1107 NotImplemented(); 1127 NotImplemented();
1108} 1128}
1109 1129
1110void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1130void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1111 std::string value) { 1131 std::string_view value) {
1112 NotImplemented(); 1132 NotImplemented();
1113} 1133}
1114 1134
1115void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1135void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1116 std::string value) { 1136 std::string_view value) {
1117 NotImplemented(); 1137 NotImplemented();
1118} 1138}
1119 1139
1120void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1140void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1121 std::string value) { 1141 std::string_view value) {
1122 NotImplemented(); 1142 NotImplemented();
1123} 1143}
1124 1144
1125void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, 1145void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding,
1126 const IR::Value& offset, std::string value) { 1146 const IR::Value& offset, std::string_view value) {
1127 NotImplemented(); 1147 NotImplemented();
1128} 1148}
1129 1149
1130void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1150void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1131 std::string value) { 1151 std::string_view value) {
1132 NotImplemented(); 1152 NotImplemented();
1133} 1153}
1134 1154
1135void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1155void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1136 std::string value) { 1156 std::string_view value) {
1137 NotImplemented(); 1157 NotImplemented();
1138} 1158}
1139 1159
1140void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1160void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1141 std::string value) { 1161 std::string_view value) {
1142 NotImplemented(); 1162 NotImplemented();
1143} 1163}
1144 1164
1145void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1165void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1146 std::string value) { 1166 std::string_view value) {
1147 NotImplemented(); 1167 NotImplemented();
1148} 1168}
1149 1169
1150void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1170void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1151 std::string value) { 1171 std::string_view value) {
1152 NotImplemented(); 1172 NotImplemented();
1153} 1173}
1154 1174
1155void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1175void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1156 std::string value) { 1176 std::string_view value) {
1157 NotImplemented(); 1177 NotImplemented();
1158} 1178}
1159 1179
1160void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, 1180void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
1161 std::string value) { 1181 std::string_view value) {
1162 NotImplemented(); 1182 NotImplemented();
1163} 1183}
1164 1184
@@ -1278,211 +1298,211 @@ void EmitGlobalAtomicMaxF32x2(EmitContext& ctx) {
1278 NotImplemented(); 1298 NotImplemented();
1279} 1299}
1280 1300
1281void EmitLogicalOr(EmitContext& ctx, std::string a, std::string b) { 1301void EmitLogicalOr(EmitContext& ctx, std::string_view a, std::string_view b) {
1282 NotImplemented(); 1302 NotImplemented();
1283} 1303}
1284 1304
1285void EmitLogicalAnd(EmitContext& ctx, std::string a, std::string b) { 1305void EmitLogicalAnd(EmitContext& ctx, std::string_view a, std::string_view b) {
1286 NotImplemented(); 1306 NotImplemented();
1287} 1307}
1288 1308
1289void EmitLogicalXor(EmitContext& ctx, std::string a, std::string b) { 1309void EmitLogicalXor(EmitContext& ctx, std::string_view a, std::string_view b) {
1290 NotImplemented(); 1310 NotImplemented();
1291} 1311}
1292 1312
1293void EmitLogicalNot(EmitContext& ctx, std::string value) { 1313void EmitLogicalNot(EmitContext& ctx, std::string_view value) {
1294 NotImplemented(); 1314 NotImplemented();
1295} 1315}
1296 1316
1297void EmitConvertS16F16(EmitContext& ctx, std::string value) { 1317void EmitConvertS16F16(EmitContext& ctx, std::string_view value) {
1298 NotImplemented(); 1318 NotImplemented();
1299} 1319}
1300 1320
1301void EmitConvertS16F32(EmitContext& ctx, std::string value) { 1321void EmitConvertS16F32(EmitContext& ctx, std::string_view value) {
1302 NotImplemented(); 1322 NotImplemented();
1303} 1323}
1304 1324
1305void EmitConvertS16F64(EmitContext& ctx, std::string value) { 1325void EmitConvertS16F64(EmitContext& ctx, std::string_view value) {
1306 NotImplemented(); 1326 NotImplemented();
1307} 1327}
1308 1328
1309void EmitConvertS32F16(EmitContext& ctx, std::string value) { 1329void EmitConvertS32F16(EmitContext& ctx, std::string_view value) {
1310 NotImplemented(); 1330 NotImplemented();
1311} 1331}
1312 1332
1313void EmitConvertS32F32(EmitContext& ctx, std::string value) { 1333void EmitConvertS32F32(EmitContext& ctx, std::string_view value) {
1314 NotImplemented(); 1334 NotImplemented();
1315} 1335}
1316 1336
1317void EmitConvertS32F64(EmitContext& ctx, std::string value) { 1337void EmitConvertS32F64(EmitContext& ctx, std::string_view value) {
1318 NotImplemented(); 1338 NotImplemented();
1319} 1339}
1320 1340
1321void EmitConvertS64F16(EmitContext& ctx, std::string value) { 1341void EmitConvertS64F16(EmitContext& ctx, std::string_view value) {
1322 NotImplemented(); 1342 NotImplemented();
1323} 1343}
1324 1344
1325void EmitConvertS64F32(EmitContext& ctx, std::string value) { 1345void EmitConvertS64F32(EmitContext& ctx, std::string_view value) {
1326 NotImplemented(); 1346 NotImplemented();
1327} 1347}
1328 1348
1329void EmitConvertS64F64(EmitContext& ctx, std::string value) { 1349void EmitConvertS64F64(EmitContext& ctx, std::string_view value) {
1330 NotImplemented(); 1350 NotImplemented();
1331} 1351}
1332 1352
1333void EmitConvertU16F16(EmitContext& ctx, std::string value) { 1353void EmitConvertU16F16(EmitContext& ctx, std::string_view value) {
1334 NotImplemented(); 1354 NotImplemented();
1335} 1355}
1336 1356
1337void EmitConvertU16F32(EmitContext& ctx, std::string value) { 1357void EmitConvertU16F32(EmitContext& ctx, std::string_view value) {
1338 NotImplemented(); 1358 NotImplemented();
1339} 1359}
1340 1360
1341void EmitConvertU16F64(EmitContext& ctx, std::string value) { 1361void EmitConvertU16F64(EmitContext& ctx, std::string_view value) {
1342 NotImplemented(); 1362 NotImplemented();
1343} 1363}
1344 1364
1345void EmitConvertU32F16(EmitContext& ctx, std::string value) { 1365void EmitConvertU32F16(EmitContext& ctx, std::string_view value) {
1346 NotImplemented(); 1366 NotImplemented();
1347} 1367}
1348 1368
1349void EmitConvertU32F32(EmitContext& ctx, std::string value) { 1369void EmitConvertU32F32(EmitContext& ctx, std::string_view value) {
1350 NotImplemented(); 1370 NotImplemented();
1351} 1371}
1352 1372
1353void EmitConvertU32F64(EmitContext& ctx, std::string value) { 1373void EmitConvertU32F64(EmitContext& ctx, std::string_view value) {
1354 NotImplemented(); 1374 NotImplemented();
1355} 1375}
1356 1376
1357void EmitConvertU64F16(EmitContext& ctx, std::string value) { 1377void EmitConvertU64F16(EmitContext& ctx, std::string_view value) {
1358 NotImplemented(); 1378 NotImplemented();
1359} 1379}
1360 1380
1361void EmitConvertU64F32(EmitContext& ctx, std::string value) { 1381void EmitConvertU64F32(EmitContext& ctx, std::string_view value) {
1362 NotImplemented(); 1382 NotImplemented();
1363} 1383}
1364 1384
1365void EmitConvertU64F64(EmitContext& ctx, std::string value) { 1385void EmitConvertU64F64(EmitContext& ctx, std::string_view value) {
1366 NotImplemented(); 1386 NotImplemented();
1367} 1387}
1368 1388
1369void EmitConvertU64U32(EmitContext& ctx, std::string value) { 1389void EmitConvertU64U32(EmitContext& ctx, std::string_view value) {
1370 NotImplemented(); 1390 NotImplemented();
1371} 1391}
1372 1392
1373void EmitConvertU32U64(EmitContext& ctx, std::string value) { 1393void EmitConvertU32U64(EmitContext& ctx, std::string_view value) {
1374 NotImplemented(); 1394 NotImplemented();
1375} 1395}
1376 1396
1377void EmitConvertF16F32(EmitContext& ctx, std::string value) { 1397void EmitConvertF16F32(EmitContext& ctx, std::string_view value) {
1378 NotImplemented(); 1398 NotImplemented();
1379} 1399}
1380 1400
1381void EmitConvertF32F16(EmitContext& ctx, std::string value) { 1401void EmitConvertF32F16(EmitContext& ctx, std::string_view value) {
1382 NotImplemented(); 1402 NotImplemented();
1383} 1403}
1384 1404
1385void EmitConvertF32F64(EmitContext& ctx, std::string value) { 1405void EmitConvertF32F64(EmitContext& ctx, std::string_view value) {
1386 NotImplemented(); 1406 NotImplemented();
1387} 1407}
1388 1408
1389void EmitConvertF64F32(EmitContext& ctx, std::string value) { 1409void EmitConvertF64F32(EmitContext& ctx, std::string_view value) {
1390 NotImplemented(); 1410 NotImplemented();
1391} 1411}
1392 1412
1393void EmitConvertF16S8(EmitContext& ctx, std::string value) { 1413void EmitConvertF16S8(EmitContext& ctx, std::string_view value) {
1394 NotImplemented(); 1414 NotImplemented();
1395} 1415}
1396 1416
1397void EmitConvertF16S16(EmitContext& ctx, std::string value) { 1417void EmitConvertF16S16(EmitContext& ctx, std::string_view value) {
1398 NotImplemented(); 1418 NotImplemented();
1399} 1419}
1400 1420
1401void EmitConvertF16S32(EmitContext& ctx, std::string value) { 1421void EmitConvertF16S32(EmitContext& ctx, std::string_view value) {
1402 NotImplemented(); 1422 NotImplemented();
1403} 1423}
1404 1424
1405void EmitConvertF16S64(EmitContext& ctx, std::string value) { 1425void EmitConvertF16S64(EmitContext& ctx, std::string_view value) {
1406 NotImplemented(); 1426 NotImplemented();
1407} 1427}
1408 1428
1409void EmitConvertF16U8(EmitContext& ctx, std::string value) { 1429void EmitConvertF16U8(EmitContext& ctx, std::string_view value) {
1410 NotImplemented(); 1430 NotImplemented();
1411} 1431}
1412 1432
1413void EmitConvertF16U16(EmitContext& ctx, std::string value) { 1433void EmitConvertF16U16(EmitContext& ctx, std::string_view value) {
1414 NotImplemented(); 1434 NotImplemented();
1415} 1435}
1416 1436
1417void EmitConvertF16U32(EmitContext& ctx, std::string value) { 1437void EmitConvertF16U32(EmitContext& ctx, std::string_view value) {
1418 NotImplemented(); 1438 NotImplemented();
1419} 1439}
1420 1440
1421void EmitConvertF16U64(EmitContext& ctx, std::string value) { 1441void EmitConvertF16U64(EmitContext& ctx, std::string_view value) {
1422 NotImplemented(); 1442 NotImplemented();
1423} 1443}
1424 1444
1425void EmitConvertF32S8(EmitContext& ctx, std::string value) { 1445void EmitConvertF32S8(EmitContext& ctx, std::string_view value) {
1426 NotImplemented(); 1446 NotImplemented();
1427} 1447}
1428 1448
1429void EmitConvertF32S16(EmitContext& ctx, std::string value) { 1449void EmitConvertF32S16(EmitContext& ctx, std::string_view value) {
1430 NotImplemented(); 1450 NotImplemented();
1431} 1451}
1432 1452
1433void EmitConvertF32S32(EmitContext& ctx, std::string value) { 1453void EmitConvertF32S32(EmitContext& ctx, std::string_view value) {
1434 NotImplemented(); 1454 NotImplemented();
1435} 1455}
1436 1456
1437void EmitConvertF32S64(EmitContext& ctx, std::string value) { 1457void EmitConvertF32S64(EmitContext& ctx, std::string_view value) {
1438 NotImplemented(); 1458 NotImplemented();
1439} 1459}
1440 1460
1441void EmitConvertF32U8(EmitContext& ctx, std::string value) { 1461void EmitConvertF32U8(EmitContext& ctx, std::string_view value) {
1442 NotImplemented(); 1462 NotImplemented();
1443} 1463}
1444 1464
1445void EmitConvertF32U16(EmitContext& ctx, std::string value) { 1465void EmitConvertF32U16(EmitContext& ctx, std::string_view value) {
1446 NotImplemented(); 1466 NotImplemented();
1447} 1467}
1448 1468
1449void EmitConvertF32U32(EmitContext& ctx, std::string value) { 1469void EmitConvertF32U32(EmitContext& ctx, std::string_view value) {
1450 NotImplemented(); 1470 NotImplemented();
1451} 1471}
1452 1472
1453void EmitConvertF32U64(EmitContext& ctx, std::string value) { 1473void EmitConvertF32U64(EmitContext& ctx, std::string_view value) {
1454 NotImplemented(); 1474 NotImplemented();
1455} 1475}
1456 1476
1457void EmitConvertF64S8(EmitContext& ctx, std::string value) { 1477void EmitConvertF64S8(EmitContext& ctx, std::string_view value) {
1458 NotImplemented(); 1478 NotImplemented();
1459} 1479}
1460 1480
1461void EmitConvertF64S16(EmitContext& ctx, std::string value) { 1481void EmitConvertF64S16(EmitContext& ctx, std::string_view value) {
1462 NotImplemented(); 1482 NotImplemented();
1463} 1483}
1464 1484
1465void EmitConvertF64S32(EmitContext& ctx, std::string value) { 1485void EmitConvertF64S32(EmitContext& ctx, std::string_view value) {
1466 NotImplemented(); 1486 NotImplemented();
1467} 1487}
1468 1488
1469void EmitConvertF64S64(EmitContext& ctx, std::string value) { 1489void EmitConvertF64S64(EmitContext& ctx, std::string_view value) {
1470 NotImplemented(); 1490 NotImplemented();
1471} 1491}
1472 1492
1473void EmitConvertF64U8(EmitContext& ctx, std::string value) { 1493void EmitConvertF64U8(EmitContext& ctx, std::string_view value) {
1474 NotImplemented(); 1494 NotImplemented();
1475} 1495}
1476 1496
1477void EmitConvertF64U16(EmitContext& ctx, std::string value) { 1497void EmitConvertF64U16(EmitContext& ctx, std::string_view value) {
1478 NotImplemented(); 1498 NotImplemented();
1479} 1499}
1480 1500
1481void EmitConvertF64U32(EmitContext& ctx, std::string value) { 1501void EmitConvertF64U32(EmitContext& ctx, std::string_view value) {
1482 NotImplemented(); 1502 NotImplemented();
1483} 1503}
1484 1504
1485void EmitConvertF64U64(EmitContext& ctx, std::string value) { 1505void EmitConvertF64U64(EmitContext& ctx, std::string_view value) {
1486 NotImplemented(); 1506 NotImplemented();
1487} 1507}
1488 1508
@@ -1583,64 +1603,69 @@ void EmitBoundImageWrite(EmitContext&) {
1583} 1603}
1584 1604
1585void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1605void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1586 std::string coords, std::string bias_lc, const IR::Value& offset) { 1606 std::string_view coords, std::string_view bias_lc,
1607 const IR::Value& offset) {
1587 NotImplemented(); 1608 NotImplemented();
1588} 1609}
1589 1610
1590void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1611void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1591 std::string coords, std::string lod_lc, const IR::Value& offset) { 1612 std::string_view coords, std::string_view lod_lc,
1613 const IR::Value& offset) {
1592 NotImplemented(); 1614 NotImplemented();
1593} 1615}
1594 1616
1595void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1617void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1596 std::string coords, std::string dref, std::string bias_lc, 1618 std::string_view coords, std::string_view dref,
1597 const IR::Value& offset) { 1619 std::string_view bias_lc, const IR::Value& offset) {
1598 NotImplemented(); 1620 NotImplemented();
1599} 1621}
1600 1622
1601void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1623void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1602 std::string coords, std::string dref, std::string lod_lc, 1624 std::string_view coords, std::string_view dref,
1603 const IR::Value& offset) { 1625 std::string_view lod_lc, const IR::Value& offset) {
1604 NotImplemented(); 1626 NotImplemented();
1605} 1627}
1606 1628
1607void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 1629void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1608 const IR::Value& offset, const IR::Value& offset2) { 1630 std::string_view coords, const IR::Value& offset, const IR::Value& offset2) {
1609 NotImplemented(); 1631 NotImplemented();
1610} 1632}
1611 1633
1612void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1634void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1613 std::string coords, const IR::Value& offset, const IR::Value& offset2, 1635 std::string_view coords, const IR::Value& offset, const IR::Value& offset2,
1614 std::string dref) { 1636 std::string_view dref) {
1615 NotImplemented(); 1637 NotImplemented();
1616} 1638}
1617 1639
1618void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 1640void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1619 std::string offset, std::string lod, std::string ms) { 1641 std::string_view coords, std::string_view offset, std::string_view lod,
1642 std::string_view ms) {
1620 NotImplemented(); 1643 NotImplemented();
1621} 1644}
1622 1645
1623void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1646void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1624 std::string lod) { 1647 std::string_view lod) {
1625 NotImplemented(); 1648 NotImplemented();
1626} 1649}
1627 1650
1628void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1651void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1629 std::string coords) { 1652 std::string_view coords) {
1630 NotImplemented(); 1653 NotImplemented();
1631} 1654}
1632 1655
1633void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 1656void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1634 std::string derivates, std::string offset, std::string lod_clamp) { 1657 std::string_view coords, std::string_view derivates, std::string_view offset,
1658 std::string_view lod_clamp) {
1635 NotImplemented(); 1659 NotImplemented();
1636} 1660}
1637 1661
1638void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords) { 1662void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1663 std::string_view coords) {
1639 NotImplemented(); 1664 NotImplemented();
1640} 1665}
1641 1666
1642void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, std::string coords, 1667void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1643 std::string color) { 1668 std::string_view coords, std::string_view color) {
1644 NotImplemented(); 1669 NotImplemented();
1645} 1670}
1646 1671
@@ -1733,57 +1758,57 @@ void EmitBoundImageAtomicExchange32(EmitContext&) {
1733} 1758}
1734 1759
1735void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1760void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1736 std::string coords, std::string value) { 1761 std::string_view coords, std::string_view value) {
1737 NotImplemented(); 1762 NotImplemented();
1738} 1763}
1739 1764
1740void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1765void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1741 std::string coords, std::string value) { 1766 std::string_view coords, std::string_view value) {
1742 NotImplemented(); 1767 NotImplemented();
1743} 1768}
1744 1769
1745void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1770void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1746 std::string coords, std::string value) { 1771 std::string_view coords, std::string_view value) {
1747 NotImplemented(); 1772 NotImplemented();
1748} 1773}
1749 1774
1750void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1775void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1751 std::string coords, std::string value) { 1776 std::string_view coords, std::string_view value) {
1752 NotImplemented(); 1777 NotImplemented();
1753} 1778}
1754 1779
1755void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1780void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1756 std::string coords, std::string value) { 1781 std::string_view coords, std::string_view value) {
1757 NotImplemented(); 1782 NotImplemented();
1758} 1783}
1759 1784
1760void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1785void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1761 std::string coords, std::string value) { 1786 std::string_view coords, std::string_view value) {
1762 NotImplemented(); 1787 NotImplemented();
1763} 1788}
1764 1789
1765void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1790void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1766 std::string coords, std::string value) { 1791 std::string_view coords, std::string_view value) {
1767 NotImplemented(); 1792 NotImplemented();
1768} 1793}
1769 1794
1770void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1795void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1771 std::string coords, std::string value) { 1796 std::string_view coords, std::string_view value) {
1772 NotImplemented(); 1797 NotImplemented();
1773} 1798}
1774 1799
1775void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1800void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1776 std::string coords, std::string value) { 1801 std::string_view coords, std::string_view value) {
1777 NotImplemented(); 1802 NotImplemented();
1778} 1803}
1779 1804
1780void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1805void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1781 std::string coords, std::string value) { 1806 std::string_view coords, std::string_view value) {
1782 NotImplemented(); 1807 NotImplemented();
1783} 1808}
1784 1809
1785void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, 1810void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
1786 std::string coords, std::string value) { 1811 std::string_view coords, std::string_view value) {
1787 NotImplemented(); 1812 NotImplemented();
1788} 1813}
1789 1814
@@ -1791,19 +1816,19 @@ void EmitLaneId(EmitContext& ctx) {
1791 NotImplemented(); 1816 NotImplemented();
1792} 1817}
1793 1818
1794void EmitVoteAll(EmitContext& ctx, std::string pred) { 1819void EmitVoteAll(EmitContext& ctx, std::string_view pred) {
1795 NotImplemented(); 1820 NotImplemented();
1796} 1821}
1797 1822
1798void EmitVoteAny(EmitContext& ctx, std::string pred) { 1823void EmitVoteAny(EmitContext& ctx, std::string_view pred) {
1799 NotImplemented(); 1824 NotImplemented();
1800} 1825}
1801 1826
1802void EmitVoteEqual(EmitContext& ctx, std::string pred) { 1827void EmitVoteEqual(EmitContext& ctx, std::string_view pred) {
1803 NotImplemented(); 1828 NotImplemented();
1804} 1829}
1805 1830
1806void EmitSubgroupBallot(EmitContext& ctx, std::string pred) { 1831void EmitSubgroupBallot(EmitContext& ctx, std::string_view pred) {
1807 NotImplemented(); 1832 NotImplemented();
1808} 1833}
1809 1834
@@ -1827,43 +1852,47 @@ void EmitSubgroupGeMask(EmitContext& ctx) {
1827 NotImplemented(); 1852 NotImplemented();
1828} 1853}
1829 1854
1830void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 1855void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, std::string_view value,
1831 std::string clamp, std::string segmentation_mask) { 1856 std::string_view index, std::string_view clamp,
1857 std::string_view segmentation_mask) {
1832 NotImplemented(); 1858 NotImplemented();
1833} 1859}
1834 1860
1835void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 1861void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, std::string_view value, std::string_view index,
1836 std::string clamp, std::string segmentation_mask) { 1862 std::string_view clamp, std::string_view segmentation_mask) {
1837 NotImplemented(); 1863 NotImplemented();
1838} 1864}
1839 1865
1840void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 1866void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, std::string_view value,
1841 std::string clamp, std::string segmentation_mask) { 1867 std::string_view index, std::string_view clamp,
1868 std::string_view segmentation_mask) {
1842 NotImplemented(); 1869 NotImplemented();
1843} 1870}
1844 1871
1845void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, std::string value, std::string index, 1872void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, std::string_view value,
1846 std::string clamp, std::string segmentation_mask) { 1873 std::string_view index, std::string_view clamp,
1874 std::string_view segmentation_mask) {
1847 NotImplemented(); 1875 NotImplemented();
1848} 1876}
1849 1877
1850void EmitFSwizzleAdd(EmitContext& ctx, std::string op_a, std::string op_b, std::string swizzle) { 1878void EmitFSwizzleAdd(EmitContext& ctx, std::string_view op_a, std::string_view op_b,
1879 std::string_view swizzle) {
1851 NotImplemented(); 1880 NotImplemented();
1852} 1881}
1853 1882
1854void EmitDPdxFine(EmitContext& ctx, std::string op_a) { 1883void EmitDPdxFine(EmitContext& ctx, std::string_view op_a) {
1855 NotImplemented(); 1884 NotImplemented();
1856} 1885}
1857 1886
1858void EmitDPdyFine(EmitContext& ctx, std::string op_a) { 1887void EmitDPdyFine(EmitContext& ctx, std::string_view op_a) {
1859 NotImplemented(); 1888 NotImplemented();
1860} 1889}
1861 1890
1862void EmitDPdxCoarse(EmitContext& ctx, std::string op_a) { 1891void EmitDPdxCoarse(EmitContext& ctx, std::string_view op_a) {
1863 NotImplemented(); 1892 NotImplemented();
1864} 1893}
1865 1894
1866void EmitDPdyCoarse(EmitContext& ctx, std::string op_a) { 1895void EmitDPdyCoarse(EmitContext& ctx, std::string_view op_a) {
1867 NotImplemented(); 1896 NotImplemented();
1868} 1897}
1869 1898