Some work around CAS

This commit is contained in:
CamilleLaVey
2026-09-29 16:13:50 -04:00
parent ef7cde0c2b
commit 2d6f28c50e
10 changed files with 347 additions and 265 deletions
@@ -90,17 +90,17 @@ Id EmitUndefU8(EmitContext& ctx);
Id EmitUndefU16(EmitContext& ctx);
Id EmitUndefU32(EmitContext& ctx);
Id EmitUndefU64(EmitContext& ctx);
void EmitLoadGlobalU8(EmitContext& ctx);
void EmitLoadGlobalS8(EmitContext& ctx);
void EmitLoadGlobalU16(EmitContext& ctx);
void EmitLoadGlobalS16(EmitContext& ctx);
Id EmitLoadGlobalU8(EmitContext& ctx, Id address);
Id EmitLoadGlobalS8(EmitContext& ctx, Id address);
Id EmitLoadGlobalU16(EmitContext& ctx, Id address);
Id EmitLoadGlobalS16(EmitContext& ctx, Id address);
Id EmitLoadGlobal32(EmitContext& ctx, Id address);
Id EmitLoadGlobal64(EmitContext& ctx, Id address);
Id EmitLoadGlobal128(EmitContext& ctx, Id address);
void EmitWriteGlobalU8(EmitContext& ctx);
void EmitWriteGlobalS8(EmitContext& ctx);
void EmitWriteGlobalU16(EmitContext& ctx);
void EmitWriteGlobalS16(EmitContext& ctx);
void EmitWriteGlobalU8(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobalS8(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobalU16(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobalS16(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobal32(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobal64(EmitContext& ctx, Id address, Id value);
void EmitWriteGlobal128(EmitContext& ctx, Id address, Id value);
@@ -415,17 +415,17 @@ Id EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const I
Id value);
Id EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value);
Id EmitGlobalAtomicIAdd32(EmitContext& ctx);
Id EmitGlobalAtomicSMin32(EmitContext& ctx);
Id EmitGlobalAtomicUMin32(EmitContext& ctx);
Id EmitGlobalAtomicSMax32(EmitContext& ctx);
Id EmitGlobalAtomicUMax32(EmitContext& ctx);
Id EmitGlobalAtomicInc32(EmitContext& ctx);
Id EmitGlobalAtomicDec32(EmitContext& ctx);
Id EmitGlobalAtomicAnd32(EmitContext& ctx);
Id EmitGlobalAtomicOr32(EmitContext& ctx);
Id EmitGlobalAtomicXor32(EmitContext& ctx);
Id EmitGlobalAtomicExchange32(EmitContext& ctx);
Id EmitGlobalAtomicIAdd32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicSMin32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicUMin32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicSMax32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicUMax32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicInc32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicDec32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicAnd32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicOr32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicXor32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicExchange32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicIAdd64(EmitContext& ctx);
Id EmitGlobalAtomicSMin64(EmitContext& ctx);
Id EmitGlobalAtomicUMin64(EmitContext& ctx);
@@ -448,13 +448,13 @@ Id EmitGlobalAtomicAnd32x2(EmitContext& ctx);
Id EmitGlobalAtomicOr32x2(EmitContext& ctx);
Id EmitGlobalAtomicXor32x2(EmitContext& ctx);
Id EmitGlobalAtomicExchange32x2(EmitContext& ctx);
Id EmitGlobalAtomicAddF32(EmitContext& ctx);
Id EmitGlobalAtomicAddF16x2(EmitContext& ctx);
Id EmitGlobalAtomicAddF32x2(EmitContext& ctx);
Id EmitGlobalAtomicMinF16x2(EmitContext& ctx);
Id EmitGlobalAtomicMinF32x2(EmitContext& ctx);
Id EmitGlobalAtomicMaxF16x2(EmitContext& ctx);
Id EmitGlobalAtomicMaxF32x2(EmitContext& ctx);
Id EmitGlobalAtomicAddF32(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicAddF16x2(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicAddF32x2(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicMinF16x2(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicMinF32x2(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicMaxF16x2(EmitContext& ctx, Id address, Id value);
Id EmitGlobalAtomicMaxF32x2(EmitContext& ctx, Id address, Id value);
Id EmitLogicalOr(EmitContext& ctx, Id a, Id b);
Id EmitLogicalAnd(EmitContext& ctx, Id a, Id b);
Id EmitLogicalXor(EmitContext& ctx, Id a, Id b);