authorgravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-04-16 16:39:31-07:00
committergravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-05-11 02:17:24-07:00
loga30af172e8dc360cb0a71a5c4dfd904120555715
treee43bb564776492b6fa18187b4a379a82be5cdbb1
parenta615fbc1f8330e455d02fdda5c6de257b0cde7f4

riscv: math progress


32 files changed, 71 insertions(+), 189 deletions(-)

src/arch/riscv64/CodeGen.zig+64-63
...@@ -11,6 +11,7 @@ const Type = @import("../../type.zig").Type;...@@ -11,6 +11,7 @@ const Type = @import("../../type.zig").Type;
11const Value = @import("../../Value.zig");11const Value = @import("../../Value.zig");
12const link = @import("../../link.zig");12const link = @import("../../link.zig");
13const Module = @import("../../Module.zig");13const Module = @import("../../Module.zig");
14const Package = @import("../../Package.zig");
14const InternPool = @import("../../InternPool.zig");15const InternPool = @import("../../InternPool.zig");
15const Compilation = @import("../../Compilation.zig");16const Compilation = @import("../../Compilation.zig");
16const ErrorMsg = Module.ErrorMsg;17const ErrorMsg = Module.ErrorMsg;
...@@ -54,6 +55,7 @@ const RegisterView = enum(u1) {...@@ -54,6 +55,7 @@ const RegisterView = enum(u1) {
5455
55gpa: Allocator,56gpa: Allocator,
56air: Air,57air: Air,
58mod: *Package.Module,
57liveness: Liveness,59liveness: Liveness,
58bin_file: *link.File,60bin_file: *link.File,
59target: *const std.Target,61target: *const std.Target,
...@@ -724,6 +726,7 @@ pub fn generate(...@@ -724,6 +726,7 @@ pub fn generate(
724 var function = Self{726 var function = Self{
725 .gpa = gpa,727 .gpa = gpa,
726 .air = air,728 .air = air,
729 .mod = mod,
727 .liveness = liveness,730 .liveness = liveness,
728 .target = target,731 .target = target,
729 .bin_file = bin_file,732 .bin_file = bin_file,
...@@ -2138,82 +2141,78 @@ fn airAddWithOverflow(self: *Self, inst: Air.Inst.Index) !void {...@@ -2138,82 +2141,78 @@ fn airAddWithOverflow(self: *Self, inst: Air.Inst.Index) !void {
2138 const lhs_ty = self.typeOf(extra.lhs);2141 const lhs_ty = self.typeOf(extra.lhs);
2139 const rhs_ty = self.typeOf(extra.rhs);2142 const rhs_ty = self.typeOf(extra.rhs);
21402143
2141 const add_result_mcv = try self.binOp(.add, lhs, lhs_ty, rhs, rhs_ty);
2142 const add_result_lock = self.register_manager.lockRegAssumeUnused(add_result_mcv.register);
2143 defer self.register_manager.unlockReg(add_result_lock);
2144
2145 const tuple_ty = self.typeOfIndex(inst);
2146 const int_info = lhs_ty.intInfo(zcu);2144 const int_info = lhs_ty.intInfo(zcu);
21472145
2148 // TODO: optimization, set this to true. needs the other struct access stuff to support2146 const tuple_ty = self.typeOfIndex(inst);
2149 // accessing registers.
2150 const result_mcv = try self.allocRegOrMem(inst, false);2147 const result_mcv = try self.allocRegOrMem(inst, false);
2151 const offset = result_mcv.load_frame;2148 const offset = result_mcv.load_frame;
21522149
2153 try self.genSetStack(
2154 lhs_ty,
2155 .{
2156 .index = offset.index,
2157 .off = offset.off + @as(i32, @intCast(tuple_ty.structFieldOffset(0, zcu))),
2158 },
2159 add_result_mcv,
2160 );
2161
2162 if (int_info.bits >= 8 and math.isPowerOfTwo(int_info.bits)) {2150 if (int_info.bits >= 8 and math.isPowerOfTwo(int_info.bits)) {
2163 if (int_info.signedness == .unsigned) {2151 const add_result = try self.binOp(.add, lhs, lhs_ty, rhs, rhs_ty);
2164 switch (int_info.bits) {2152 const add_result_reg = try self.copyToTmpRegister(lhs_ty, add_result);
2165 1...8 => {2153 const add_result_reg_lock = self.register_manager.lockRegAssumeUnused(add_result_reg);
2166 const max_val = std.math.pow(u16, 2, int_info.bits) - 1;2154 defer self.register_manager.unlockReg(add_result_reg_lock);
21672155
2168 const overflow_reg, const overflow_lock = try self.allocReg();2156 const shift_amount: u6 = @intCast(Type.usize.bitSize(zcu) - int_info.bits);
2169 defer self.register_manager.unlockReg(overflow_lock);
21702157
2171 const add_reg, const add_lock = blk: {2158 const shift_reg, const shift_lock = try self.allocReg();
2172 if (add_result_mcv == .register) break :blk .{ add_result_mcv.register, null };2159 defer self.register_manager.unlockReg(shift_lock);
21732160
2174 const add_reg, const add_lock = try self.allocReg();2161 _ = try self.addInst(.{
2175 try self.genSetReg(lhs_ty, add_reg, add_result_mcv);2162 .tag = .slli,
2176 break :blk .{ add_reg, add_lock };2163 .ops = .rri,
2177 };2164 .data = .{
2178 defer if (add_lock) |lock| self.register_manager.unlockReg(lock);2165 .i_type = .{
21792166 .rd = shift_reg,
2180 _ = try self.addInst(.{2167 .rs1 = add_result_reg,
2181 .tag = .andi,2168 .imm12 = Immediate.s(shift_amount),
2182 .ops = .rri,2169 },
2183 .data = .{ .i_type = .{2170 },
2184 .rd = overflow_reg,2171 });
2185 .rs1 = add_reg,
2186 .imm12 = Immediate.s(max_val),
2187 } },
2188 });
2189
2190 const overflow_mcv = try self.binOp(
2191 .cmp_neq,
2192 .{ .register = overflow_reg },
2193 lhs_ty,
2194 .{ .register = add_reg },
2195 lhs_ty,
2196 );
2197
2198 try self.genSetStack(
2199 Type.u1,
2200 .{
2201 .index = offset.index,
2202 .off = offset.off + @as(i32, @intCast(tuple_ty.structFieldOffset(1, zcu))),
2203 },
2204 overflow_mcv,
2205 );
22062172
2207 break :result result_mcv;2173 _ = try self.addInst(.{
2174 .tag = if (int_info.signedness == .unsigned) .srli else .srai,
2175 .ops = .rri,
2176 .data = .{
2177 .i_type = .{
2178 .rd = shift_reg,
2179 .rs1 = shift_reg,
2180 .imm12 = Immediate.s(shift_amount),
2208 },2181 },
2182 },
2183 });
22092184
2210 else => return self.fail("TODO: addWithOverflow check for size {d}", .{int_info.bits}),2185 const add_result_frame: FrameAddr = .{
2211 }2186 .index = offset.index,
2212 } else {2187 .off = offset.off + @as(i32, @intCast(tuple_ty.structFieldOffset(0, zcu))),
2213 return self.fail("TODO: airAddWithOverFlow calculate carry for signed addition", .{});2188 };
2214 }2189 try self.genSetStack(
2190 lhs_ty,
2191 add_result_frame,
2192 add_result,
2193 );
2194
2195 const overflow_mcv = try self.binOp(
2196 .cmp_neq,
2197 .{ .register = shift_reg },
2198 lhs_ty,
2199 .{ .register = add_result_reg },
2200 lhs_ty,
2201 );
2202
2203 const overflow_frame: FrameAddr = .{
2204 .index = offset.index,
2205 .off = offset.off + @as(i32, @intCast(tuple_ty.structFieldOffset(1, zcu))),
2206 };
2207 try self.genSetStack(
2208 Type.u1,
2209 overflow_frame,
2210 overflow_mcv,
2211 );
2212
2213 break :result result_mcv;
2215 } else {2214 } else {
2216 return self.fail("TODO: airAddWithOverflow with < 8 bits or non-pow of 2", .{});2215 return self.fail("TODO: less than 8 bit or non-pow 2 addition", .{});
2217 }2216 }
2218 };2217 };
22192218
...@@ -3500,9 +3499,11 @@ fn genCall(...@@ -3500,9 +3499,11 @@ fn genCall(
3500 if (self.bin_file.cast(link.File.Elf)) |elf_file| {3499 if (self.bin_file.cast(link.File.Elf)) |elf_file| {
3501 const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);3500 const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
3502 const sym = elf_file.symbol(sym_index);3501 const sym = elf_file.symbol(sym_index);
3502
3503 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);3503 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
3504 const got_addr = sym.zigGotAddress(elf_file);3504 const got_addr = sym.zigGotAddress(elf_file);
3505 try self.genSetReg(Type.usize, .ra, .{ .memory = got_addr });3505 try self.genSetReg(Type.usize, .ra, .{ .memory = got_addr });
3506
3506 _ = try self.addInst(.{3507 _ = try self.addInst(.{
3507 .tag = .jalr,3508 .tag = .jalr,
3508 .ops = .rri,3509 .ops = .rri,
src/arch/riscv64/Encoding.zig+5-1
...@@ -16,6 +16,7 @@ pub const Mnemonic = enum {...@@ -16,6 +16,7 @@ pub const Mnemonic = enum {
16 andi,16 andi,
17 slli,17 slli,
18 srli,18 srli,
19 srai,
1920
20 addi,21 addi,
21 jalr,22 jalr,
...@@ -69,6 +70,7 @@ pub const Mnemonic = enum {...@@ -69,6 +70,7 @@ pub const Mnemonic = enum {
69 .jalr => .{ .opcode = 0b1100111, .funct3 = 0b000, .funct7 = null },70 .jalr => .{ .opcode = 0b1100111, .funct3 = 0b000, .funct7 = null },
70 .slli => .{ .opcode = 0b0010011, .funct3 = 0b001, .funct7 = null },71 .slli => .{ .opcode = 0b0010011, .funct3 = 0b001, .funct7 = null },
71 .srli => .{ .opcode = 0b0010011, .funct3 = 0b101, .funct7 = null },72 .srli => .{ .opcode = 0b0010011, .funct3 = 0b101, .funct7 = null },
73 .srai => .{ .opcode = 0b0010011, .funct3 = 0b101, .funct7 = null, .offset = 1 << 10 },
7274
73 .lui => .{ .opcode = 0b0110111, .funct3 = null, .funct7 = null },75 .lui => .{ .opcode = 0b0110111, .funct3 = null, .funct7 = null },
7476
...@@ -123,6 +125,7 @@ pub const InstEnc = enum {...@@ -123,6 +125,7 @@ pub const InstEnc = enum {
123 .andi,125 .andi,
124 .slli,126 .slli,
125 .srli,127 .srli,
128 .srai,
126 => .I,129 => .I,
127130
128 .lui,131 .lui,
...@@ -299,7 +302,7 @@ pub const Data = union(InstEnc) {...@@ -299,7 +302,7 @@ pub const Data = union(InstEnc) {
299 .I = .{302 .I = .{
300 .rd = ops[0].reg.id(),303 .rd = ops[0].reg.id(),
301 .rs1 = ops[1].reg.id(),304 .rs1 = ops[1].reg.id(),
302 .imm0_11 = ops[2].imm.asBits(u12),305 .imm0_11 = ops[2].imm.asBits(u12) + enc.offset,
303306
304 .opcode = enc.opcode,307 .opcode = enc.opcode,
305 .funct3 = enc.funct3.?,308 .funct3 = enc.funct3.?,
...@@ -374,6 +377,7 @@ const Enc = struct {...@@ -374,6 +377,7 @@ const Enc = struct {
374 opcode: u7,377 opcode: u7,
375 funct3: ?u3,378 funct3: ?u3,
376 funct7: ?u7,379 funct7: ?u7,
380 offset: u12 = 0,
377};381};
378382
379fn verifyOps(mnem: Mnemonic, ops: []const Operand) bool {383fn verifyOps(mnem: Mnemonic, ops: []const Operand) bool {
src/arch/riscv64/Mir.zig+2
...@@ -53,6 +53,8 @@ pub const Inst = struct {...@@ -53,6 +53,8 @@ pub const Inst = struct {
53 srli,53 srli,
54 /// Immediate Logical Left Shift, uses i_type payload54 /// Immediate Logical Left Shift, uses i_type payload
55 slli,55 slli,
56 /// Immediate Arithmetic Right Shift, uses i_type payload.
57 srai,
56 /// Register Logical Left Shift, uses r_type payload58 /// Register Logical Left Shift, uses r_type payload
57 sllw,59 sllw,
58 /// Register Logical Right Shit, uses r_type payload60 /// Register Logical Right Shit, uses r_type payload
test/behavior/align.zig-2
...@@ -44,7 +44,6 @@ test "default alignment allows unspecified in type syntax" {...@@ -44,7 +44,6 @@ test "default alignment allows unspecified in type syntax" {
44}44}
4545
46test "implicitly decreasing pointer alignment" {46test "implicitly decreasing pointer alignment" {
47 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
48 const a: u32 align(4) = 3;47 const a: u32 align(4) = 3;
49 const b: u32 align(8) = 4;48 const b: u32 align(8) = 4;
50 try expect(addUnaligned(&a, &b) == 7);49 try expect(addUnaligned(&a, &b) == 7);
...@@ -227,7 +226,6 @@ fn fnWithAlignedStack() i32 {...@@ -227,7 +226,6 @@ fn fnWithAlignedStack() i32 {
227}226}
228227
229test "implicitly decreasing slice alignment" {228test "implicitly decreasing slice alignment" {
230 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233231
test/behavior/array.zig-4
...@@ -203,7 +203,6 @@ test "nested arrays of strings" {...@@ -203,7 +203,6 @@ test "nested arrays of strings" {
203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
207206
208 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };207 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
209 for (array_of_strings, 0..) |s, i| {208 for (array_of_strings, 0..) |s, i| {
...@@ -329,7 +328,6 @@ test "read/write through global variable array of struct fields initialized via...@@ -329,7 +328,6 @@ test "read/write through global variable array of struct fields initialized via
329 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO330 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
332 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
333331
334 const S = struct {332 const S = struct {
335 fn doTheTest() !void {333 fn doTheTest() !void {
...@@ -738,8 +736,6 @@ test "pointer to array has ptr field" {...@@ -738,8 +736,6 @@ test "pointer to array has ptr field" {
738}736}
739737
740test "discarded array init preserves result location" {738test "discarded array init preserves result location" {
741 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
742
743 const S = struct {739 const S = struct {
744 fn f(p: *u32) u16 {740 fn f(p: *u32) u16 {
745 p.* += 1;741 p.* += 1;
test/behavior/basic.zig-19
...@@ -85,8 +85,6 @@ test "type equality" {...@@ -85,8 +85,6 @@ test "type equality" {
85}85}
8686
87test "pointer dereferencing" {87test "pointer dereferencing" {
88 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
89
90 var x = @as(i32, 3);88 var x = @as(i32, 3);
91 const y = &x;89 const y = &x;
9290
...@@ -138,21 +136,18 @@ fn first4KeysOfHomeRow() []const u8 {...@@ -138,21 +136,18 @@ fn first4KeysOfHomeRow() []const u8 {
138136
139test "return string from function" {137test "return string from function" {
140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
142139
143 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));140 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
144}141}
145142
146test "hex escape" {143test "hex escape" {
147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
149145
150 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));146 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
151}147}
152148
153test "multiline string" {149test "multiline string" {
154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
156151
157 const s1 =152 const s1 =
158 \\one153 \\one
...@@ -165,7 +160,6 @@ test "multiline string" {...@@ -165,7 +160,6 @@ test "multiline string" {
165160
166test "multiline string comments at start" {161test "multiline string comments at start" {
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
169163
170 const s1 =164 const s1 =
171 //\\one165 //\\one
...@@ -178,7 +172,6 @@ test "multiline string comments at start" {...@@ -178,7 +172,6 @@ test "multiline string comments at start" {
178172
179test "multiline string comments at end" {173test "multiline string comments at end" {
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
181 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
182175
183 const s1 =176 const s1 =
184 \\one177 \\one
...@@ -191,7 +184,6 @@ test "multiline string comments at end" {...@@ -191,7 +184,6 @@ test "multiline string comments at end" {
191184
192test "multiline string comments in middle" {185test "multiline string comments in middle" {
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
195187
196 const s1 =188 const s1 =
197 \\one189 \\one
...@@ -204,7 +196,6 @@ test "multiline string comments in middle" {...@@ -204,7 +196,6 @@ test "multiline string comments in middle" {
204196
205test "multiline string comments at multiple places" {197test "multiline string comments at multiple places" {
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO198 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
208199
209 const s1 =200 const s1 =
210 \\one201 \\one
...@@ -218,14 +209,11 @@ test "multiline string comments at multiple places" {...@@ -218,14 +209,11 @@ test "multiline string comments at multiple places" {
218}209}
219210
220test "string concatenation simple" {211test "string concatenation simple" {
221 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
222
223 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));212 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
224}213}
225214
226test "array mult operator" {215test "array mult operator" {
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
229217
230 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));218 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
231}219}
...@@ -308,8 +296,6 @@ test "function closes over local const" {...@@ -308,8 +296,6 @@ test "function closes over local const" {
308}296}
309297
310test "volatile load and store" {298test "volatile load and store" {
311 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
312
313 var number: i32 = 1234;299 var number: i32 = 1234;
314 const ptr = @as(*volatile i32, &number);300 const ptr = @as(*volatile i32, &number);
315 ptr.* += 1;301 ptr.* += 1;
...@@ -326,7 +312,6 @@ fn fB() []const u8 {...@@ -326,7 +312,6 @@ fn fB() []const u8 {
326test "call function pointer in struct" {312test "call function pointer in struct" {
327 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
328 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
329 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
330315
331 try expect(mem.eql(u8, f3(true), "a"));316 try expect(mem.eql(u8, f3(true), "a"));
332 try expect(mem.eql(u8, f3(false), "b"));317 try expect(mem.eql(u8, f3(false), "b"));
...@@ -350,7 +335,6 @@ const FnPtrWrapper = struct {...@@ -350,7 +335,6 @@ const FnPtrWrapper = struct {
350335
351test "const ptr from var variable" {336test "const ptr from var variable" {
352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;337 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
354338
355 var x: u64 = undefined;339 var x: u64 = undefined;
356 var y: u64 = undefined;340 var y: u64 = undefined;
...@@ -370,7 +354,6 @@ test "call result of if else expression" {...@@ -370,7 +354,6 @@ test "call result of if else expression" {
370 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
372 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;356 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
374357
375 try expect(mem.eql(u8, f2(true), "a"));358 try expect(mem.eql(u8, f2(true), "a"));
376 try expect(mem.eql(u8, f2(false), "b"));359 try expect(mem.eql(u8, f2(false), "b"));
...@@ -479,7 +462,6 @@ fn nine() u8 {...@@ -479,7 +462,6 @@ fn nine() u8 {
479test "struct inside function" {462test "struct inside function" {
480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;463 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
481 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
483465
484 try testStructInFn();466 try testStructInFn();
485 try comptime testStructInFn();467 try comptime testStructInFn();
...@@ -1219,7 +1201,6 @@ test "integer compare" {...@@ -1219,7 +1201,6 @@ test "integer compare" {
12191201
1220test "reference to inferred local variable works as expected" {1202test "reference to inferred local variable works as expected" {
1221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1222 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12231204
1224 const Crasher = struct {1205 const Crasher = struct {
1225 lets_crash: u64 = 0,1206 lets_crash: u64 = 0,
test/behavior/bitcast.zig-1
...@@ -520,7 +520,6 @@ test "@bitCast of packed struct of bools all false" {...@@ -520,7 +520,6 @@ test "@bitCast of packed struct of bools all false" {
520 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO520 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
521 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO521 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
522 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO522 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
523 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
524523
525 const P = packed struct {524 const P = packed struct {
526 b0: bool,525 b0: bool,
test/behavior/call.zig-2
...@@ -572,8 +572,6 @@ test "call function pointer in comptime field" {...@@ -572,8 +572,6 @@ test "call function pointer in comptime field" {
572}572}
573573
574test "generic function pointer can be called" {574test "generic function pointer can be called" {
575 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
576
577 const S = struct {575 const S = struct {
578 var ok = false;576 var ok = false;
579 fn foo(x: anytype) void {577 fn foo(x: anytype) void {
test/behavior/cast.zig-7
...@@ -400,7 +400,6 @@ test "cast from ?[*]T to ??[*]T" {...@@ -400,7 +400,6 @@ test "cast from ?[*]T to ??[*]T" {
400test "peer type unsigned int to signed" {400test "peer type unsigned int to signed" {
401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO402 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
403 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
404403
405 var w: u31 = 5;404 var w: u31 = 5;
406 var x: u8 = 7;405 var x: u8 = 7;
...@@ -443,7 +442,6 @@ test "peer resolve array and const slice" {...@@ -443,7 +442,6 @@ test "peer resolve array and const slice" {
443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;442 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
445 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO444 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
447445
448 try testPeerResolveArrayConstSlice(true);446 try testPeerResolveArrayConstSlice(true);
449 try comptime testPeerResolveArrayConstSlice(true);447 try comptime testPeerResolveArrayConstSlice(true);
...@@ -535,7 +533,6 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {...@@ -535,7 +533,6 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
535test "implicit cast from *const [N]T to []const T" {533test "implicit cast from *const [N]T to []const T" {
536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
539536
540 try testCastConstArrayRefToConstSlice();537 try testCastConstArrayRefToConstSlice();
541 try comptime testCastConstArrayRefToConstSlice();538 try comptime testCastConstArrayRefToConstSlice();
...@@ -718,7 +715,6 @@ test "peer type resolution: error set supersets" {...@@ -718,7 +715,6 @@ test "peer type resolution: error set supersets" {
718 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
719 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
721 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
722718
723 const a: error{ One, Two } = undefined;719 const a: error{ One, Two } = undefined;
724 const b: error{One} = undefined;720 const b: error{One} = undefined;
...@@ -748,7 +744,6 @@ test "peer type resolution: disjoint error sets" {...@@ -748,7 +744,6 @@ test "peer type resolution: disjoint error sets" {
748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
749 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
751 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
752747
753 const a: error{ One, Two } = undefined;748 const a: error{ One, Two } = undefined;
754 const b: error{Three} = undefined;749 const b: error{Three} = undefined;
...@@ -813,7 +808,6 @@ test "peer type resolution: error union after non-error" {...@@ -813,7 +808,6 @@ test "peer type resolution: error union after non-error" {
813 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO808 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
814 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
815 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
816 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
817811
818 const a: u32 = undefined;812 const a: u32 = undefined;
819 const b: error{ One, Two }!u32 = undefined;813 const b: error{ One, Two }!u32 = undefined;
...@@ -1393,7 +1387,6 @@ test "cast between *[N]void and []void" {...@@ -1393,7 +1387,6 @@ test "cast between *[N]void and []void" {
1393test "peer resolve arrays of different size to const slice" {1387test "peer resolve arrays of different size to const slice" {
1394 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1396 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13971390
1398 try expect(mem.eql(u8, boolToStr(true), "true"));1391 try expect(mem.eql(u8, boolToStr(true), "true"));
1399 try expect(mem.eql(u8, boolToStr(false), "false"));1392 try expect(mem.eql(u8, boolToStr(false), "false"));
test/behavior/decltest.zig-2
...@@ -5,7 +5,5 @@ pub fn the_add_function(a: u32, b: u32) u32 {...@@ -5,7 +5,5 @@ pub fn the_add_function(a: u32, b: u32) u32 {
5}5}
66
7test the_add_function {7test the_add_function {
8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9
10 if (the_add_function(1, 2) != 3) unreachable;8 if (the_add_function(1, 2) != 3) unreachable;
11}9}
test/behavior/defer.zig-5
...@@ -5,8 +5,6 @@ const expectEqual = std.testing.expectEqual;...@@ -5,8 +5,6 @@ const expectEqual = std.testing.expectEqual;
5const expectError = std.testing.expectError;5const expectError = std.testing.expectError;
66
7test "break and continue inside loop inside defer expression" {7test "break and continue inside loop inside defer expression" {
8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9
10 testBreakContInDefer(10);8 testBreakContInDefer(10);
11 comptime testBreakContInDefer(10);9 comptime testBreakContInDefer(10);
12}10}
...@@ -23,8 +21,6 @@ fn testBreakContInDefer(x: usize) void {...@@ -23,8 +21,6 @@ fn testBreakContInDefer(x: usize) void {
23}21}
2422
25test "defer and labeled break" {23test "defer and labeled break" {
26 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
27
28 var i = @as(usize, 0);24 var i = @as(usize, 0);
2925
30 blk: {26 blk: {
...@@ -38,7 +34,6 @@ test "defer and labeled break" {...@@ -38,7 +34,6 @@ test "defer and labeled break" {
38test "errdefer does not apply to fn inside fn" {34test "errdefer does not apply to fn inside fn" {
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4237
43 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);38 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
44}39}
test/behavior/enum.zig-1
...@@ -1055,7 +1055,6 @@ test "tag name with assigned enum values" {...@@ -1055,7 +1055,6 @@ test "tag name with assigned enum values" {
1055test "@tagName on enum literals" {1055test "@tagName on enum literals" {
1056 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1056 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1057 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1057 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1058 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10591058
1060 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1059 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
1061 comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));1060 comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));
test/behavior/eval.zig-12
...@@ -306,8 +306,6 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {...@@ -306,8 +306,6 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {
306}306}
307307
308test "comptime iterate over fn ptr list" {308test "comptime iterate over fn ptr list" {
309 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
310
311 try expect(performFn('t', 1) == 6);309 try expect(performFn('t', 1) == 6);
312 try expect(performFn('o', 0) == 1);310 try expect(performFn('o', 0) == 1);
313 try expect(performFn('w', 99) == 99);311 try expect(performFn('w', 99) == 99);
...@@ -413,8 +411,6 @@ var st_init_str_foo = StInitStrFoo{...@@ -413,8 +411,6 @@ var st_init_str_foo = StInitStrFoo{
413};411};
414412
415test "inline for with same type but different values" {413test "inline for with same type but different values" {
416 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
417
418 var res: usize = 0;414 var res: usize = 0;
419 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {415 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
420 var a: T = undefined;416 var a: T = undefined;
...@@ -544,7 +540,6 @@ test "runtime 128 bit integer division" {...@@ -544,7 +540,6 @@ test "runtime 128 bit integer division" {
544test "@tagName of @typeInfo" {540test "@tagName of @typeInfo" {
545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
546 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
547 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
548543
549 const str = @tagName(@typeInfo(u8));544 const str = @tagName(@typeInfo(u8));
550 try expect(std.mem.eql(u8, str, "Int"));545 try expect(std.mem.eql(u8, str, "Int"));
...@@ -1007,7 +1002,6 @@ test "closure capture type of runtime-known var" {...@@ -1007,7 +1002,6 @@ test "closure capture type of runtime-known var" {
10071002
1008test "comptime break passing through runtime condition converted to runtime break" {1003test "comptime break passing through runtime condition converted to runtime break" {
1009 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1004 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10111005
1012 const S = struct {1006 const S = struct {
1013 fn doTheTest() !void {1007 fn doTheTest() !void {
...@@ -1042,7 +1036,6 @@ test "comptime break to outer loop passing through runtime condition converted t...@@ -1042,7 +1036,6 @@ test "comptime break to outer loop passing through runtime condition converted t
1042 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1036 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1043 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1037 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1044 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1038 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1045 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10461039
1047 const S = struct {1040 const S = struct {
1048 fn doTheTest() !void {1041 fn doTheTest() !void {
...@@ -1266,7 +1259,6 @@ test "pass pointer to field of comptime-only type as a runtime parameter" {...@@ -1266,7 +1259,6 @@ test "pass pointer to field of comptime-only type as a runtime parameter" {
1266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1268 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;1261 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1269 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12701262
1271 const S = struct {1263 const S = struct {
1272 const Mixed = struct {1264 const Mixed = struct {
...@@ -1508,7 +1500,6 @@ test "continue nested inline for loop in named block expr" {...@@ -1508,7 +1500,6 @@ test "continue nested inline for loop in named block expr" {
15081500
1509test "x and false is comptime-known false" {1501test "x and false is comptime-known false" {
1510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1502 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15121503
1513 const T = struct {1504 const T = struct {
1514 var x: u32 = 0;1505 var x: u32 = 0;
...@@ -1536,7 +1527,6 @@ test "x and false is comptime-known false" {...@@ -1536,7 +1527,6 @@ test "x and false is comptime-known false" {
15361527
1537test "x or true is comptime-known true" {1528test "x or true is comptime-known true" {
1538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1539 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15401530
1541 const T = struct {1531 const T = struct {
1542 var x: u32 = 0;1532 var x: u32 = 0;
...@@ -1598,8 +1588,6 @@ test "comptime function turns function value to function pointer" {...@@ -1598,8 +1588,6 @@ test "comptime function turns function value to function pointer" {
1598}1588}
15991589
1600test "container level const and var have unique addresses" {1590test "container level const and var have unique addresses" {
1601 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1602
1603 const S = struct {1591 const S = struct {
1604 x: i32,1592 x: i32,
1605 y: i32,1593 y: i32,
test/behavior/export_keyword.zig-1
...@@ -26,7 +26,6 @@ const PackedUnion = packed union {...@@ -26,7 +26,6 @@ const PackedUnion = packed union {
26test "packed struct, enum, union parameters in extern function" {26test "packed struct, enum, union parameters in extern function" {
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3029
31 testPackedStuff(&(PackedStruct{30 testPackedStuff(&(PackedStruct{
32 .a = 1,31 .a = 1,
test/behavior/fn.zig-9
...@@ -6,8 +6,6 @@ const expect = testing.expect;...@@ -6,8 +6,6 @@ const expect = testing.expect;
6const expectEqual = testing.expectEqual;6const expectEqual = testing.expectEqual;
77
8test "params" {8test "params" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 try expect(testParamsAdd(22, 11) == 33);9 try expect(testParamsAdd(22, 11) == 33);
12}10}
13fn testParamsAdd(a: i32, b: i32) i32 {11fn testParamsAdd(a: i32, b: i32) i32 {
...@@ -15,8 +13,6 @@ fn testParamsAdd(a: i32, b: i32) i32 {...@@ -15,8 +13,6 @@ fn testParamsAdd(a: i32, b: i32) i32 {
15}13}
1614
17test "local variables" {15test "local variables" {
18 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19
20 testLocVars(2);16 testLocVars(2);
21}17}
22fn testLocVars(b: i32) void {18fn testLocVars(b: i32) void {
...@@ -25,8 +21,6 @@ fn testLocVars(b: i32) void {...@@ -25,8 +21,6 @@ fn testLocVars(b: i32) void {
25}21}
2622
27test "mutable local variables" {23test "mutable local variables" {
28 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
29
30 var zero: i32 = 0;24 var zero: i32 = 0;
31 _ = &zero;25 _ = &zero;
32 try expect(zero == 0);26 try expect(zero == 0);
...@@ -325,7 +319,6 @@ test "function pointers" {...@@ -325,7 +319,6 @@ test "function pointers" {
325 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
326 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;321 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
328 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
329322
330 const fns = [_]*const @TypeOf(fn1){323 const fns = [_]*const @TypeOf(fn1){
331 &fn1,324 &fn1,
...@@ -403,8 +396,6 @@ test "function call with anon list literal - 2D" {...@@ -403,8 +396,6 @@ test "function call with anon list literal - 2D" {
403}396}
404397
405test "ability to give comptime types and non comptime types to same parameter" {398test "ability to give comptime types and non comptime types to same parameter" {
406 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
407
408 const S = struct {399 const S = struct {
409 fn doTheTest() !void {400 fn doTheTest() !void {
410 var x: i32 = 1;401 var x: i32 = 1;
test/behavior/for.zig-7
...@@ -7,7 +7,6 @@ const mem = std.mem;...@@ -7,7 +7,6 @@ const mem = std.mem;
7test "continue in for loop" {7test "continue in for loop" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1110
12 const array = [_]i32{ 1, 2, 3, 4, 5 };11 const array = [_]i32{ 1, 2, 3, 4, 5 };
13 var sum: i32 = 0;12 var sum: i32 = 0;
...@@ -22,8 +21,6 @@ test "continue in for loop" {...@@ -22,8 +21,6 @@ test "continue in for loop" {
22}21}
2322
24test "break from outer for loop" {23test "break from outer for loop" {
25 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
26
27 try testBreakOuter();24 try testBreakOuter();
28 try comptime testBreakOuter();25 try comptime testBreakOuter();
29}26}
...@@ -41,8 +38,6 @@ fn testBreakOuter() !void {...@@ -41,8 +38,6 @@ fn testBreakOuter() !void {
41}38}
4239
43test "continue outer for loop" {40test "continue outer for loop" {
44 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
45
46 try testContinueOuter();41 try testContinueOuter();
47 try comptime testContinueOuter();42 try comptime testContinueOuter();
48}43}
...@@ -263,7 +258,6 @@ test "for loop with else branch" {...@@ -263,7 +258,6 @@ test "for loop with else branch" {
263test "count over fixed range" {258test "count over fixed range" {
264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
267261
268 var sum: usize = 0;262 var sum: usize = 0;
269 for (0..6) |i| {263 for (0..6) |i| {
...@@ -276,7 +270,6 @@ test "count over fixed range" {...@@ -276,7 +270,6 @@ test "count over fixed range" {
276test "two counters" {270test "two counters" {
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
280273
281 var sum: usize = 0;274 var sum: usize = 0;
282 for (0..10, 10..20) |i, j| {275 for (0..10, 10..20) |i, j| {
test/behavior/generics.zig-5
...@@ -5,8 +5,6 @@ const expect = testing.expect;...@@ -5,8 +5,6 @@ const expect = testing.expect;
5const expectEqual = testing.expectEqual;5const expectEqual = testing.expectEqual;
66
7test "one param, explicit comptime" {7test "one param, explicit comptime" {
8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9
10 var x: usize = 0;8 var x: usize = 0;
11 x += checkSize(i32);9 x += checkSize(i32);
12 x += checkSize(bool);10 x += checkSize(bool);
...@@ -151,8 +149,6 @@ fn GenericDataThing(comptime count: isize) type {...@@ -151,8 +149,6 @@ fn GenericDataThing(comptime count: isize) type {
151}149}
152150
153test "use generic param in generic param" {151test "use generic param in generic param" {
154 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
155
156 try expect(aGenericFn(i32, 3, 4) == 7);152 try expect(aGenericFn(i32, 3, 4) == 7);
157}153}
158fn aGenericFn(comptime T: type, comptime a: T, b: T) T {154fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
...@@ -258,7 +254,6 @@ test "generic function instantiation turns into comptime call" {...@@ -258,7 +254,6 @@ test "generic function instantiation turns into comptime call" {
258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO255 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO256 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
262257
263 const S = struct {258 const S = struct {
264 fn doTheTest() !void {259 fn doTheTest() !void {
test/behavior/globals.zig-1
...@@ -50,7 +50,6 @@ test "global loads can affect liveness" {...@@ -50,7 +50,6 @@ test "global loads can affect liveness" {
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5453
55 const S = struct {54 const S = struct {
56 const ByRef = struct {55 const ByRef = struct {
test/behavior/packed-struct.zig-1
...@@ -889,7 +889,6 @@ test "runtime init of unnamed packed struct type" {...@@ -889,7 +889,6 @@ test "runtime init of unnamed packed struct type" {
889 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;889 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
890 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO890 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
891 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;891 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
892 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
893892
894 var z: u8 = 123;893 var z: u8 = 123;
895 _ = &z;894 _ = &z;
test/behavior/pointers.zig-3
...@@ -6,8 +6,6 @@ const expect = testing.expect;...@@ -6,8 +6,6 @@ const expect = testing.expect;
6const expectError = testing.expectError;6const expectError = testing.expectError;
77
8test "dereference pointer" {8test "dereference pointer" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10
11 try comptime testDerefPtr();9 try comptime testDerefPtr();
12 try testDerefPtr();10 try testDerefPtr();
13}11}
...@@ -55,7 +53,6 @@ fn PtrOf(comptime T: type) type {...@@ -55,7 +53,6 @@ fn PtrOf(comptime T: type) type {
5553
56test "implicit cast single item pointer to C pointer and back" {54test "implicit cast single item pointer to C pointer and back" {
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5956
60 var y: u8 = 11;57 var y: u8 = 11;
61 const x: [*c]u8 = &y;58 const x: [*c]u8 = &y;
test/behavior/ptrcast.zig-1
...@@ -176,7 +176,6 @@ test "reinterpret struct field at comptime" {...@@ -176,7 +176,6 @@ test "reinterpret struct field at comptime" {
176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
178 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;178 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
180179
181 const numNative = comptime Bytes.init(0x12345678);180 const numNative = comptime Bytes.init(0x12345678);
182 if (native_endian != .little) {181 if (native_endian != .little) {
test/behavior/sizeof_and_typeof.zig-4
...@@ -144,8 +144,6 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {...@@ -144,8 +144,6 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {
144}144}
145145
146test "@TypeOf() has no runtime side effects" {146test "@TypeOf() has no runtime side effects" {
147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
148
149 const S = struct {147 const S = struct {
150 fn foo(comptime T: type, ptr: *T) T {148 fn foo(comptime T: type, ptr: *T) T {
151 ptr.* += 1;149 ptr.* += 1;
...@@ -438,8 +436,6 @@ test "Extern function calls, dereferences and field access in @TypeOf" {...@@ -438,8 +436,6 @@ test "Extern function calls, dereferences and field access in @TypeOf" {
438}436}
439437
440test "@sizeOf struct is resolved when used as operand of slicing" {438test "@sizeOf struct is resolved when used as operand of slicing" {
441 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
442
443 const dummy = struct {};439 const dummy = struct {};
444 const S = struct {440 const S = struct {
445 var buf: [1]u8 = undefined;441 var buf: [1]u8 = undefined;
test/behavior/slice.zig-2
...@@ -176,7 +176,6 @@ test "comptime pointer cast array and then slice" {...@@ -176,7 +176,6 @@ test "comptime pointer cast array and then slice" {
176test "slicing zero length array" {176test "slicing zero length array" {
177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
180179
181 const s1 = ""[0..];180 const s1 = ""[0..];
182 const s2 = ([_]u32{})[0..];181 const s2 = ([_]u32{})[0..];
...@@ -738,7 +737,6 @@ test "array mult of slice gives ptr to array" {...@@ -738,7 +737,6 @@ test "array mult of slice gives ptr to array" {
738737
739test "slice bounds in comptime concatenation" {738test "slice bounds in comptime concatenation" {
740 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO739 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
741 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
742740
743 const bs = comptime blk: {741 const bs = comptime blk: {
744 const b = "........1........";742 const b = "........1........";
test/behavior/string_literals.zig-2
...@@ -8,7 +8,6 @@ const ptr_tag_name: [*:0]const u8 = tag_name;...@@ -8,7 +8,6 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
8test "@tagName() returns a string literal" {8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1211
13 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
14 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
...@@ -22,7 +21,6 @@ const ptr_error_name: [*:0]const u8 = error_name;...@@ -22,7 +21,6 @@ const ptr_error_name: [*:0]const u8 = error_name;
22test "@errorName() returns a string literal" {21test "@errorName() returns a string literal" {
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2624
27 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
28 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
test/behavior/struct.zig-5
...@@ -12,7 +12,6 @@ top_level_field: i32,...@@ -12,7 +12,6 @@ top_level_field: i32,
12test "top level fields" {12test "top level fields" {
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1615
17 var instance = @This(){16 var instance = @This(){
18 .top_level_field = 1234,17 .top_level_field = 1234,
...@@ -125,8 +124,6 @@ test "struct byval assign" {...@@ -125,8 +124,6 @@ test "struct byval assign" {
125}124}
126125
127test "call struct static method" {126test "call struct static method" {
128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
129
130 const result = StructWithNoFields.add(3, 4);127 const result = StructWithNoFields.add(3, 4);
131 try expect(result == 7);128 try expect(result == 7);
132}129}
...@@ -759,7 +756,6 @@ test "packed struct with u0 field access" {...@@ -759,7 +756,6 @@ test "packed struct with u0 field access" {
759test "access to global struct fields" {756test "access to global struct fields" {
760 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
761 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
762 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
763759
764 g_foo.bar.value = 42;760 g_foo.bar.value = 42;
765 try expect(g_foo.bar.value == 42);761 try expect(g_foo.bar.value == 42);
...@@ -2134,7 +2130,6 @@ test "struct field default value is a call" {...@@ -2134,7 +2130,6 @@ test "struct field default value is a call" {
21342130
2135test "aggregate initializers should allow initializing comptime fields, verifying equality" {2131test "aggregate initializers should allow initializing comptime fields, verifying equality" {
2136 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;2132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2137 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
21382133
2139 var x: u32 = 15;2134 var x: u32 = 15;
2140 _ = &x;2135 _ = &x;
test/behavior/this.zig-2
...@@ -21,8 +21,6 @@ fn add(x: i32, y: i32) i32 {...@@ -21,8 +21,6 @@ fn add(x: i32, y: i32) i32 {
21}21}
2222
23test "this refer to module call private fn" {23test "this refer to module call private fn" {
24 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
25
26 try expect(module.add(1, 2) == 3);24 try expect(module.add(1, 2) == 3);
27}25}
2826
test/behavior/tuple.zig-2
...@@ -258,7 +258,6 @@ test "offsetOf anon struct" {...@@ -258,7 +258,6 @@ test "offsetOf anon struct" {
258test "initializing tuple with mixed comptime-runtime fields" {258test "initializing tuple with mixed comptime-runtime fields" {
259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
262261
263 var x: u32 = 15;262 var x: u32 = 15;
264 _ = &x;263 _ = &x;
...@@ -271,7 +270,6 @@ test "initializing tuple with mixed comptime-runtime fields" {...@@ -271,7 +270,6 @@ test "initializing tuple with mixed comptime-runtime fields" {
271test "initializing anon struct with mixed comptime-runtime fields" {270test "initializing anon struct with mixed comptime-runtime fields" {
272 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
273 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
275273
276 var x: u32 = 15;274 var x: u32 = 15;
277 _ = &x;275 _ = &x;
test/behavior/type_info.zig-7
...@@ -161,7 +161,6 @@ test "type info: error set, error union info, anyerror" {...@@ -161,7 +161,6 @@ test "type info: error set, error union info, anyerror" {
161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
165164
166 try testErrorSet();165 try testErrorSet();
167 try comptime testErrorSet();166 try comptime testErrorSet();
...@@ -193,7 +192,6 @@ test "type info: error set single value" {...@@ -193,7 +192,6 @@ test "type info: error set single value" {
193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
197195
198 const TestSet = error.One;196 const TestSet = error.One;
199197
...@@ -207,7 +205,6 @@ test "type info: error set merged" {...@@ -207,7 +205,6 @@ test "type info: error set merged" {
207 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
208 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO206 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO207 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
210 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
211208
212 const TestSet = error{ One, Two } || error{Three};209 const TestSet = error{ One, Two } || error{Three};
213210
...@@ -223,7 +220,6 @@ test "type info: enum info" {...@@ -223,7 +220,6 @@ test "type info: enum info" {
223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
227223
228 try testEnum();224 try testEnum();
229 try comptime testEnum();225 try comptime testEnum();
...@@ -286,7 +282,6 @@ fn testUnion() !void {...@@ -286,7 +282,6 @@ fn testUnion() !void {
286282
287test "type info: struct info" {283test "type info: struct info" {
288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
290285
291 try testStruct();286 try testStruct();
292 try comptime testStruct();287 try comptime testStruct();
...@@ -535,7 +530,6 @@ test "type info for async frames" {...@@ -535,7 +530,6 @@ test "type info for async frames" {
535530
536test "Declarations are returned in declaration order" {531test "Declarations are returned in declaration order" {
537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
539533
540 const S = struct {534 const S = struct {
541 pub const a = 1;535 pub const a = 1;
...@@ -558,7 +552,6 @@ test "Struct.is_tuple for anon list literal" {...@@ -558,7 +552,6 @@ test "Struct.is_tuple for anon list literal" {
558552
559test "Struct.is_tuple for anon struct literal" {553test "Struct.is_tuple for anon struct literal" {
560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
561 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
562555
563 const info = @typeInfo(@TypeOf(.{ .a = 0 }));556 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
564 try expect(!info.Struct.is_tuple);557 try expect(!info.Struct.is_tuple);
test/behavior/undefined.zig-3
...@@ -48,7 +48,6 @@ test "assign undefined to struct" {...@@ -48,7 +48,6 @@ test "assign undefined to struct" {
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5251
53 comptime {52 comptime {
54 var foo: Foo = undefined;53 var foo: Foo = undefined;
...@@ -66,7 +65,6 @@ test "assign undefined to struct with method" {...@@ -66,7 +65,6 @@ test "assign undefined to struct with method" {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7068
71 comptime {69 comptime {
72 var foo: Foo = undefined;70 var foo: Foo = undefined;
...@@ -82,7 +80,6 @@ test "assign undefined to struct with method" {...@@ -82,7 +80,6 @@ test "assign undefined to struct with method" {
8280
83test "type name of undefined" {81test "type name of undefined" {
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8683
87 const x = undefined;84 const x = undefined;
88 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));85 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));
test/behavior/union.zig-4
...@@ -486,7 +486,6 @@ test "global union with single field is correctly initialized" {...@@ -486,7 +486,6 @@ test "global union with single field is correctly initialized" {
486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
490489
491 glbl = Foo1{490 glbl = Foo1{
492 .f = @typeInfo(Foo1).Union.fields[0].type{ .x = 123 },491 .f = @typeInfo(Foo1).Union.fields[0].type{ .x = 123 },
...@@ -546,7 +545,6 @@ test "union initializer generates padding only if needed" {...@@ -546,7 +545,6 @@ test "union initializer generates padding only if needed" {
546test "runtime tag name with single field" {545test "runtime tag name with single field" {
547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
548 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
550548
551 const U = union(enum) {549 const U = union(enum) {
552 A: i32,550 A: i32,
...@@ -1467,7 +1465,6 @@ test "packed union in packed struct" {...@@ -1467,7 +1465,6 @@ test "packed union in packed struct" {
1467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;1467 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1470 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14711468
1472 const S = packed struct {1469 const S = packed struct {
1473 nested: packed union {1470 nested: packed union {
...@@ -1556,7 +1553,6 @@ test "packed union with zero-bit field" {...@@ -1556,7 +1553,6 @@ test "packed union with zero-bit field" {
1556 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1553 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1557 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1558 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;1555 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1559 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15601556
1561 const S = packed struct {1557 const S = packed struct {
1562 nested: packed union {1558 nested: packed union {
test/behavior/vector.zig-1
...@@ -433,7 +433,6 @@ test "load vector elements via runtime index" {...@@ -433,7 +433,6 @@ test "load vector elements via runtime index" {
433 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO433 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
435 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO435 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
437436
438 const S = struct {437 const S = struct {
439 fn doTheTest() !void {438 fn doTheTest() !void {
test/behavior/while.zig-10
...@@ -5,7 +5,6 @@ const assert = std.debug.assert;...@@ -5,7 +5,6 @@ const assert = std.debug.assert;
55
6test "while loop" {6test "while loop" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
98
10 var i: i32 = 0;9 var i: i32 = 0;
11 while (i < 4) {10 while (i < 4) {
...@@ -39,8 +38,6 @@ fn staticWhileLoop2() i32 {...@@ -39,8 +38,6 @@ fn staticWhileLoop2() i32 {
39}38}
4039
41test "while with continue expression" {40test "while with continue expression" {
42 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
43
44 var sum: i32 = 0;41 var sum: i32 = 0;
45 {42 {
46 var i: i32 = 0;43 var i: i32 = 0;
...@@ -53,8 +50,6 @@ test "while with continue expression" {...@@ -53,8 +50,6 @@ test "while with continue expression" {
53}50}
5451
55test "while with else" {52test "while with else" {
56 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
57
58 var sum: i32 = 0;53 var sum: i32 = 0;
59 var i: i32 = 0;54 var i: i32 = 0;
60 var got_else: i32 = 0;55 var got_else: i32 = 0;
...@@ -82,8 +77,6 @@ fn getNumberOrNull() ?i32 {...@@ -82,8 +77,6 @@ fn getNumberOrNull() ?i32 {
82}77}
8378
84test "continue outer while loop" {79test "continue outer while loop" {
85 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
86
87 testContinueOuter();80 testContinueOuter();
88 comptime testContinueOuter();81 comptime testContinueOuter();
89}82}
...@@ -131,7 +124,6 @@ test "while copies its payload" {...@@ -131,7 +124,6 @@ test "while copies its payload" {
131124
132test "continue and break" {125test "continue and break" {
133 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;126 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
135127
136 try runContinueAndBreakTest();128 try runContinueAndBreakTest();
137 try expect(continue_and_break_counter == 8);129 try expect(continue_and_break_counter == 8);
...@@ -349,8 +341,6 @@ test "continue inline while loop" {...@@ -349,8 +341,6 @@ test "continue inline while loop" {
349}341}
350342
351test "else continue outer while" {343test "else continue outer while" {
352 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
353
354 var i: usize = 0;344 var i: usize = 0;
355 while (true) {345 while (true) {
356 i += 1;346 i += 1;