aboutsummaryrefslogtreecommitdiff
path: root/src/arch/wasm/CodeGen.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-03-11 13:12:32 +0200
committerVeikka Tuominen <git@vexu.eu>2022-03-11 13:12:32 +0200
commitcba68090a60c3de8eadbf8eb53e37620a1d66683 (patch)
tree19d972a0c3cab03307218e9fb757fd3fdc44c8a3 /src/arch/wasm/CodeGen.zig
parentdb4262417009c0060e09a8cf8af088b76320aad0 (diff)
downloadzig-cba68090a60c3de8eadbf8eb53e37620a1d66683.tar.gz
zig-cba68090a60c3de8eadbf8eb53e37620a1d66683.zip
stage2: implement `@shuffle` at runtime
Diffstat (limited to 'src/arch/wasm/CodeGen.zig')
-rw-r--r--src/arch/wasm/CodeGen.zig12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig
index 3f28b87b55..6c54699831 100644
--- a/src/arch/wasm/CodeGen.zig
+++ b/src/arch/wasm/CodeGen.zig
@@ -1255,6 +1255,7 @@ fn genInst(self: *Self, inst: Air.Inst.Index) !WValue {
.ret_ptr => self.airRetPtr(inst),
.ret_load => self.airRetLoad(inst),
.splat => self.airSplat(inst),
+ .shuffle => self.airShuffle(inst),
.aggregate_init => self.airAggregateInit(inst),
.union_init => self.airUnionInit(inst),
.prefetch => self.airPrefetch(inst),
@@ -2985,6 +2986,17 @@ fn airSplat(self: *Self, inst: Air.Inst.Index) InnerError!WValue {
return self.fail("TODO: Implement wasm airSplat", .{});
}
+fn airShuffle(self: *Self, inst: Air.Inst.Index) InnerError!WValue {
+ if (self.liveness.isUnused(inst)) return WValue{ .none = {} };
+
+ const ty_op = self.air.instructions.items(.data)[inst].ty_op;
+ const operand = try self.resolveInst(ty_op.operand);
+
+ _ = ty_op;
+ _ = operand;
+ return self.fail("TODO: Implement wasm airShuffle", .{});
+}
+
fn airAggregateInit(self: *Self, inst: Air.Inst.Index) InnerError!WValue {
if (self.liveness.isUnused(inst)) return WValue{ .none = {} };