Browse Source

glasm: Add logical instructions on GLASM

pull/15/merge
ReinUsesLisp 5 years ago
committed by ameerj
parent
commit
43a448d98d
  1. 8
      src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
  2. 16
      src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp

8
src/shader_recompiler/backend/glasm/emit_glasm_instructions.h

@ -437,10 +437,10 @@ void EmitGlobalAtomicMinF16x2(EmitContext& ctx);
void EmitGlobalAtomicMinF32x2(EmitContext& ctx); void EmitGlobalAtomicMinF32x2(EmitContext& ctx);
void EmitGlobalAtomicMaxF16x2(EmitContext& ctx); void EmitGlobalAtomicMaxF16x2(EmitContext& ctx);
void EmitGlobalAtomicMaxF32x2(EmitContext& ctx); void EmitGlobalAtomicMaxF32x2(EmitContext& ctx);
void EmitLogicalOr(EmitContext& ctx, ScalarS32 a, ScalarS32 b);
void EmitLogicalAnd(EmitContext& ctx, ScalarS32 a, ScalarS32 b);
void EmitLogicalXor(EmitContext& ctx, ScalarS32 a, ScalarS32 b);
void EmitLogicalNot(EmitContext& ctx, ScalarS32 value);
void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
void EmitLogicalAnd(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
void EmitLogicalXor(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
void EmitLogicalNot(EmitContext& ctx, IR::Inst& inst, ScalarS32 value);
void EmitConvertS16F16(EmitContext& ctx, Register value); void EmitConvertS16F16(EmitContext& ctx, Register value);
void EmitConvertS16F32(EmitContext& ctx, Register value); void EmitConvertS16F32(EmitContext& ctx, Register value);
void EmitConvertS16F64(EmitContext& ctx, Register value); void EmitConvertS16F64(EmitContext& ctx, Register value);

16
src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp

@ -572,20 +572,20 @@ void EmitGlobalAtomicMaxF32x2(EmitContext& ctx) {
NotImplemented(); NotImplemented();
} }
void EmitLogicalOr(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
NotImplemented();
void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
ctx.Add("OR.S {},{},{};", inst, a, b);
} }
void EmitLogicalAnd(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
NotImplemented();
void EmitLogicalAnd(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
ctx.Add("AND.S {},{},{};", inst, a, b);
} }
void EmitLogicalXor(EmitContext& ctx, ScalarS32 a, ScalarS32 b) {
NotImplemented();
void EmitLogicalXor(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
ctx.Add("XOR.S {},{},{};", inst, a, b);
} }
void EmitLogicalNot(EmitContext& ctx, ScalarS32 value) {
NotImplemented();
void EmitLogicalNot(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
ctx.Add("SEQ.S {},{},0;", inst, value);
} }
void EmitConvertS16F16(EmitContext& ctx, Register value) { void EmitConvertS16F16(EmitContext& ctx, Register value) {

Loading…
Cancel
Save