authorgravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-05-29 22:47:39-07:00
committergravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-07-14 23:02:33-07:00
log7a02878f4e1ff18275e61db7450fb3e12ee1926e
tree41cb2b5c3f1c7b06746368238ebf944b74b7bd80
parent27ceb4ae3719522e2eb519ba1cd67303ae2e7259
signature Commit is signed but in an unrecognized format.

riscv: truncate `airStructFieldVal` result


23 files changed, 65 insertions(+), 55 deletions(-)

src/arch/riscv64/CodeGen.zig+51-8
......@@ -897,7 +897,7 @@ fn formatWipMir(
897897 .pic = comp.root_mod.pic,
898898 };
899899 var first = true;
900 for ((lower.lowerMir(data.inst) catch |err| switch (err) {
900 for ((lower.lowerMir(data.inst, .{ .allow_frame_locs = false }) catch |err| switch (err) {
901901 error.LowerFail => {
902902 defer {
903903 lower.err_msg.?.deinit(data.func.gpa);
......@@ -990,13 +990,10 @@ fn addInst(func: *Func, inst: Mir.Inst) error{OutOfMemory}!Mir.Inst.Index {
990990 .pseudo_dbg_prologue_end,
991991 .pseudo_dbg_line_column,
992992 .pseudo_dbg_epilogue_begin,
993 .pseudo_store_rm,
994 .pseudo_load_rm,
995 .pseudo_lea_rm,
996993 .pseudo_mv,
997994 .pseudo_dead,
998995 => false,
999 }) wip_mir_log.debug("{}", .{func.fmtWipMir(result_index)}) else wip_mir_log.debug(" | uses-mem", .{});
996 }) wip_mir_log.debug("{}", .{func.fmtWipMir(result_index)});
1000997 return result_index;
1001998}
1002999
......@@ -3563,9 +3560,51 @@ fn airSetUnionTag(func: *Func, inst: Air.Inst.Index) !void {
35633560}
35643561
35653562fn airGetUnionTag(func: *Func, inst: Air.Inst.Index) !void {
3563 const zcu = func.bin_file.comp.module.?;
3564 const mod = func.bin_file.comp.module.?;
35663565 const ty_op = func.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
3567 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else return func.fail("TODO implement airGetUnionTag for {}", .{func.target.cpu.arch});
3568 return func.finishAir(inst, result, .{ ty_op.operand, .none, .none });
3566
3567 const tag_ty = func.typeOfIndex(inst);
3568 const union_ty = func.typeOf(ty_op.operand);
3569 const layout = union_ty.unionGetLayout(mod);
3570
3571 if (layout.tag_size == 0) {
3572 return func.finishAir(inst, .none, .{ ty_op.operand, .none, .none });
3573 }
3574
3575 const operand = try func.resolveInst(ty_op.operand);
3576
3577 const frame_mcv = try func.allocRegOrMem(union_ty, null, false);
3578 try func.genCopy(union_ty, frame_mcv, operand);
3579
3580 const tag_abi_size = tag_ty.abiSize(mod);
3581 const result_reg, const result_lock = try func.allocReg(.int);
3582 defer func.register_manager.unlockReg(result_lock);
3583
3584 switch (frame_mcv) {
3585 .load_frame => |frame_addr| {
3586 if (tag_abi_size <= 8) {
3587 const off: i32 = if (layout.tag_align.compare(.lt, layout.payload_align))
3588 @intCast(layout.payload_size)
3589 else
3590 0;
3591
3592 try func.genCopy(
3593 tag_ty,
3594 .{ .register = result_reg },
3595 .{ .load_frame = .{ .index = frame_addr.index, .off = frame_addr.off + off } },
3596 );
3597 } else {
3598 return func.fail(
3599 "TODO implement get_union_tag for ABI larger than 8 bytes and operand {}, tag {}",
3600 .{ frame_mcv, tag_ty.fmt(zcu) },
3601 );
3602 }
3603 },
3604 else => return func.fail("TODO: airGetUnionTag {s}", .{@tagName(operand)}),
3605 }
3606
3607 return func.finishAir(inst, .{ .register = result_reg }, .{ ty_op.operand, .none, .none });
35693608}
35703609
35713610fn airClz(func: *Func, inst: Air.Inst.Index) !void {
......@@ -4061,6 +4100,10 @@ fn airStructFieldVal(func: *Func, inst: Air.Inst.Index) !void {
40614100 });
40624101 }
40634102
4103 if (field_off == 0) {
4104 try func.truncateRegister(field_ty, dst_reg);
4105 }
4106
40644107 break :result if (field_off == 0) dst_mcv else try func.copyToNewRegister(inst, dst_mcv);
40654108 },
40664109 .load_frame => {
......@@ -5945,7 +5988,7 @@ fn genSetMem(
59455988 0 => {},
59465989 1, 2, 4, 8 => {
59475990 // no matter what type, it should use an integer register
5948 const src_reg = try func.copyToTmpRegister(Type.usize, src_mcv);
5991 const src_reg = try func.copyToTmpRegister(ty, src_mcv);
59495992 const src_lock = func.register_manager.lockRegAssumeUnused(src_reg);
59505993 defer func.register_manager.unlockReg(src_lock);
59515994
src/arch/riscv64/Emit.zig+1-1
......@@ -26,7 +26,7 @@ pub fn emitMir(emit: *Emit) Error!void {
2626 mir_index,
2727 @intCast(emit.code.items.len),
2828 );
29 const lowered = try emit.lower.lowerMir(mir_index);
29 const lowered = try emit.lower.lowerMir(mir_index, .{ .allow_frame_locs = true });
3030 var lowered_relocs = lowered.relocs;
3131 for (lowered.insts, 0..) |lowered_inst, lowered_index| {
3232 const start_offset: u32 = @intCast(emit.code.items.len);
src/arch/riscv64/Lower.zig+7-2
......@@ -40,7 +40,9 @@ pub const Reloc = struct {
4040};
4141
4242/// The returned slice is overwritten by the next call to lowerMir.
43pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
43pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index, options: struct {
44 allow_frame_locs: bool,
45}) Error!struct {
4446 insts: []const Instruction,
4547 relocs: []const Reloc,
4648} {
......@@ -69,7 +71,10 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
6971 .pseudo_load_rm, .pseudo_store_rm => {
7072 const rm = inst.data.rm;
7173
72 const frame_loc = rm.m.toFrameLoc(lower.mir);
74 const frame_loc: Mir.FrameLoc = if (options.allow_frame_locs)
75 rm.m.toFrameLoc(lower.mir)
76 else
77 .{ .base = .s0, .disp = 0 };
7378
7479 switch (inst.ops) {
7580 .pseudo_load_rm => {
src/arch/riscv64/encoder.zig+1-1
......@@ -56,7 +56,7 @@ pub const Instruction = struct {
5656 .none => unreachable, // it's sliced out above
5757 .reg => |reg| try writer.writeAll(@tagName(reg)),
5858 .imm => |imm| try writer.print("{d}", .{imm.asSigned(64)}),
59 .mem => unreachable, // there is no "mem" operand in the actual instructions
59 .mem => try writer.writeAll("mem"),
6060 .barrier => |barrier| try writer.writeAll(@tagName(barrier)),
6161 }
6262 }
src/arch/x86_64/Lower.zig+2
......@@ -65,6 +65,8 @@ pub const Reloc = struct {
6565 };
6666};
6767
68const Options = struct { allow_frame_locs: bool };
69
6870/// The returned slice is overwritten by the next call to lowerMir.
6971pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
7072 insts: []const Instruction,
test/behavior/array.zig-2
......@@ -580,7 +580,6 @@ test "type coercion of anon struct literal to array" {
580580 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
581581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
582582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
583 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
584583
585584 const S = struct {
586585 const U = union {
......@@ -1011,7 +1010,6 @@ test "union that needs padding bytes inside an array" {
10111010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10121011 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10131012 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1014 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10151013
10161014 const B = union(enum) {
10171015 D: u8,
test/behavior/bitcast.zig-2
......@@ -192,7 +192,6 @@ test "@bitCast packed structs at runtime and comptime" {
192192test "@bitCast extern structs at runtime and comptime" {
193193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
196195
197196 const Full = extern struct {
198197 number: u16,
......@@ -227,7 +226,6 @@ test "bitcast packed struct to integer and back" {
227226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
228227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229228 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
231229
232230 const LevelUpMove = packed struct {
233231 move_id: u9,
test/behavior/enum.zig-1
......@@ -908,7 +908,6 @@ test "enum literal casting to tagged union" {
908908 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
909909 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
910910 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
912911
913912 const Arch = union(enum) {
914913 x86_64,
test/behavior/error.zig-1
......@@ -535,7 +535,6 @@ test "return result loc as peer result loc in inferred error set function" {
535535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
537537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
539538
540539 const S = struct {
541540 fn doTheTest() !void {
test/behavior/eval.zig-1
......@@ -395,7 +395,6 @@ test "return 0 from function that has u0 return type" {
395395test "statically initialized struct" {
396396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
399398
400399 st_init_str_foo.x += 1;
401400 try expect(st_init_str_foo.x == 14);
test/behavior/inline_switch.zig-1
......@@ -49,7 +49,6 @@ test "inline switch unions" {
4949 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5050 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5352
5453 var x: U = .a;
5554 _ = &x;
test/behavior/math.zig-1
......@@ -1269,7 +1269,6 @@ test "@subWithOverflow" {
12691269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12701270 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12711271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1272 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12731272
12741273 {
12751274 var a: u8 = 1;
test/behavior/optional.zig-1
......@@ -397,7 +397,6 @@ test "array of optional unaligned types" {
397397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
398398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
399399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
401400
402401 const Enum = enum { one, two, three };
403402
test/behavior/packed-struct.zig-1
......@@ -785,7 +785,6 @@ test "nested packed struct field access test" {
785785test "nested packed struct at non-zero offset" {
786786 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
787787 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
788 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
789788
790789 const Pair = packed struct(u24) {
791790 a: u16 = 0,
test/behavior/reflection.zig-1
......@@ -28,7 +28,6 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
2828test "reflection: @field" {
2929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3231
3332 var f = Foo{
3433 .one = 42,
test/behavior/sizeof_and_typeof.zig+2
......@@ -19,6 +19,8 @@ test "@sizeOf on compile-time types" {
1919}
2020
2121test "@TypeOf() with multiple arguments" {
22 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
23
2224 {
2325 var var_1: u32 = undefined;
2426 var var_2: u8 = undefined;
test/behavior/struct.zig-3
......@@ -875,7 +875,6 @@ test "packed struct field passed to generic function" {
875875test "anonymous struct literal syntax" {
876876 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
877877 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
878 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
879878
880879 const S = struct {
881880 const Point = struct {
......@@ -985,7 +984,6 @@ test "struct with union field" {
985984 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
986985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
987986 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
988 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
989987
990988 const Value = struct {
991989 ref: u32 = 2,
......@@ -1368,7 +1366,6 @@ test "store to comptime field" {
13681366test "struct field init value is size of the struct" {
13691367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13701368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1371 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13721369
13731370 const namespace = struct {
13741371 const S = extern struct {
test/behavior/switch.zig-2
......@@ -256,7 +256,6 @@ test "switch on enum using pointer capture" {
256256 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
257257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
258258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
260259
261260 try testSwitchEnumPtrCapture();
262261 try comptime testSwitchEnumPtrCapture();
......@@ -693,7 +692,6 @@ test "switch capture copies its payload" {
693692 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
694693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
695694 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
696 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
697695
698696 const S = struct {
699697 fn doTheTest() !void {
test/behavior/this.zig-1
......@@ -27,7 +27,6 @@ test "this refer to module call private fn" {
2727test "this refer to container" {
2828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2929 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3130
3231 var pt: Point(i32) = undefined;
3332 pt.x = 12;
test/behavior/tuple.zig-1
......@@ -131,7 +131,6 @@ test "tuple initializer for var" {
131131test "array-like initializer for tuple types" {
132132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
133133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
135134
136135 const T = @Type(.{
137136 .Struct = .{
test/behavior/type.zig-1
......@@ -383,7 +383,6 @@ test "Type.Union" {
383383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
384384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
385385 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
386 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
387386
388387 const Untagged = @Type(.{
389388 .Union = .{
test/behavior/union.zig-23
......@@ -43,7 +43,6 @@ test "basic unions" {
4343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4545 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4746
4847 var foo = Foo{ .int = 1 };
4948 try expect(foo.int == 1);
......@@ -276,7 +275,6 @@ test "comparison between union and enum literal" {
276275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
277276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
278277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
280278
281279 try testComparison();
282280 try comptime testComparison();
......@@ -292,7 +290,6 @@ test "cast union to tag type of union" {
292290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
293291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
294292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
296293
297294 try testCastUnionToTag();
298295 try comptime testCastUnionToTag();
......@@ -314,7 +311,6 @@ test "cast tag type of union to union" {
314311 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
315312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
317 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
318314
319315 var x: Value2 = Letter2.B;
320316 _ = &x;
......@@ -331,7 +327,6 @@ test "implicit cast union to its tag type" {
331327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
332328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
333329 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
334 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
335330
336331 var x: Value2 = Letter2.B;
337332 _ = &x;
......@@ -353,7 +348,6 @@ test "constant packed union" {
353348 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354349 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
355350 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
357351
358352 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
359353}
......@@ -503,7 +497,6 @@ test "initialize global array of union" {
503497 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
504498 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
505499 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
507500
508501 glbl_array[1] = FooUnion{ .U1 = 2 };
509502 glbl_array[0] = FooUnion{ .U0 = 1 };
......@@ -515,7 +508,6 @@ test "update the tag value for zero-sized unions" {
515508 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
516509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
517510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
519511
520512 const S = union(enum) {
521513 U0: void,
......@@ -636,7 +628,6 @@ test "tagged union with all void fields but a meaningful tag" {
636628 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
637629 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
638630 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
639 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
640631
641632 const S = struct {
642633 const B = union(enum) {
......@@ -758,7 +749,6 @@ test "@intFromEnum works on unions" {
758749 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
759750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
760751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
761 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
762752
763753 const Bar = union(enum) {
764754 A: bool,
......@@ -874,7 +864,6 @@ test "@unionInit can modify a union type" {
874864 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
875865 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
876866 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
877 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
878867
879868 const UnionInitEnum = union(enum) {
880869 Boolean: bool,
......@@ -898,7 +887,6 @@ test "@unionInit can modify a pointer value" {
898887 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899888 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
900889 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
901 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
902890
903891 const UnionInitEnum = union(enum) {
904892 Boolean: bool,
......@@ -1089,7 +1077,6 @@ test "switching on non exhaustive union" {
10891077 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10901078 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10911079 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1092 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10931080
10941081 const S = struct {
10951082 const E = enum(u8) {
......@@ -1199,7 +1186,6 @@ test "global variable struct contains union initialized to non-most-aligned fiel
11991186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12001187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12011188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1202 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12031189
12041190 const T = struct {
12051191 const U = union(enum) {
......@@ -1352,7 +1338,6 @@ test "noreturn field in union" {
13521338 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13531339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13541340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1355 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13561341
13571342 const U = union(enum) {
13581343 a: u32,
......@@ -1434,7 +1419,6 @@ test "union field ptr - zero sized payload" {
14341419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14351420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14361421 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1437 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14381422
14391423 const U = union {
14401424 foo: void,
......@@ -1449,7 +1433,6 @@ test "union field ptr - zero sized field" {
14491433 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14501434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14511435 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1452 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14531436
14541437 const U = union {
14551438 foo: void,
......@@ -1589,7 +1572,6 @@ test "reinterpreting enum value inside packed union" {
15891572
15901573test "access the tag of a global tagged union" {
15911574 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1592 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15931575
15941576 const U = union(enum) {
15951577 a,
......@@ -1601,7 +1583,6 @@ test "access the tag of a global tagged union" {
16011583
16021584test "coerce enum literal to union in result loc" {
16031585 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1604 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16051586
16061587 const U = union(enum) {
16071588 a,
......@@ -1864,7 +1845,6 @@ test "reinterpret extern union" {
18641845
18651846test "reinterpret packed union" {
18661847 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1867 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
18681848
18691849 const U = packed union {
18701850 foo: u8,
......@@ -2044,7 +2024,6 @@ test "extern union initialized via reintepreted struct field initializer" {
20442024
20452025test "packed union initialized via reintepreted struct field initializer" {
20462026 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2047 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20482027
20492028 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
20502029
......@@ -2065,7 +2044,6 @@ test "packed union initialized via reintepreted struct field initializer" {
20652044
20662045test "store of comptime reinterpreted memory to extern union" {
20672046 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2068 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20692047
20702048 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
20712049
......@@ -2088,7 +2066,6 @@ test "store of comptime reinterpreted memory to extern union" {
20882066
20892067test "store of comptime reinterpreted memory to packed union" {
20902068 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2091 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20922069
20932070 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
20942071
test/behavior/vector.zig+1
......@@ -1316,6 +1316,7 @@ test "zero multiplicand" {
13161316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13171317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13181318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1319 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13191320
13201321 const zeros = @Vector(2, u32){ 0.0, 0.0 };
13211322 var ones = @Vector(2, u32){ 1.0, 1.0 };