From 6fd190d1ae4275a06ed2e488401e1d63912954be Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Sat, 8 May 2021 16:28:52 -0300
Subject: glasm: Implement basic GLASM instructions

---
 .../backend/glasm/emit_glasm_integer.cpp           | 228 +++++++++++++++++++++
 1 file changed, 228 insertions(+)

(limited to 'src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp')

diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
index e69de29bb2..e228fa072e 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
@@ -0,0 +1,228 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <string_view>
+
+#include "shader_recompiler/backend/glasm/emit_context.h"
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/frontend/ir/value.h"
+
+namespace Shader::Backend::GLASM {
+
+void EmitIAdd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitIAdd64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitISub32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitISub64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitIMul32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitINeg32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitINeg64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitIAbs32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitIAbs64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftLeftLogical32([[maybe_unused]] EmitContext& ctx,
+                            [[maybe_unused]] std::string_view base,
+                            [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftLeftLogical64([[maybe_unused]] EmitContext& ctx,
+                            [[maybe_unused]] std::string_view base,
+                            [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftRightLogical32([[maybe_unused]] EmitContext& ctx,
+                             [[maybe_unused]] std::string_view base,
+                             [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftRightLogical64([[maybe_unused]] EmitContext& ctx,
+                             [[maybe_unused]] std::string_view base,
+                             [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftRightArithmetic32([[maybe_unused]] EmitContext& ctx,
+                                [[maybe_unused]] std::string_view base,
+                                [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitShiftRightArithmetic64([[maybe_unused]] EmitContext& ctx,
+                                [[maybe_unused]] std::string_view base,
+                                [[maybe_unused]] std::string_view shift) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitwiseAnd32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                      [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitwiseOr32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                     [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitwiseXor32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                      [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitFieldInsert([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view base,
+                        [[maybe_unused]] std::string_view insert,
+                        [[maybe_unused]] std::string_view offset,
+                        [[maybe_unused]] std::string_view count) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitFieldSExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                          [[maybe_unused]] std::string_view base,
+                          [[maybe_unused]] std::string_view offset,
+                          [[maybe_unused]] std::string_view count) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitFieldUExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                          [[maybe_unused]] std::string_view base,
+                          [[maybe_unused]] std::string_view offset,
+                          [[maybe_unused]] std::string_view count) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitReverse32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitCount32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitBitwiseNot32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitFindSMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitFindUMsb32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view value) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitUMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitUMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view a,
+                [[maybe_unused]] std::string_view b) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                  [[maybe_unused]] std::string_view value, [[maybe_unused]] std::string_view min,
+                  [[maybe_unused]] std::string_view max) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitUClamp32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+                  [[maybe_unused]] std::string_view value, [[maybe_unused]] std::string_view min,
+                  [[maybe_unused]] std::string_view max) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSLessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                   [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitULessThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                   [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitIEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSLessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                        [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitULessThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                        [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                      [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitUGreaterThan([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                      [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitINotEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                   [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitSGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                           [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+void EmitUGreaterThanEqual([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view lhs,
+                           [[maybe_unused]] std::string_view rhs) {
+    throw NotImplementedException("GLASM instruction");
+}
+
+} // namespace Shader::Backend::GLASM
-- 
cgit v1.2.3-70-g09d2