glasm: Implement storage atomic ops

This commit is contained in:
ameerj
2021-05-09 22:01:03 -04:00
parent ad61b47f80
commit 80813b1d14
4 changed files with 358 additions and 305 deletions

View File

@ -321,257 +321,6 @@ void EmitSharedAtomicExchange64(EmitContext& ctx, ScalarU32 pointer_offset, Regi
NotImplemented();
}
void EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarS32 value) {
NotImplemented();
}
void EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarS32 value) {
NotImplemented();
}
void EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding,
const IR::Value& offset, ScalarU32 value) {
NotImplemented();
}
void EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding,
const IR::Value& offset, Register value) {
NotImplemented();
}
void EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
ScalarF32 value) {
NotImplemented();
}
void EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Register value) {
NotImplemented();
}
void EmitGlobalAtomicIAdd32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicSMin32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicUMin32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicSMax32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicUMax32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicInc32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicDec32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicAnd32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicOr32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicXor32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicExchange32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicIAdd64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicSMin64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicUMin64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicSMax64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicUMax64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicInc64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicDec64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicAnd64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicOr64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicXor64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicExchange64(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicAddF32(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicAddF16x2(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicAddF32x2(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicMinF16x2(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicMinF32x2(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicMaxF16x2(EmitContext& ctx) {
NotImplemented();
}
void EmitGlobalAtomicMaxF32x2(EmitContext& ctx) {
NotImplemented();
}
void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
ctx.Add("OR.S {},{},{};", inst, a, b);
}