diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-26 00:33:22 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-26 00:33:22 -0400 |
| commit | 88e98a0611b9fb41c1da026febac2467548bb129 (patch) | |
| tree | 038ccb88c632580be1898a536aa2433077c2e6d0 /src/arch/x86_64/CodeGen.zig | |
| parent | bae35bdf2d8919b60dee9a0af3afbdd93dd72b59 (diff) | |
| parent | cd46daf7d047eeceb7690e2739af5952d60c3884 (diff) | |
| download | zig-88e98a0611b9fb41c1da026febac2467548bb129.tar.gz zig-88e98a0611b9fb41c1da026febac2467548bb129.zip | |
Merge pull request #11289 from schmee/stage2-select
stage2: implement `@select`
Diffstat (limited to 'src/arch/x86_64/CodeGen.zig')
| -rw-r--r-- | src/arch/x86_64/CodeGen.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index 17a113bc81..5b252b6c0a 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -714,6 +714,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { .tag_name => try self.airTagName(inst), .error_name => try self.airErrorName(inst), .splat => try self.airSplat(inst), + .select => try self.airSelect(inst), .shuffle => try self.airShuffle(inst), .reduce => try self.airReduce(inst), .aggregate_init => try self.airAggregateInit(inst), @@ -5624,6 +5625,13 @@ fn airSplat(self: *Self, inst: Air.Inst.Index) !void { return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); } +fn airSelect(self: *Self, inst: Air.Inst.Index) !void { + const pl_op = self.air.instructions.items(.data)[inst].pl_op; + const extra = self.air.extraData(Air.Bin, pl_op.payload).data; + const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airSelect for x86_64", .{}); + return self.finishAir(inst, result, .{ pl_op.operand, extra.lhs, extra.rhs }); +} + fn airShuffle(self: *Self, inst: Air.Inst.Index) !void { const ty_op = self.air.instructions.items(.data)[inst].ty_op; const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airShuffle for x86_64", .{}); |
