emit_glasm_not_implemented.cpp 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  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 EmitPackDouble2x32(EmitContext& ctx, Register value) {
  189. NotImplemented();
  190. }
  191. void EmitUnpackDouble2x32(EmitContext& ctx, Register value) {
  192. NotImplemented();
  193. }
  194. void EmitGetZeroFromOp(EmitContext& ctx) {
  195. NotImplemented();
  196. }
  197. void EmitGetSignFromOp(EmitContext& ctx) {
  198. NotImplemented();
  199. }
  200. void EmitGetCarryFromOp(EmitContext& ctx) {
  201. NotImplemented();
  202. }
  203. void EmitGetOverflowFromOp(EmitContext& ctx) {
  204. NotImplemented();
  205. }
  206. void EmitGetSparseFromOp(EmitContext& ctx) {
  207. NotImplemented();
  208. }
  209. void EmitGetInBoundsFromOp(EmitContext& ctx) {
  210. NotImplemented();
  211. }
  212. void EmitFPIsNan16(EmitContext& ctx, Register value) {
  213. NotImplemented();
  214. }
  215. void EmitFPIsNan32(EmitContext& ctx, ScalarF32 value) {
  216. NotImplemented();
  217. }
  218. void EmitFPIsNan64(EmitContext& ctx, Register value) {
  219. NotImplemented();
  220. }
  221. void EmitSharedAtomicIAdd32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  222. NotImplemented();
  223. }
  224. void EmitSharedAtomicSMin32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarS32 value) {
  225. NotImplemented();
  226. }
  227. void EmitSharedAtomicUMin32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  228. NotImplemented();
  229. }
  230. void EmitSharedAtomicSMax32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarS32 value) {
  231. NotImplemented();
  232. }
  233. void EmitSharedAtomicUMax32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  234. NotImplemented();
  235. }
  236. void EmitSharedAtomicInc32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  237. NotImplemented();
  238. }
  239. void EmitSharedAtomicDec32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  240. NotImplemented();
  241. }
  242. void EmitSharedAtomicAnd32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  243. NotImplemented();
  244. }
  245. void EmitSharedAtomicOr32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  246. NotImplemented();
  247. }
  248. void EmitSharedAtomicXor32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  249. NotImplemented();
  250. }
  251. void EmitSharedAtomicExchange32(EmitContext& ctx, ScalarU32 pointer_offset, ScalarU32 value) {
  252. NotImplemented();
  253. }
  254. void EmitSharedAtomicExchange64(EmitContext& ctx, ScalarU32 pointer_offset, Register value) {
  255. NotImplemented();
  256. }
  257. void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  258. ScalarU32 value) {
  259. NotImplemented();
  260. }
  261. void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  262. ScalarS32 value) {
  263. NotImplemented();
  264. }
  265. void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  266. ScalarU32 value) {
  267. NotImplemented();
  268. }
  269. void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  270. ScalarS32 value) {
  271. NotImplemented();
  272. }
  273. void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  274. ScalarU32 value) {
  275. NotImplemented();
  276. }
  277. void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  278. ScalarU32 value) {
  279. NotImplemented();
  280. }
  281. void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  282. ScalarU32 value) {
  283. NotImplemented();
  284. }
  285. void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  286. ScalarU32 value) {
  287. NotImplemented();
  288. }
  289. void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  290. ScalarU32 value) {
  291. NotImplemented();
  292. }
  293. void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  294. ScalarU32 value) {
  295. NotImplemented();
  296. }
  297. void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding,
  298. const IR::Value& offset, ScalarU32 value) {
  299. NotImplemented();
  300. }
  301. void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  302. Register value) {
  303. NotImplemented();
  304. }
  305. void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  306. Register value) {
  307. NotImplemented();
  308. }
  309. void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  310. Register value) {
  311. NotImplemented();
  312. }
  313. void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  314. Register value) {
  315. NotImplemented();
  316. }
  317. void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  318. Register value) {
  319. NotImplemented();
  320. }
  321. void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  322. Register value) {
  323. NotImplemented();
  324. }
  325. void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  326. Register value) {
  327. NotImplemented();
  328. }
  329. void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  330. Register value) {
  331. NotImplemented();
  332. }
  333. void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding,
  334. const IR::Value& offset, Register value) {
  335. NotImplemented();
  336. }
  337. void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  338. ScalarF32 value) {
  339. NotImplemented();
  340. }
  341. void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  342. Register value) {
  343. NotImplemented();
  344. }
  345. void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  346. Register value) {
  347. NotImplemented();
  348. }
  349. void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  350. Register value) {
  351. NotImplemented();
  352. }
  353. void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  354. Register value) {
  355. NotImplemented();
  356. }
  357. void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  358. Register value) {
  359. NotImplemented();
  360. }
  361. void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
  362. Register value) {
  363. NotImplemented();
  364. }
  365. void EmitGlobalAtomicIAdd32(EmitContext& ctx) {
  366. NotImplemented();
  367. }
  368. void EmitGlobalAtomicSMin32(EmitContext& ctx) {
  369. NotImplemented();
  370. }
  371. void EmitGlobalAtomicUMin32(EmitContext& ctx) {
  372. NotImplemented();
  373. }
  374. void EmitGlobalAtomicSMax32(EmitContext& ctx) {
  375. NotImplemented();
  376. }
  377. void EmitGlobalAtomicUMax32(EmitContext& ctx) {
  378. NotImplemented();
  379. }
  380. void EmitGlobalAtomicInc32(EmitContext& ctx) {
  381. NotImplemented();
  382. }
  383. void EmitGlobalAtomicDec32(EmitContext& ctx) {
  384. NotImplemented();
  385. }
  386. void EmitGlobalAtomicAnd32(EmitContext& ctx) {
  387. NotImplemented();
  388. }
  389. void EmitGlobalAtomicOr32(EmitContext& ctx) {
  390. NotImplemented();
  391. }
  392. void EmitGlobalAtomicXor32(EmitContext& ctx) {
  393. NotImplemented();
  394. }
  395. void EmitGlobalAtomicExchange32(EmitContext& ctx) {
  396. NotImplemented();
  397. }
  398. void EmitGlobalAtomicIAdd64(EmitContext& ctx) {
  399. NotImplemented();
  400. }
  401. void EmitGlobalAtomicSMin64(EmitContext& ctx) {
  402. NotImplemented();
  403. }
  404. void EmitGlobalAtomicUMin64(EmitContext& ctx) {
  405. NotImplemented();
  406. }
  407. void EmitGlobalAtomicSMax64(EmitContext& ctx) {
  408. NotImplemented();
  409. }
  410. void EmitGlobalAtomicUMax64(EmitContext& ctx) {
  411. NotImplemented();
  412. }
  413. void EmitGlobalAtomicInc64(EmitContext& ctx) {
  414. NotImplemented();
  415. }
  416. void EmitGlobalAtomicDec64(EmitContext& ctx) {
  417. NotImplemented();
  418. }
  419. void EmitGlobalAtomicAnd64(EmitContext& ctx) {
  420. NotImplemented();
  421. }
  422. void EmitGlobalAtomicOr64(EmitContext& ctx) {
  423. NotImplemented();
  424. }
  425. void EmitGlobalAtomicXor64(EmitContext& ctx) {
  426. NotImplemented();
  427. }
  428. void EmitGlobalAtomicExchange64(EmitContext& ctx) {
  429. NotImplemented();
  430. }
  431. void EmitGlobalAtomicAddF32(EmitContext& ctx) {
  432. NotImplemented();
  433. }
  434. void EmitGlobalAtomicAddF16x2(EmitContext& ctx) {
  435. NotImplemented();
  436. }
  437. void EmitGlobalAtomicAddF32x2(EmitContext& ctx) {
  438. NotImplemented();
  439. }
  440. void EmitGlobalAtomicMinF16x2(EmitContext& ctx) {
  441. NotImplemented();
  442. }
  443. void EmitGlobalAtomicMinF32x2(EmitContext& ctx) {
  444. NotImplemented();
  445. }
  446. void EmitGlobalAtomicMaxF16x2(EmitContext& ctx) {
  447. NotImplemented();
  448. }
  449. void EmitGlobalAtomicMaxF32x2(EmitContext& ctx) {
  450. NotImplemented();
  451. }
  452. void EmitLogicalOr(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  453. NotImplemented();
  454. }
  455. void EmitLogicalAnd(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  456. NotImplemented();
  457. }
  458. void EmitLogicalXor(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
  459. NotImplemented();
  460. }
  461. void EmitLogicalNot(EmitContext& ctx, ScalarS32 value) {
  462. NotImplemented();
  463. }
  464. void EmitConvertS16F16(EmitContext& ctx, Register value) {
  465. NotImplemented();
  466. }
  467. void EmitConvertS16F32(EmitContext& ctx, Register value) {
  468. NotImplemented();
  469. }
  470. void EmitConvertS16F64(EmitContext& ctx, Register value) {
  471. NotImplemented();
  472. }
  473. void EmitConvertS32F16(EmitContext& ctx, Register value) {
  474. NotImplemented();
  475. }
  476. void EmitConvertS32F32(EmitContext& ctx, Register value) {
  477. NotImplemented();
  478. }
  479. void EmitConvertS32F64(EmitContext& ctx, Register value) {
  480. NotImplemented();
  481. }
  482. void EmitConvertS64F16(EmitContext& ctx, Register value) {
  483. NotImplemented();
  484. }
  485. void EmitConvertS64F32(EmitContext& ctx, Register value) {
  486. NotImplemented();
  487. }
  488. void EmitConvertS64F64(EmitContext& ctx, Register value) {
  489. NotImplemented();
  490. }
  491. void EmitConvertU16F16(EmitContext& ctx, Register value) {
  492. NotImplemented();
  493. }
  494. void EmitConvertU16F32(EmitContext& ctx, Register value) {
  495. NotImplemented();
  496. }
  497. void EmitConvertU16F64(EmitContext& ctx, Register value) {
  498. NotImplemented();
  499. }
  500. void EmitConvertU32F16(EmitContext& ctx, Register value) {
  501. NotImplemented();
  502. }
  503. void EmitConvertU32F32(EmitContext& ctx, Register value) {
  504. NotImplemented();
  505. }
  506. void EmitConvertU32F64(EmitContext& ctx, Register value) {
  507. NotImplemented();
  508. }
  509. void EmitConvertU64F16(EmitContext& ctx, Register value) {
  510. NotImplemented();
  511. }
  512. void EmitConvertU64F32(EmitContext& ctx, Register value) {
  513. NotImplemented();
  514. }
  515. void EmitConvertU64F64(EmitContext& ctx, Register value) {
  516. NotImplemented();
  517. }
  518. void EmitConvertU64U32(EmitContext& ctx, Register value) {
  519. NotImplemented();
  520. }
  521. void EmitConvertU32U64(EmitContext& ctx, Register value) {
  522. NotImplemented();
  523. }
  524. void EmitConvertF16F32(EmitContext& ctx, Register value) {
  525. NotImplemented();
  526. }
  527. void EmitConvertF32F16(EmitContext& ctx, Register value) {
  528. NotImplemented();
  529. }
  530. void EmitConvertF32F64(EmitContext& ctx, Register value) {
  531. NotImplemented();
  532. }
  533. void EmitConvertF64F32(EmitContext& ctx, Register value) {
  534. NotImplemented();
  535. }
  536. void EmitConvertF16S8(EmitContext& ctx, Register value) {
  537. NotImplemented();
  538. }
  539. void EmitConvertF16S16(EmitContext& ctx, Register value) {
  540. NotImplemented();
  541. }
  542. void EmitConvertF16S32(EmitContext& ctx, Register value) {
  543. NotImplemented();
  544. }
  545. void EmitConvertF16S64(EmitContext& ctx, Register value) {
  546. NotImplemented();
  547. }
  548. void EmitConvertF16U8(EmitContext& ctx, Register value) {
  549. NotImplemented();
  550. }
  551. void EmitConvertF16U16(EmitContext& ctx, Register value) {
  552. NotImplemented();
  553. }
  554. void EmitConvertF16U32(EmitContext& ctx, Register value) {
  555. NotImplemented();
  556. }
  557. void EmitConvertF16U64(EmitContext& ctx, Register value) {
  558. NotImplemented();
  559. }
  560. void EmitConvertF32S8(EmitContext& ctx, Register value) {
  561. NotImplemented();
  562. }
  563. void EmitConvertF32S16(EmitContext& ctx, Register value) {
  564. NotImplemented();
  565. }
  566. void EmitConvertF32S32(EmitContext& ctx, Register value) {
  567. NotImplemented();
  568. }
  569. void EmitConvertF32S64(EmitContext& ctx, Register value) {
  570. NotImplemented();
  571. }
  572. void EmitConvertF32U8(EmitContext& ctx, Register value) {
  573. NotImplemented();
  574. }
  575. void EmitConvertF32U16(EmitContext& ctx, Register value) {
  576. NotImplemented();
  577. }
  578. void EmitConvertF32U32(EmitContext& ctx, Register value) {
  579. NotImplemented();
  580. }
  581. void EmitConvertF32U64(EmitContext& ctx, Register value) {
  582. NotImplemented();
  583. }
  584. void EmitConvertF64S8(EmitContext& ctx, Register value) {
  585. NotImplemented();
  586. }
  587. void EmitConvertF64S16(EmitContext& ctx, Register value) {
  588. NotImplemented();
  589. }
  590. void EmitConvertF64S32(EmitContext& ctx, Register value) {
  591. NotImplemented();
  592. }
  593. void EmitConvertF64S64(EmitContext& ctx, Register value) {
  594. NotImplemented();
  595. }
  596. void EmitConvertF64U8(EmitContext& ctx, Register value) {
  597. NotImplemented();
  598. }
  599. void EmitConvertF64U16(EmitContext& ctx, Register value) {
  600. NotImplemented();
  601. }
  602. void EmitConvertF64U32(EmitContext& ctx, Register value) {
  603. NotImplemented();
  604. }
  605. void EmitConvertF64U64(EmitContext& ctx, Register value) {
  606. NotImplemented();
  607. }
  608. void EmitBindlessImageSampleImplicitLod(EmitContext&) {
  609. NotImplemented();
  610. }
  611. void EmitBindlessImageSampleExplicitLod(EmitContext&) {
  612. NotImplemented();
  613. }
  614. void EmitBindlessImageSampleDrefImplicitLod(EmitContext&) {
  615. NotImplemented();
  616. }
  617. void EmitBindlessImageSampleDrefExplicitLod(EmitContext&) {
  618. NotImplemented();
  619. }
  620. void EmitBindlessImageGather(EmitContext&) {
  621. NotImplemented();
  622. }
  623. void EmitBindlessImageGatherDref(EmitContext&) {
  624. NotImplemented();
  625. }
  626. void EmitBindlessImageFetch(EmitContext&) {
  627. NotImplemented();
  628. }
  629. void EmitBindlessImageQueryDimensions(EmitContext&) {
  630. NotImplemented();
  631. }
  632. void EmitBindlessImageQueryLod(EmitContext&) {
  633. NotImplemented();
  634. }
  635. void EmitBindlessImageGradient(EmitContext&) {
  636. NotImplemented();
  637. }
  638. void EmitBindlessImageRead(EmitContext&) {
  639. NotImplemented();
  640. }
  641. void EmitBindlessImageWrite(EmitContext&) {
  642. NotImplemented();
  643. }
  644. void EmitBoundImageSampleImplicitLod(EmitContext&) {
  645. NotImplemented();
  646. }
  647. void EmitBoundImageSampleExplicitLod(EmitContext&) {
  648. NotImplemented();
  649. }
  650. void EmitBoundImageSampleDrefImplicitLod(EmitContext&) {
  651. NotImplemented();
  652. }
  653. void EmitBoundImageSampleDrefExplicitLod(EmitContext&) {
  654. NotImplemented();
  655. }
  656. void EmitBoundImageGather(EmitContext&) {
  657. NotImplemented();
  658. }
  659. void EmitBoundImageGatherDref(EmitContext&) {
  660. NotImplemented();
  661. }
  662. void EmitBoundImageFetch(EmitContext&) {
  663. NotImplemented();
  664. }
  665. void EmitBoundImageQueryDimensions(EmitContext&) {
  666. NotImplemented();
  667. }
  668. void EmitBoundImageQueryLod(EmitContext&) {
  669. NotImplemented();
  670. }
  671. void EmitBoundImageGradient(EmitContext&) {
  672. NotImplemented();
  673. }
  674. void EmitBoundImageRead(EmitContext&) {
  675. NotImplemented();
  676. }
  677. void EmitBoundImageWrite(EmitContext&) {
  678. NotImplemented();
  679. }
  680. void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  681. Register coords, Register bias_lc, const IR::Value& offset) {
  682. NotImplemented();
  683. }
  684. void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  685. Register coords, Register lod_lc, const IR::Value& offset) {
  686. NotImplemented();
  687. }
  688. void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  689. Register coords, Register dref, Register bias_lc,
  690. const IR::Value& offset) {
  691. NotImplemented();
  692. }
  693. void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  694. Register coords, Register dref, Register lod_lc,
  695. const IR::Value& offset) {
  696. NotImplemented();
  697. }
  698. void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  699. const IR::Value& offset, const IR::Value& offset2) {
  700. NotImplemented();
  701. }
  702. void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  703. const IR::Value& offset, const IR::Value& offset2, Register dref) {
  704. NotImplemented();
  705. }
  706. void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  707. Register offset, Register lod, Register ms) {
  708. NotImplemented();
  709. }
  710. void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  711. Register lod) {
  712. NotImplemented();
  713. }
  714. void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
  715. NotImplemented();
  716. }
  717. void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  718. Register derivates, Register offset, Register lod_clamp) {
  719. NotImplemented();
  720. }
  721. void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
  722. NotImplemented();
  723. }
  724. void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  725. Register color) {
  726. NotImplemented();
  727. }
  728. void EmitBindlessImageAtomicIAdd32(EmitContext&) {
  729. NotImplemented();
  730. }
  731. void EmitBindlessImageAtomicSMin32(EmitContext&) {
  732. NotImplemented();
  733. }
  734. void EmitBindlessImageAtomicUMin32(EmitContext&) {
  735. NotImplemented();
  736. }
  737. void EmitBindlessImageAtomicSMax32(EmitContext&) {
  738. NotImplemented();
  739. }
  740. void EmitBindlessImageAtomicUMax32(EmitContext&) {
  741. NotImplemented();
  742. }
  743. void EmitBindlessImageAtomicInc32(EmitContext&) {
  744. NotImplemented();
  745. }
  746. void EmitBindlessImageAtomicDec32(EmitContext&) {
  747. NotImplemented();
  748. }
  749. void EmitBindlessImageAtomicAnd32(EmitContext&) {
  750. NotImplemented();
  751. }
  752. void EmitBindlessImageAtomicOr32(EmitContext&) {
  753. NotImplemented();
  754. }
  755. void EmitBindlessImageAtomicXor32(EmitContext&) {
  756. NotImplemented();
  757. }
  758. void EmitBindlessImageAtomicExchange32(EmitContext&) {
  759. NotImplemented();
  760. }
  761. void EmitBoundImageAtomicIAdd32(EmitContext&) {
  762. NotImplemented();
  763. }
  764. void EmitBoundImageAtomicSMin32(EmitContext&) {
  765. NotImplemented();
  766. }
  767. void EmitBoundImageAtomicUMin32(EmitContext&) {
  768. NotImplemented();
  769. }
  770. void EmitBoundImageAtomicSMax32(EmitContext&) {
  771. NotImplemented();
  772. }
  773. void EmitBoundImageAtomicUMax32(EmitContext&) {
  774. NotImplemented();
  775. }
  776. void EmitBoundImageAtomicInc32(EmitContext&) {
  777. NotImplemented();
  778. }
  779. void EmitBoundImageAtomicDec32(EmitContext&) {
  780. NotImplemented();
  781. }
  782. void EmitBoundImageAtomicAnd32(EmitContext&) {
  783. NotImplemented();
  784. }
  785. void EmitBoundImageAtomicOr32(EmitContext&) {
  786. NotImplemented();
  787. }
  788. void EmitBoundImageAtomicXor32(EmitContext&) {
  789. NotImplemented();
  790. }
  791. void EmitBoundImageAtomicExchange32(EmitContext&) {
  792. NotImplemented();
  793. }
  794. void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  795. Register coords, ScalarU32 value) {
  796. NotImplemented();
  797. }
  798. void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  799. Register coords, ScalarS32 value) {
  800. NotImplemented();
  801. }
  802. void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  803. Register coords, ScalarU32 value) {
  804. NotImplemented();
  805. }
  806. void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  807. Register coords, ScalarS32 value) {
  808. NotImplemented();
  809. }
  810. void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  811. Register coords, ScalarU32 value) {
  812. NotImplemented();
  813. }
  814. void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  815. ScalarU32 value) {
  816. NotImplemented();
  817. }
  818. void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  819. ScalarU32 value) {
  820. NotImplemented();
  821. }
  822. void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  823. ScalarU32 value) {
  824. NotImplemented();
  825. }
  826. void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  827. ScalarU32 value) {
  828. NotImplemented();
  829. }
  830. void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
  831. ScalarU32 value) {
  832. NotImplemented();
  833. }
  834. void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
  835. Register coords, ScalarU32 value) {
  836. NotImplemented();
  837. }
  838. void EmitLaneId(EmitContext& ctx) {
  839. NotImplemented();
  840. }
  841. void EmitVoteAll(EmitContext& ctx, ScalarS32 pred) {
  842. NotImplemented();
  843. }
  844. void EmitVoteAny(EmitContext& ctx, ScalarS32 pred) {
  845. NotImplemented();
  846. }
  847. void EmitVoteEqual(EmitContext& ctx, ScalarS32 pred) {
  848. NotImplemented();
  849. }
  850. void EmitSubgroupBallot(EmitContext& ctx, ScalarS32 pred) {
  851. NotImplemented();
  852. }
  853. void EmitSubgroupEqMask(EmitContext& ctx) {
  854. NotImplemented();
  855. }
  856. void EmitSubgroupLtMask(EmitContext& ctx) {
  857. NotImplemented();
  858. }
  859. void EmitSubgroupLeMask(EmitContext& ctx) {
  860. NotImplemented();
  861. }
  862. void EmitSubgroupGtMask(EmitContext& ctx) {
  863. NotImplemented();
  864. }
  865. void EmitSubgroupGeMask(EmitContext& ctx) {
  866. NotImplemented();
  867. }
  868. void EmitShuffleIndex(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  869. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  870. NotImplemented();
  871. }
  872. void EmitShuffleUp(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  873. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  874. NotImplemented();
  875. }
  876. void EmitShuffleDown(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  877. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  878. NotImplemented();
  879. }
  880. void EmitShuffleButterfly(EmitContext& ctx, IR::Inst& inst, ScalarU32 value, ScalarU32 index,
  881. ScalarU32 clamp, ScalarU32 segmentation_mask) {
  882. NotImplemented();
  883. }
  884. void EmitFSwizzleAdd(EmitContext& ctx, ScalarF32 op_a, ScalarF32 op_b, ScalarU32 swizzle) {
  885. NotImplemented();
  886. }
  887. void EmitDPdxFine(EmitContext& ctx, ScalarF32 op_a) {
  888. NotImplemented();
  889. }
  890. void EmitDPdyFine(EmitContext& ctx, ScalarF32 op_a) {
  891. NotImplemented();
  892. }
  893. void EmitDPdxCoarse(EmitContext& ctx, ScalarF32 op_a) {
  894. NotImplemented();
  895. }
  896. void EmitDPdyCoarse(EmitContext& ctx, ScalarF32 op_a) {
  897. NotImplemented();
  898. }
  899. } // namespace Shader::Backend::GLASM