summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
diff options
context:
space:
mode:
authorGravatar ameerj2021-05-21 19:55:58 -0400
committerGravatar ameerj2021-07-22 21:51:35 -0400
commitfb75d122a242a5e43d36edc916e16a873f807acd (patch)
tree1f2c7e7d8f001072d118939725cb18669e26791f /src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
parentglsl: Pass IR::Inst& to Emit functions (diff)
downloadyuzu-fb75d122a242a5e43d36edc916e16a873f807acd.tar.gz
yuzu-fb75d122a242a5e43d36edc916e16a873f807acd.tar.xz
yuzu-fb75d122a242a5e43d36edc916e16a873f807acd.zip
glsl: Use std::string_view for Emit function args.
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl_instructions.h')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_instructions.h788
1 files changed, 412 insertions, 376 deletions
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