emit_glasm_not_implemented.cpp 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <string_view>
  5. #include "shader_recompiler/backend/glasm/emit_context.h"
  6. #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
  7. #include "shader_recompiler/frontend/ir/program.h"
  8. #include "shader_recompiler/frontend/ir/value.h"
  9. #ifdef _MSC_VER
  10. #pragma warning(disable : 4100)
  11. #endif
  12. namespace Shader::Backend::GLASM {
  13. #define NotImplemented() throw NotImplementedException("GLASM instruction {}", __LINE__)
  14. void EmitPhi(EmitContext& ctx, IR::Inst& inst) {
  15. NotImplemented();
  16. }
  17. void EmitVoid(EmitContext& ctx) {
  18. NotImplemented();
  19. }
  20. void EmitBranch(EmitContext& ctx) {
  21. NotImplemented();
  22. }
  23. void EmitBranchConditional(EmitContext& ctx) {
  24. NotImplemented();
  25. }
  26. void EmitLoopMerge(EmitContext& ctx) {
  27. NotImplemented();
  28. }
  29. void EmitSelectionMerge(EmitContext& ctx) {
  30. NotImplemented();
  31. }
  32. void EmitReturn(EmitContext& ctx) {
  33. ctx.Add("RET;");
  34. }
  35. void EmitJoin(EmitContext& ctx) {
  36. NotImplemented();
  37. }
  38. void EmitUnreachable(EmitContext& ctx) {
  39. NotImplemented();
  40. }
  41. void EmitDemoteToHelperInvocation(EmitContext& ctx) {
  42. NotImplemented();
  43. }
  44. void EmitBarrier(EmitContext& ctx) {
  45. NotImplemented();
  46. }
  47. void EmitWorkgroupMemoryBarrier(EmitContext& ctx) {
  48. NotImplemented();
  49. }
  50. void EmitDeviceMemoryBarrier(EmitContext& ctx) {
  51. NotImplemented();
  52. }
  53. void EmitPrologue(EmitContext& ctx) {
  54. // TODO
  55. }
  56. void EmitEpilogue(EmitContext& ctx) {
  57. // TODO
  58. }
  59. void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) {
  60. NotImplemented();
  61. }
  62. void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
  63. NotImplemented();
  64. }
  65. void EmitGetRegister(EmitContext& ctx) {
  66. NotImplemented();
  67. }
  68. void EmitSetRegister(EmitContext& ctx) {
  69. NotImplemented();
  70. }
  71. void EmitGetPred(EmitContext& ctx) {
  72. NotImplemented();
  73. }
  74. void EmitSetPred(EmitContext& ctx) {
  75. NotImplemented();
  76. }
  77. void EmitSetGotoVariable(EmitContext& ctx) {
  78. NotImplemented();
  79. }
  80. void EmitGetGotoVariable(EmitContext& ctx) {
  81. NotImplemented();
  82. }
  83. void EmitSetIndirectBranchVariable(EmitContext& ctx) {
  84. NotImplemented();
  85. }
  86. void EmitGetIndirectBranchVariable(EmitContext& ctx) {
  87. NotImplemented();
  88. }
  89. void EmitGetZFlag(EmitContext& ctx) {
  90. NotImplemented();
  91. }
  92. void EmitGetSFlag(EmitContext& ctx) {
  93. NotImplemented();
  94. }
  95. void EmitGetCFlag(EmitContext& ctx) {
  96. NotImplemented();
  97. }
  98. void EmitGetOFlag(EmitContext& ctx) {
  99. NotImplemented();
  100. }
  101. void EmitSetZFlag(EmitContext& ctx) {
  102. NotImplemented();
  103. }
  104. void EmitSetSFlag(EmitContext& ctx) {
  105. NotImplemented();
  106. }
  107. void EmitSetCFlag(EmitContext& ctx) {
  108. NotImplemented();
  109. }
  110. void EmitSetOFlag(EmitContext& ctx) {
  111. NotImplemented();
  112. }
  113. void EmitWorkgroupId(EmitContext& ctx) {
  114. NotImplemented();
  115. }
  116. void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst) {
  117. ctx.Add("MOV.S {},invocation.localid;", inst);
  118. }
  119. void EmitInvocationId(EmitContext& ctx) {
  120. NotImplemented();
  121. }
  122. void EmitSampleId(EmitContext& ctx) {
  123. NotImplemented();
  124. }
  125. void EmitIsHelperInvocation(EmitContext& ctx) {
  126. NotImplemented();
  127. }
  128. void EmitYDirection(EmitContext& ctx) {
  129. NotImplemented();
  130. }
  131. void EmitLoadLocal(EmitContext& ctx, ScalarU32 word_offset) {
  132. NotImplemented();
  133. }
  134. void EmitWriteLocal(EmitContext& ctx, ScalarU32 word_offset, ScalarU32 value) {
  135. NotImplemented();
  136. }
  137. void EmitUndefU1(EmitContext& ctx) {
  138. NotImplemented();
  139. }
  140. void EmitUndefU8(EmitContext& ctx) {
  141. NotImplemented();
  142. }
  143. void EmitUndefU16(EmitContext& ctx) {
  144. NotImplemented();
  145. }
  146. void EmitUndefU32(EmitContext& ctx) {
  147. NotImplemented();
  148. }
  149. void EmitUndefU64(EmitContext& ctx) {
  150. NotImplemented();
  151. }
  152. void EmitLoadSharedU8(EmitContext& ctx, ScalarU32 offset) {
  153. NotImplemented();
  154. }
  155. void EmitLoadSharedS8(EmitContext& ctx, ScalarU32 offset) {
  156. NotImplemented();
  157. }
  158. void EmitLoadSharedU16(EmitContext& ctx, ScalarU32 offset) {
  159. NotImplemented();
  160. }
  161. void EmitLoadSharedS16(EmitContext& ctx, ScalarU32 offset) {
  162. NotImplemented();
  163. }
  164. void EmitLoadSharedU32(EmitContext& ctx, ScalarU32 offset) {
  165. NotImplemented();
  166. }
  167. void EmitLoadSharedU64(EmitContext& ctx, ScalarU32 offset) {
  168. NotImplemented();
  169. }
  170. void EmitLoadSharedU128(EmitContext& ctx, ScalarU32 offset) {
  171. NotImplemented();
  172. }
  173. void EmitWriteSharedU8(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  174. NotImplemented();
  175. }
  176. void EmitWriteSharedU16(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  177. NotImplemented();
  178. }
  179. void EmitWriteSharedU32(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  180. NotImplemented();
  181. }
  182. void EmitWriteSharedU64(EmitContext& ctx, ScalarU32 offset, Register value) {
  183. NotImplemented();
  184. }
  185. void EmitWriteSharedU128(EmitContext& ctx, ScalarU32 offset, Register value) {
  186. NotImplemented();
  187. }
  188. void EmitSelectU1(EmitContext& ctx, ScalarS32 cond, ScalarS32 true_value, ScalarS32 false_value) {
  189. NotImplemented();
  190. }
  191. void EmitSelectU8(EmitContext& ctx, ScalarS32 cond, ScalarS32 true_value, ScalarS32 false_value) {
  192. NotImplemented();
  193. }
  194. void EmitSelectU16(EmitContext& ctx, ScalarS32 cond, ScalarS32 true_value, ScalarS32 false_value) {
  195. NotImplemented();
  196. }
  197. void EmitSelectU32(EmitContext& ctx, ScalarS32 cond, ScalarS32 true_value, ScalarS32 false_value) {
  198. NotImplemented();
  199. }
  200. void EmitSelectU64(EmitContext& ctx, ScalarS32 cond, Register true_value, Register false_value) {
  201. NotImplemented();
  202. }
  203. void EmitSelectF16(EmitContext& ctx, ScalarS32 cond, Register true_value, Register false_value) {
  204. NotImplemented();
  205. }
  206. void EmitSelectF32(EmitContext& ctx, ScalarS32 cond, ScalarS32 true_value, ScalarS32 false_value) {
  207. NotImplemented();
  208. }
  209. void EmitSelectF64(EmitContext& ctx, ScalarS32 cond, Register true_value, Register false_value) {
  210. NotImplemented();
  211. }
  212. void EmitPackDouble2x32(EmitContext& ctx, Register value) {
  213. NotImplemented();
  214. }
  215. void EmitUnpackDouble2x32(EmitContext& ctx, Register value) {
  216. NotImplemented();
  217. }
  218. void EmitGetZeroFromOp(EmitContext& ctx) {
  219. NotImplemented();
  220. }
  221. void EmitGetSignFromOp(EmitContext& ctx) {
  222. NotImplemented();
  223. }
  224. void EmitGetCarryFromOp(EmitContext& ctx) {
  225. NotImplemented();
  226. }
  227. void EmitGetOverflowFromOp(EmitContext& ctx) {
  228. NotImplemented();
  229. }
  230. void EmitGetSparseFromOp(EmitContext& ctx) {
  231. NotImplemented();
  232. }
  233. void EmitGetInBoundsFromOp(EmitContext& ctx) {
  234. NotImplemented();
  235. }
  236. void EmitFPIsNan16(EmitContext& ctx, Register value) {
  237. NotImplemented();
  238. }
  239. void EmitFPIsNan32(EmitContext& ctx, ScalarF32 value) {
  240. NotImplemented();
  241. }
  242. void EmitFPIsNan64(EmitContext& ctx, Register value) {
  243. NotImplemented();
  244. }
  245. void EmitSharedAtomicIAdd32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  246. NotImplemented();
  247. }
  248. void EmitSharedAtomicSMin32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarS32 value) {
  249. NotImplemented();
  250. }
  251. void EmitSharedAtomicUMin32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  252. NotImplemented();
  253. }
  254. void EmitSharedAtomicSMax32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarS32 value) {
  255. NotImplemented();
  256. }
  257. void EmitSharedAtomicUMax32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  258. NotImplemented();
  259. }
  260. void EmitSharedAtomicInc32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  261. NotImplemented();
  262. }
  263. void EmitSharedAtomicDec32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  264. NotImplemented();
  265. }
  266. void EmitSharedAtomicAnd32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  267. NotImplemented();
  268. }
  269. void EmitSharedAtomicOr32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  270. NotImplemented();
  271. }
  272. void EmitSharedAtomicXor32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  273. NotImplemented();
  274. }
  275. void EmitSharedAtomicExchange32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  276. NotImplemented();
  277. }
  278. void EmitSharedAtomicExchange64(EmitContext& ctx, ScalarU32 pointer_offset, Register value) {
  279. NotImplemented();
  280. }
  281. void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  282. ScalarU32 value) {
  283. NotImplemented();
  284. }
  285. void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  286. ScalarS32 value) {
  287. NotImplemented();
  288. }
  289. void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  290. ScalarU32 value) {
  291. NotImplemented();
  292. }
  293. void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  294. ScalarS32 value) {
  295. NotImplemented();
  296. }
  297. void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  298. ScalarU32 value) {
  299. NotImplemented();
  300. }
  301. void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  302. ScalarU32 value) {
  303. NotImplemented();
  304. }
  305. void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  306. ScalarU32 value) {
  307. NotImplemented();
  308. }
  309. void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  310. ScalarU32 value) {
  311. NotImplemented();
  312. }
  313. void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  314. ScalarU32 value) {
  315. NotImplemented();
  316. }
  317. void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  318. ScalarU32 value) {
  319. NotImplemented();
  320. }
  321. void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding,
  322. const IR::Value& offset, ScalarU32 value) {
  323. NotImplemented();
  324. }
  325. void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  326. Register value) {
  327. NotImplemented();
  328. }
  329. void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  330. Register value) {
  331. NotImplemented();
  332. }
  333. void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  334. Register value) {
  335. NotImplemented();
  336. }
  337. void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  338. Register value) {
  339. NotImplemented();
  340. }
  341. void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  342. Register value) {
  343. NotImplemented();
  344. }
  345. void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  346. Register value) {
  347. NotImplemented();
  348. }
  349. void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  350. Register value) {
  351. NotImplemented();
  352. }
  353. void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  354. Register value) {
  355. NotImplemented();
  356. }
  357. void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding,
  358. const IR::Value& offset, Register value) {
  359. NotImplemented();
  360. }
  361. void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  362. ScalarF32 value) {
  363. NotImplemented();
  364. }
  365. void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  366. Register value) {
  367. NotImplemented();
  368. }
  369. void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  370. Register value) {
  371. NotImplemented();
  372. }
  373. void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  374. Register value) {
  375. NotImplemented();
  376. }
  377. void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  378. Register value) {
  379. NotImplemented();
  380. }
  381. void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  382. Register value) {
  383. NotImplemented();
  384. }
  385. void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  386. Register value) {
  387. NotImplemented();
  388. }
  389. void EmitGlobalAtomicIAdd32(EmitContext& ctx) {
  390. NotImplemented();
  391. }
  392. void EmitGlobalAtomicSMin32(EmitContext& ctx) {
  393. NotImplemented();
  394. }
  395. void EmitGlobalAtomicUMin32(EmitContext& ctx) {
  396. NotImplemented();
  397. }
  398. void EmitGlobalAtomicSMax32(EmitContext& ctx) {
  399. NotImplemented();
  400. }
  401. void EmitGlobalAtomicUMax32(EmitContext& ctx) {
  402. NotImplemented();
  403. }
  404. void EmitGlobalAtomicInc32(EmitContext& ctx) {
  405. NotImplemented();
  406. }
  407. void EmitGlobalAtomicDec32(EmitContext& ctx) {
  408. NotImplemented();
  409. }
  410. void EmitGlobalAtomicAnd32(EmitContext& ctx) {
  411. NotImplemented();
  412. }
  413. void EmitGlobalAtomicOr32(EmitContext& ctx) {
  414. NotImplemented();
  415. }
  416. void EmitGlobalAtomicXor32(EmitContext& ctx) {
  417. NotImplemented();
  418. }
  419. void EmitGlobalAtomicExchange32(EmitContext& ctx) {
  420. NotImplemented();
  421. }
  422. void EmitGlobalAtomicIAdd64(EmitContext& ctx) {
  423. NotImplemented();
  424. }
  425. void EmitGlobalAtomicSMin64(EmitContext& ctx) {
  426. NotImplemented();
  427. }
  428. void EmitGlobalAtomicUMin64(EmitContext& ctx) {
  429. NotImplemented();
  430. }
  431. void EmitGlobalAtomicSMax64(EmitContext& ctx) {
  432. NotImplemented();
  433. }
  434. void EmitGlobalAtomicUMax64(EmitContext& ctx) {
  435. NotImplemented();
  436. }
  437. void EmitGlobalAtomicInc64(EmitContext& ctx) {
  438. NotImplemented();
  439. }
  440. void EmitGlobalAtomicDec64(EmitContext& ctx) {
  441. NotImplemented();
  442. }
  443. void EmitGlobalAtomicAnd64(EmitContext& ctx) {
  444. NotImplemented();
  445. }
  446. void EmitGlobalAtomicOr64(EmitContext& ctx) {
  447. NotImplemented();
  448. }
  449. void EmitGlobalAtomicXor64(EmitContext& ctx) {
  450. NotImplemented();
  451. }
  452. void EmitGlobalAtomicExchange64(EmitContext& ctx) {
  453. NotImplemented();
  454. }
  455. void EmitGlobalAtomicAddF32(EmitContext& ctx) {
  456. NotImplemented();
  457. }
  458. void EmitGlobalAtomicAddF16x2(EmitContext& ctx) {
  459. NotImplemented();
  460. }
  461. void EmitGlobalAtomicAddF32x2(EmitContext& ctx) {
  462. NotImplemented();
  463. }
  464. void EmitGlobalAtomicMinF16x2(EmitContext& ctx) {
  465. NotImplemented();
  466. }
  467. void EmitGlobalAtomicMinF32x2(EmitContext& ctx) {
  468. NotImplemented();
  469. }
  470. void EmitGlobalAtomicMaxF16x2(EmitContext& ctx) {
  471. NotImplemented();
  472. }
  473. void EmitGlobalAtomicMaxF32x2(EmitContext& ctx) {
  474. NotImplemented();
  475. }
  476. void EmitLogicalOr(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  477. NotImplemented();
  478. }
  479. void EmitLogicalAnd(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  480. NotImplemented();
  481. }
  482. void EmitLogicalXor(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  483. NotImplemented();
  484. }
  485. void EmitLogicalNot(EmitContext& ctx, ScalarS32 value) {
  486. NotImplemented();
  487. }
  488. void EmitConvertS16F16(EmitContext& ctx, Register value) {
  489. NotImplemented();
  490. }
  491. void EmitConvertS16F32(EmitContext& ctx, Register value) {
  492. NotImplemented();
  493. }
  494. void EmitConvertS16F64(EmitContext& ctx, Register value) {
  495. NotImplemented();
  496. }
  497. void EmitConvertS32F16(EmitContext& ctx, Register value) {
  498. NotImplemented();
  499. }
  500. void EmitConvertS32F32(EmitContext& ctx, Register value) {
  501. NotImplemented();
  502. }
  503. void EmitConvertS32F64(EmitContext& ctx, Register value) {
  504. NotImplemented();
  505. }
  506. void EmitConvertS64F16(EmitContext& ctx, Register value) {
  507. NotImplemented();
  508. }
  509. void EmitConvertS64F32(EmitContext& ctx, Register value) {
  510. NotImplemented();
  511. }
  512. void EmitConvertS64F64(EmitContext& ctx, Register value) {
  513. NotImplemented();
  514. }
  515. void EmitConvertU16F16(EmitContext& ctx, Register value) {
  516. NotImplemented();
  517. }
  518. void EmitConvertU16F32(EmitContext& ctx, Register value) {
  519. NotImplemented();
  520. }
  521. void EmitConvertU16F64(EmitContext& ctx, Register value) {
  522. NotImplemented();
  523. }
  524. void EmitConvertU32F16(EmitContext& ctx, Register value) {
  525. NotImplemented();
  526. }
  527. void EmitConvertU32F32(EmitContext& ctx, Register value) {
  528. NotImplemented();
  529. }
  530. void EmitConvertU32F64(EmitContext& ctx, Register value) {
  531. NotImplemented();
  532. }
  533. void EmitConvertU64F16(EmitContext& ctx, Register value) {
  534. NotImplemented();
  535. }
  536. void EmitConvertU64F32(EmitContext& ctx, Register value) {
  537. NotImplemented();
  538. }
  539. void EmitConvertU64F64(EmitContext& ctx, Register value) {
  540. NotImplemented();
  541. }
  542. void EmitConvertU64U32(EmitContext& ctx, Register value) {
  543. NotImplemented();
  544. }
  545. void EmitConvertU32U64(EmitContext& ctx, Register value) {
  546. NotImplemented();
  547. }
  548. void EmitConvertF16F32(EmitContext& ctx, Register value) {
  549. NotImplemented();
  550. }
  551. void EmitConvertF32F16(EmitContext& ctx, Register value) {
  552. NotImplemented();
  553. }
  554. void EmitConvertF32F64(EmitContext& ctx, Register value) {
  555. NotImplemented();
  556. }
  557. void EmitConvertF64F32(EmitContext& ctx, Register value) {
  558. NotImplemented();
  559. }
  560. void EmitConvertF16S8(EmitContext& ctx, Register value) {
  561. NotImplemented();
  562. }
  563. void EmitConvertF16S16(EmitContext& ctx, Register value) {
  564. NotImplemented();
  565. }
  566. void EmitConvertF16S32(EmitContext& ctx, Register value) {
  567. NotImplemented();
  568. }
  569. void EmitConvertF16S64(EmitContext& ctx, Register value) {
  570. NotImplemented();
  571. }
  572. void EmitConvertF16U8(EmitContext& ctx, Register value) {
  573. NotImplemented();
  574. }
  575. void EmitConvertF16U16(EmitContext& ctx, Register value) {
  576. NotImplemented();
  577. }
  578. void EmitConvertF16U32(EmitContext& ctx, Register value) {
  579. NotImplemented();
  580. }
  581. void EmitConvertF16U64(EmitContext& ctx, Register value) {
  582. NotImplemented();
  583. }
  584. void EmitConvertF32S8(EmitContext& ctx, Register value) {
  585. NotImplemented();
  586. }
  587. void EmitConvertF32S16(EmitContext& ctx, Register value) {
  588. NotImplemented();
  589. }
  590. void EmitConvertF32S32(EmitContext& ctx, Register value) {
  591. NotImplemented();
  592. }
  593. void EmitConvertF32S64(EmitContext& ctx, Register value) {
  594. NotImplemented();
  595. }
  596. void EmitConvertF32U8(EmitContext& ctx, Register value) {
  597. NotImplemented();
  598. }
  599. void EmitConvertF32U16(EmitContext& ctx, Register value) {
  600. NotImplemented();
  601. }
  602. void EmitConvertF32U32(EmitContext& ctx, Register value) {
  603. NotImplemented();
  604. }
  605. void EmitConvertF32U64(EmitContext& ctx, Register value) {
  606. NotImplemented();
  607. }
  608. void EmitConvertF64S8(EmitContext& ctx, Register value) {
  609. NotImplemented();
  610. }
  611. void EmitConvertF64S16(EmitContext& ctx, Register value) {
  612. NotImplemented();
  613. }
  614. void EmitConvertF64S32(EmitContext& ctx, Register value) {
  615. NotImplemented();
  616. }
  617. void EmitConvertF64S64(EmitContext& ctx, Register value) {
  618. NotImplemented();
  619. }
  620. void EmitConvertF64U8(EmitContext& ctx, Register value) {
  621. NotImplemented();
  622. }
  623. void EmitConvertF64U16(EmitContext& ctx, Register value) {
  624. NotImplemented();
  625. }
  626. void EmitConvertF64U32(EmitContext& ctx, Register value) {
  627. NotImplemented();
  628. }
  629. void EmitConvertF64U64(EmitContext& ctx, Register value) {
  630. NotImplemented();
  631. }
  632. void EmitBindlessImageSampleImplicitLod(EmitContext&) {
  633. NotImplemented();
  634. }
  635. void EmitBindlessImageSampleExplicitLod(EmitContext&) {
  636. NotImplemented();
  637. }
  638. void EmitBindlessImageSampleDrefImplicitLod(EmitContext&) {
  639. NotImplemented();
  640. }
  641. void EmitBindlessImageSampleDrefExplicitLod(EmitContext&) {
  642. NotImplemented();
  643. }
  644. void EmitBindlessImageGather(EmitContext&) {
  645. NotImplemented();
  646. }
  647. void EmitBindlessImageGatherDref(EmitContext&) {
  648. NotImplemented();
  649. }
  650. void EmitBindlessImageFetch(EmitContext&) {
  651. NotImplemented();
  652. }
  653. void EmitBindlessImageQueryDimensions(EmitContext&) {
  654. NotImplemented();
  655. }
  656. void EmitBindlessImageQueryLod(EmitContext&) {
  657. NotImplemented();
  658. }
  659. void EmitBindlessImageGradient(EmitContext&) {
  660. NotImplemented();
  661. }
  662. void EmitBindlessImageRead(EmitContext&) {
  663. NotImplemented();
  664. }
  665. void EmitBindlessImageWrite(EmitContext&) {
  666. NotImplemented();
  667. }
  668. void EmitBoundImageSampleImplicitLod(EmitContext&) {
  669. NotImplemented();
  670. }
  671. void EmitBoundImageSampleExplicitLod(EmitContext&) {
  672. NotImplemented();
  673. }
  674. void EmitBoundImageSampleDrefImplicitLod(EmitContext&) {
  675. NotImplemented();
  676. }
  677. void EmitBoundImageSampleDrefExplicitLod(EmitContext&) {
  678. NotImplemented();
  679. }
  680. void EmitBoundImageGather(EmitContext&) {
  681. NotImplemented();
  682. }
  683. void EmitBoundImageGatherDref(EmitContext&) {
  684. NotImplemented();
  685. }
  686. void EmitBoundImageFetch(EmitContext&) {
  687. NotImplemented();
  688. }
  689. void EmitBoundImageQueryDimensions(EmitContext&) {
  690. NotImplemented();
  691. }
  692. void EmitBoundImageQueryLod(EmitContext&) {
  693. NotImplemented();
  694. }
  695. void EmitBoundImageGradient(EmitContext&) {
  696. NotImplemented();
  697. }
  698. void EmitBoundImageRead(EmitContext&) {
  699. NotImplemented();
  700. }
  701. void EmitBoundImageWrite(EmitContext&) {
  702. NotImplemented();
  703. }
  704. void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  705. Register coords, Register bias_lc, const IR::Value& offset) {
  706. NotImplemented();
  707. }
  708. void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  709. Register coords, Register lod_lc, const IR::Value& offset) {
  710. NotImplemented();
  711. }
  712. void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  713. Register coords, Register dref, Register bias_lc,
  714. const IR::Value& offset) {
  715. NotImplemented();
  716. }
  717. void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  718. Register coords, Register dref, Register lod_lc,
  719. const IR::Value& offset) {
  720. NotImplemented();
  721. }
  722. void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  723. const IR::Value& offset, const IR::Value& offset2) {
  724. NotImplemented();
  725. }
  726. void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  727. const IR::Value& offset, const IR::Value& offset2, Register dref) {
  728. NotImplemented();
  729. }
  730. void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  731. Register offset, Register lod, Register ms) {
  732. NotImplemented();
  733. }
  734. void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  735. Register lod) {
  736. NotImplemented();
  737. }
  738. void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
  739. NotImplemented();
  740. }
  741. void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  742. Register derivates, Register offset, Register lod_clamp) {
  743. NotImplemented();
  744. }
  745. void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
  746. NotImplemented();
  747. }
  748. void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  749. Register color) {
  750. NotImplemented();
  751. }
  752. void EmitBindlessImageAtomicIAdd32(EmitContext&) {
  753. NotImplemented();
  754. }
  755. void EmitBindlessImageAtomicSMin32(EmitContext&) {
  756. NotImplemented();
  757. }
  758. void EmitBindlessImageAtomicUMin32(EmitContext&) {
  759. NotImplemented();
  760. }
  761. void EmitBindlessImageAtomicSMax32(EmitContext&) {
  762. NotImplemented();
  763. }
  764. void EmitBindlessImageAtomicUMax32(EmitContext&) {
  765. NotImplemented();
  766. }
  767. void EmitBindlessImageAtomicInc32(EmitContext&) {
  768. NotImplemented();
  769. }
  770. void EmitBindlessImageAtomicDec32(EmitContext&) {
  771. NotImplemented();
  772. }
  773. void EmitBindlessImageAtomicAnd32(EmitContext&) {
  774. NotImplemented();
  775. }
  776. void EmitBindlessImageAtomicOr32(EmitContext&) {
  777. NotImplemented();
  778. }
  779. void EmitBindlessImageAtomicXor32(EmitContext&) {
  780. NotImplemented();
  781. }
  782. void EmitBindlessImageAtomicExchange32(EmitContext&) {
  783. NotImplemented();
  784. }
  785. void EmitBoundImageAtomicIAdd32(EmitContext&) {
  786. NotImplemented();
  787. }
  788. void EmitBoundImageAtomicSMin32(EmitContext&) {
  789. NotImplemented();
  790. }
  791. void EmitBoundImageAtomicUMin32(EmitContext&) {
  792. NotImplemented();
  793. }
  794. void EmitBoundImageAtomicSMax32(EmitContext&) {
  795. NotImplemented();
  796. }
  797. void EmitBoundImageAtomicUMax32(EmitContext&) {
  798. NotImplemented();
  799. }
  800. void EmitBoundImageAtomicInc32(EmitContext&) {
  801. NotImplemented();
  802. }
  803. void EmitBoundImageAtomicDec32(EmitContext&) {
  804. NotImplemented();
  805. }
  806. void EmitBoundImageAtomicAnd32(EmitContext&) {
  807. NotImplemented();
  808. }
  809. void EmitBoundImageAtomicOr32(EmitContext&) {
  810. NotImplemented();
  811. }
  812. void EmitBoundImageAtomicXor32(EmitContext&) {
  813. NotImplemented();
  814. }
  815. void EmitBoundImageAtomicExchange32(EmitContext&) {
  816. NotImplemented();
  817. }
  818. void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  819. Register coords, ScalarU32 value) {
  820. NotImplemented();
  821. }
  822. void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  823. Register coords, ScalarS32 value) {
  824. NotImplemented();
  825. }
  826. void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  827. Register coords, ScalarU32 value) {
  828. NotImplemented();
  829. }
  830. void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  831. Register coords, ScalarS32 value) {
  832. NotImplemented();
  833. }
  834. void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  835. Register coords, ScalarU32 value) {
  836. NotImplemented();
  837. }
  838. void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  839. ScalarU32 value) {
  840. NotImplemented();
  841. }
  842. void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  843. ScalarU32 value) {
  844. NotImplemented();
  845. }
  846. void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  847. ScalarU32 value) {
  848. NotImplemented();
  849. }
  850. void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  851. ScalarU32 value) {
  852. NotImplemented();
  853. }
  854. void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  855. ScalarU32 value) {
  856. NotImplemented();
  857. }
  858. void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  859. Register coords, ScalarU32 value) {
  860. NotImplemented();
  861. }
  862. void EmitLaneId(EmitContext& ctx) {
  863. NotImplemented();
  864. }
  865. void EmitVoteAll(EmitContext& ctx, ScalarS32 pred) {
  866. NotImplemented();
  867. }
  868. void EmitVoteAny(EmitContext& ctx, ScalarS32 pred) {
  869. NotImplemented();
  870. }
  871. void EmitVoteEqual(EmitContext& ctx, ScalarS32 pred) {
  872. NotImplemented();
  873. }
  874. void EmitSubgroupBallot(EmitContext& ctx, ScalarS32 pred) {
  875. NotImplemented();
  876. }
  877. void EmitSubgroupEqMask(EmitContext& ctx) {
  878. NotImplemented();
  879. }
  880. void EmitSubgroupLtMask(EmitContext& ctx) {
  881. NotImplemented();
  882. }
  883. void EmitSubgroupLeMask(EmitContext& ctx) {
  884. NotImplemented();
  885. }
  886. void EmitSubgroupGtMask(EmitContext& ctx) {
  887. NotImplemented();
  888. }
  889. void EmitSubgroupGeMask(EmitContext& ctx) {
  890. NotImplemented();
  891. }
  892. void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  893. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  894. NotImplemented();
  895. }
  896. void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  897. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  898. NotImplemented();
  899. }
  900. void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  901. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  902. NotImplemented();
  903. }
  904. void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  905. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  906. NotImplemented();
  907. }
  908. void EmitFSwizzleAdd(EmitContext& ctx, ScalarF32 op_a, ScalarF32 op_b, ScalarU32 swizzle) {
  909. NotImplemented();
  910. }
  911. void EmitDPdxFine(EmitContext& ctx, ScalarF32 op_a) {
  912. NotImplemented();
  913. }
  914. void EmitDPdyFine(EmitContext& ctx, ScalarF32 op_a) {
  915. NotImplemented();
  916. }
  917. void EmitDPdxCoarse(EmitContext& ctx, ScalarF32 op_a) {
  918. NotImplemented();
  919. }
  920. void EmitDPdyCoarse(EmitContext& ctx, ScalarF32 op_a) {
  921. NotImplemented();
  922. }
  923. } // namespace Shader::Backend::GLASM