aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-04-20 00:49:38 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-04-21 16:36:31 -0400
commita1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f (patch)
treeffed4a8f6c2053ec330f12b34f63c3d14f374bda /src/codegen
parentd98974e826791e4546a72599a1a5fb24692d5acf (diff)
downloadzig-a1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f.tar.gz
zig-a1ed4bd7966b1a3283a2c03b1e0d7a1548dd3a0f.zip
cbe: fix remaining aarch64 issues
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/c.zig15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index 88185f32d5..f2c65e098a 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -6070,9 +6070,18 @@ fn airAtomicRmw(f: *Function, inst: Air.Inst.Index) !CValue {
if (is_float) try writer.writeAll("_float");
try writer.writeByte('(');
try f.writeCValue(writer, local, .Other);
- try writer.writeAll(", (zig_atomic(");
- try f.renderType(writer, ty);
- try writer.writeByte(')');
+ try writer.writeAll(", (");
+ switch (extra.op()) {
+ else => {
+ try writer.writeAll("zig_atomic(");
+ try f.renderType(writer, ty);
+ try writer.writeByte(')');
+ },
+ .Nand, .Min, .Max => {
+ // These are missing from stdatomic.h, so no atomic types for now.
+ try f.renderType(writer, ty);
+ },
+ }
if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
try writer.writeAll(" *)");
try f.writeCValue(writer, ptr, .Other);