authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-03 08:34:19+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-03 09:29:30+01:00
logc9e67e71c146d9a9c217d3f47e75258a1ffeedd9
tree4c39477d16c9dc77dd53a254d11d601025fb3919
parent4e843b4e2b8c7cd48ecbd80a59036f1f72a997ca
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Target: Replace isARM() with isArmOrThumb() and rename it to isArm().

The old isARM() function was a portability trap. With the name it had, it seemed like the obviously correct function to use, but it didn't include Thumb. In the vast majority of cases where someone wants to ask "is the target Arm?", Thumb *should* be included. There are exactly 3 cases in the codebase where we do actually need to exclude Thumb, although one of those is in Aro and mirrors a check in Clang that is itself likely a bug. These rare cases can just add an extra isThumb() check.

27 files changed, 64 insertions(+), 71 deletions(-)

lib/compiler/aro/aro/toolchains/Linux.zig+1-1
......@@ -40,7 +40,7 @@ fn buildExtraOpts(self: *Linux, tc: *const Toolchain) !void {
4040 self.extra_opts.appendAssumeCapacity("relro");
4141 }
4242
43 if (target.cpu.arch.isARM() or target.cpu.arch.isAARCH64() or is_android) {
43 if ((target.cpu.arch.isArm() and !target.cpu.arch.isThumb()) or target.cpu.arch.isAARCH64() or is_android) {
4444 try self.extra_opts.ensureUnusedCapacity(gpa, 2);
4545 self.extra_opts.appendAssumeCapacity("-z");
4646 self.extra_opts.appendAssumeCapacity("max-page-size=4096");
lib/compiler_rt/arm.zig+3-5
......@@ -10,7 +10,7 @@ pub const panic = common.panic;
1010
1111comptime {
1212 if (!builtin.is_test) {
13 if (arch.isArmOrThumb()) {
13 if (arch.isArm()) {
1414 @export(&__aeabi_unwind_cpp_pr0, .{ .name = "__aeabi_unwind_cpp_pr0", .linkage = common.linkage, .visibility = common.visibility });
1515 @export(&__aeabi_unwind_cpp_pr1, .{ .name = "__aeabi_unwind_cpp_pr1", .linkage = common.linkage, .visibility = common.visibility });
1616 @export(&__aeabi_unwind_cpp_pr2, .{ .name = "__aeabi_unwind_cpp_pr2", .linkage = common.linkage, .visibility = common.visibility });
......@@ -206,7 +206,7 @@ fn __aeabi_drsub(a: f64, b: f64) callconv(.AAPCS) f64 {
206206}
207207
208208test "__aeabi_frsub" {
209 if (!builtin.cpu.arch.isARM()) return error.SkipZigTest;
209 if (!builtin.cpu.arch.isArm() or builtin.cpu.arch.isThumb()) return error.SkipZigTest;
210210 const inf32 = std.math.inf(f32);
211211 const maxf32 = std.math.floatMax(f32);
212212 const frsub_data = [_][3]f32{
......@@ -226,14 +226,13 @@ test "__aeabi_frsub" {
226226 [_]f32{ maxf32, -maxf32, -inf32 },
227227 [_]f32{ -maxf32, maxf32, inf32 },
228228 };
229 if (!builtin.cpu.arch.isARM()) return error.SkipZigTest;
230229 for (frsub_data) |data| {
231230 try std.testing.expectApproxEqAbs(data[2], __aeabi_frsub(data[0], data[1]), 0.001);
232231 }
233232}
234233
235234test "__aeabi_drsub" {
236 if (!builtin.cpu.arch.isARM()) return error.SkipZigTest;
235 if (!builtin.cpu.arch.isArm() or builtin.cpu.arch.isThumb()) return error.SkipZigTest;
237236 const inf64 = std.math.inf(f64);
238237 const maxf64 = std.math.floatMax(f64);
239238 const frsub_data = [_][3]f64{
......@@ -253,7 +252,6 @@ test "__aeabi_drsub" {
253252 [_]f64{ maxf64, -maxf64, -inf64 },
254253 [_]f64{ -maxf64, maxf64, inf64 },
255254 };
256 if (!builtin.cpu.arch.isARM()) return error.SkipZigTest;
257255 for (frsub_data) |data| {
258256 try std.testing.expectApproxEqAbs(data[2], __aeabi_drsub(data[0], data[1]), 0.000001);
259257 }
lib/compiler_rt/clzsi2_test.zig+1-1
......@@ -268,7 +268,7 @@ test "clzsi2" {
268268 try test__clzsi2(0xFE000000, 0);
269269 try test__clzsi2(0xFF000000, 0);
270270 // arm and thumb1 assume input a != 0
271 if (!builtin.cpu.arch.isArmOrThumb())
271 if (!builtin.cpu.arch.isArm())
272272 try test__clzsi2(0x00000000, 32);
273273 try test__clzsi2(0x00000001, 31);
274274 try test__clzsi2(0x00000002, 30);
lib/compiler_rt/common.zig+1-1
......@@ -29,7 +29,7 @@ pub const want_aeabi = switch (builtin.abi) {
2929 },
3030 else => false,
3131};
32pub const want_mingw_arm_abi = builtin.cpu.arch.isArmOrThumb() and builtin.target.isMinGW();
32pub const want_mingw_arm_abi = builtin.cpu.arch.isArm() and builtin.target.isMinGW();
3333
3434pub const want_ppc_abi = builtin.cpu.arch.isPowerPC();
3535
lib/std/Target.zig+7-10
......@@ -1379,31 +1379,28 @@ pub const Cpu = struct {
13791379 };
13801380 }
13811381
1382 pub inline fn isARM(arch: Arch) bool {
1382 /// Note that this includes Thumb.
1383 pub inline fn isArm(arch: Arch) bool {
13831384 return switch (arch) {
13841385 .arm, .armeb => true,
1385 else => false,
1386 else => arch.isThumb(),
13861387 };
13871388 }
13881389
1389 pub inline fn isAARCH64(arch: Arch) bool {
1390 pub inline fn isThumb(arch: Arch) bool {
13901391 return switch (arch) {
1391 .aarch64, .aarch64_be => true,
1392 .thumb, .thumbeb => true,
13921393 else => false,
13931394 };
13941395 }
13951396
1396 pub inline fn isThumb(arch: Arch) bool {
1397 pub inline fn isAARCH64(arch: Arch) bool {
13971398 return switch (arch) {
1398 .thumb, .thumbeb => true,
1399 .aarch64, .aarch64_be => true,
13991400 else => false,
14001401 };
14011402 }
14021403
1403 pub inline fn isArmOrThumb(arch: Arch) bool {
1404 return arch.isARM() or arch.isThumb();
1405 }
1406
14071404 pub inline fn isWasm(arch: Arch) bool {
14081405 return switch (arch) {
14091406 .wasm32, .wasm64 => true,
lib/std/math/gamma.zig+1-1
......@@ -263,7 +263,7 @@ test gamma {
263263}
264264
265265test "gamma.special" {
266 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
266 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
267267
268268 inline for (&.{ f32, f64 }) |T| {
269269 try expect(std.math.isNan(gamma(T, -std.math.nan(T))));
lib/std/math/isnan.zig+1-1
......@@ -32,7 +32,7 @@ test isSignalNan {
3232 // TODO: Signalling NaN values get converted to quiet NaN values in
3333 // some cases where they shouldn't such that this can fail.
3434 // See https://github.com/ziglang/zig/issues/14366
35 if (!builtin.cpu.arch.isArmOrThumb() and
35 if (!builtin.cpu.arch.isArm() and
3636 !builtin.cpu.arch.isAARCH64() and
3737 !builtin.cpu.arch.isPowerPC() and
3838 builtin.zig_backend != .stage2_c)
lib/std/os/linux.zig+2-2
......@@ -506,7 +506,7 @@ fn getauxvalImpl(index: usize) callconv(.C) usize {
506506const require_aligned_register_pair =
507507 builtin.cpu.arch.isPowerPC32() or
508508 builtin.cpu.arch.isMIPS32() or
509 builtin.cpu.arch.isArmOrThumb();
509 builtin.cpu.arch.isArm();
510510
511511// Split a 64bit value into a {LSB,MSB} pair.
512512// The LE/BE variants specify the endianness to assume.
......@@ -2331,7 +2331,7 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
23312331}
23322332
23332333pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
2334 if (comptime native_arch.isArmOrThumb() or native_arch.isPowerPC32()) {
2334 if (comptime native_arch.isArm() or native_arch.isPowerPC32()) {
23352335 // These architectures reorder the arguments so that a register is not skipped to align the
23362336 // register number that `offset` is passed in.
23372337
lib/std/simd.zig+1-1
......@@ -18,7 +18,7 @@ pub fn suggestVectorLengthForCpu(comptime T: type, comptime cpu: std.Target.Cpu)
1818 if (std.Target.x86.featureSetHasAny(cpu.features, .{ .prefer_256_bit, .avx2 }) and !std.Target.x86.featureSetHas(cpu.features, .prefer_128_bit)) break :blk 256;
1919 if (std.Target.x86.featureSetHas(cpu.features, .sse)) break :blk 128;
2020 if (std.Target.x86.featureSetHasAny(cpu.features, .{ .mmx, .@"3dnow" })) break :blk 64;
21 } else if (cpu.arch.isArmOrThumb()) {
21 } else if (cpu.arch.isArm()) {
2222 if (std.Target.arm.featureSetHas(cpu.features, .neon)) break :blk 128;
2323 } else if (cpu.arch.isAARCH64()) {
2424 // SVE allows up to 2048 bits in the specification, as of 2022 the most powerful machine has implemented 512-bit
lib/std/start.zig+1-1
......@@ -495,7 +495,7 @@ fn posixCallMainAndExit(argc_argv_ptr: [*]usize) callconv(.C) noreturn {
495495 // ARMv6 targets (and earlier) have no support for TLS in hardware.
496496 // FIXME: Elide the check for targets >= ARMv7 when the target feature API
497497 // becomes less verbose (and more usable).
498 if (comptime native_arch.isArmOrThumb()) {
498 if (comptime native_arch.isArm()) {
499499 if (at_hwcap & std.os.linux.HWCAP.TLS == 0) {
500500 // FIXME: Make __aeabi_read_tp call the kernel helper kuser_get_tls
501501 // For the time being use a simple trap instead of a @panic call to
lib/std/zig/system.zig+1-1
......@@ -401,7 +401,7 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target {
401401 }
402402
403403 // https://github.com/llvm/llvm-project/issues/105978
404 if (result.cpu.arch.isArmOrThumb() and result.floatAbi() == .soft) {
404 if (result.cpu.arch.isArm() and result.floatAbi() == .soft) {
405405 result.cpu.features.removeFeature(@intFromEnum(Target.arm.Feature.vfp2));
406406 }
407407
src/codegen/c.zig+1-1
......@@ -5190,7 +5190,7 @@ fn asmInputNeedsLocal(f: *Function, constraint: []const u8, value: CValue) bool
51905190 return switch (constraint[0]) {
51915191 '{' => true,
51925192 'i', 'r' => false,
5193 'I' => !target.cpu.arch.isArmOrThumb(),
5193 'I' => !target.cpu.arch.isArm(),
51945194 else => switch (value) {
51955195 .constant => |val| switch (dg.pt.zcu.intern_pool.indexToKey(val.toIntern())) {
51965196 .ptr => |ptr| if (ptr.byte_offset == 0) switch (ptr.base_addr) {
src/codegen/llvm.zig+3-3
......@@ -494,7 +494,7 @@ const DataLayoutBuilder = struct {
494494 if (idx != size) try writer.print(":{d}", .{idx});
495495 }
496496 }
497 if (self.target.cpu.arch.isArmOrThumb())
497 if (self.target.cpu.arch.isArm())
498498 try writer.writeAll("-Fi8") // for thumb interwork
499499 else if (self.target.cpu.arch == .powerpc64 and
500500 self.target.os.tag != .freebsd and
......@@ -761,7 +761,7 @@ const DataLayoutBuilder = struct {
761761 else => {},
762762 }
763763 },
764 .vector => if (self.target.cpu.arch.isArmOrThumb()) {
764 .vector => if (self.target.cpu.arch.isArm()) {
765765 switch (size) {
766766 128 => abi = 64,
767767 else => {},
......@@ -827,7 +827,7 @@ const DataLayoutBuilder = struct {
827827 else => {},
828828 },
829829 .aggregate => if (self.target.os.tag == .uefi or self.target.os.tag == .windows or
830 self.target.cpu.arch.isArmOrThumb())
830 self.target.cpu.arch.isArm())
831831 {
832832 pref = @min(pref, self.target.ptrBitWidth());
833833 } else switch (self.target.cpu.arch) {
src/glibc.zig+2-2
......@@ -440,7 +440,7 @@ fn start_asm_path(comp: *Compilation, arena: Allocator, basename: []const u8) ![
440440 try result.appendSlice("sparc" ++ s ++ "sparc32");
441441 }
442442 }
443 } else if (arch.isARM()) {
443 } else if (arch.isArm()) {
444444 try result.appendSlice("arm");
445445 } else if (arch.isMIPS()) {
446446 if (!mem.eql(u8, basename, "crti.S") and !mem.eql(u8, basename, "crtn.S")) {
......@@ -604,7 +604,7 @@ fn add_include_dirs_arch(
604604 try args.append("-I");
605605 try args.append(try path.join(arena, &[_][]const u8{ dir, "x86" }));
606606 }
607 } else if (arch.isARM()) {
607 } else if (arch.isArm()) {
608608 if (opt_nptl) |nptl| {
609609 try args.append("-I");
610610 try args.append(try path.join(arena, &[_][]const u8{ dir, "arm", nptl }));
src/libunwind.zig+1-1
......@@ -136,7 +136,7 @@ pub fn buildStaticLib(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
136136 if (!comp.config.any_non_single_threaded) {
137137 try cflags.append("-D_LIBUNWIND_HAS_NO_THREADS");
138138 }
139 if (target.cpu.arch.isArmOrThumb() and target.abi.floatAbi() == .hard) {
139 if (target.cpu.arch.isArm() and target.abi.floatAbi() == .hard) {
140140 try cflags.append("-DCOMPILER_RT_ARMHF_TARGET");
141141 }
142142 try cflags.append("-Wno-bitwise-conditional-parentheses");
src/link/Coff.zig+4-6
......@@ -1865,12 +1865,10 @@ fn linkWithLLD(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_node:
18651865 try argv.append("-MACHINE:X86");
18661866 } else if (target.cpu.arch == .x86_64) {
18671867 try argv.append("-MACHINE:X64");
1868 } else if (target.cpu.arch.isARM()) {
1869 if (target.ptrBitWidth() == 32) {
1870 try argv.append("-MACHINE:ARM");
1871 } else {
1872 try argv.append("-MACHINE:ARM64");
1873 }
1868 } else if (target.cpu.arch == .thumb) {
1869 try argv.append("-MACHINE:ARM");
1870 } else if (target.cpu.arch == .aarch64) {
1871 try argv.append("-MACHINE:ARM64");
18741872 }
18751873
18761874 for (comp.force_undefined_symbols.keys()) |symbol| {
src/link/Elf.zig+1-1
......@@ -1823,7 +1823,7 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s
18231823 }
18241824
18251825 if (link_mode == .static) {
1826 if (target.cpu.arch.isArmOrThumb()) {
1826 if (target.cpu.arch.isArm()) {
18271827 try argv.append("-Bstatic");
18281828 } else {
18291829 try argv.append("-static");
test/behavior/cast.zig+2-2
......@@ -124,7 +124,7 @@ test "@floatFromInt(f80)" {
124124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
127 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
128128 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
129129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
130130
......@@ -1362,7 +1362,7 @@ test "cast f16 to wider types" {
13621362 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13631363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13641364 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1365 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1365 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
13661366 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13671367 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13681368
test/behavior/eval.zig+1-1
......@@ -522,7 +522,7 @@ test "runtime 128 bit integer division" {
522522 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
523523 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
524524 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
526526 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
527527 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
528528
test/behavior/floatop.zig+7-7
......@@ -126,7 +126,7 @@ test "cmp f16" {
126126 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
127127 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
128128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
129 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
129 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
130130
131131 try testCmp(f16);
132132 try comptime testCmp(f16);
......@@ -135,7 +135,7 @@ test "cmp f16" {
135135test "cmp f32/f64" {
136136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137137 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
138 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
138 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
139139
140140 try testCmp(f32);
141141 try comptime testCmp(f32);
......@@ -146,7 +146,7 @@ test "cmp f32/f64" {
146146test "cmp f128" {
147147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
148148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
149 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
150150 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
151151 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
152152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
......@@ -1009,7 +1009,7 @@ test "@abs f32/f64" {
10091009test "@abs f80/f128/c_longdouble" {
10101010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10111011 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1012 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1012 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
10131013 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10141014 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10151015 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
......@@ -1134,7 +1134,7 @@ test "@floor f32/f64" {
11341134test "@floor f80/f128/c_longdouble" {
11351135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11361136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1137 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1137 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
11381138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11391139 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
11401140 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
......@@ -1232,7 +1232,7 @@ test "@ceil f32/f64" {
12321232test "@ceil f80/f128/c_longdouble" {
12331233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12341234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1235 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1235 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
12361236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12371237 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
12381238 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
......@@ -1330,7 +1330,7 @@ test "@trunc f32/f64" {
13301330test "@trunc f80/f128/c_longdouble" {
13311331 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13321332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1333 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
13341334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13351335 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13361336 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
test/behavior/math.zig+7-7
......@@ -780,7 +780,7 @@ test "128-bit multiplication" {
780780 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
781781 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
782782 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
783 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
783 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
784784 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
785785
786786 {
......@@ -1369,7 +1369,7 @@ test "remainder division" {
13691369 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13701370 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13711371 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1372 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1372 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
13731373 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13741374
13751375 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
......@@ -1522,7 +1522,7 @@ test "@round f80" {
15221522 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15231523 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15241524 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1525 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1525 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
15261526 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15271527 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15281528
......@@ -1535,7 +1535,7 @@ test "@round f128" {
15351535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15361536 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15371537 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1538 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
1538 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
15391539 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15401540 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15411541
......@@ -1579,7 +1579,7 @@ test "NaN comparison" {
15791579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15801580 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15811581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1582 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
1582 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
15831583
15841584 try testNanEqNan(f16);
15851585 try testNanEqNan(f32);
......@@ -1735,7 +1735,7 @@ test "runtime comparison to NaN is comptime-known" {
17351735 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17361736 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
17371737 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1738 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
1738 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
17391739
17401740 const S = struct {
17411741 fn doTheTest(comptime F: type, x: F) void {
......@@ -1766,7 +1766,7 @@ test "runtime int comparison to inf is comptime-known" {
17661766 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17671767 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
17681768 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1769 if (builtin.cpu.arch.isArmOrThumb() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
1769 if (builtin.cpu.arch.isArm() and builtin.target.floatAbi() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
17701770
17711771 const S = struct {
17721772 fn doTheTest(comptime F: type, x: u32) void {
test/behavior/maximum_minimum.zig+1-1
......@@ -122,7 +122,7 @@ test "@min/max for floats" {
122122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
124124 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
125 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
125 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
126126 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
127127 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
128128
test/behavior/muladd.zig+4-4
......@@ -58,7 +58,7 @@ test "@mulAdd f80" {
5858 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5959 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6060 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
6262 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6363 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6464
......@@ -79,7 +79,7 @@ test "@mulAdd f128" {
7979 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8080 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8181 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
8383 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
8484 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8585
......@@ -189,7 +189,7 @@ test "vector f80" {
189189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
190190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
193193 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
194194
195195 try comptime vector80();
......@@ -216,7 +216,7 @@ test "vector f128" {
216216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
217217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218218 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
220220 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
221221
222222 try comptime vector128();
test/behavior/saturating_arithmetic.zig+2-2
......@@ -164,7 +164,7 @@ test "saturating multiplication <= 32 bits" {
164164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
165165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
167 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
167 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
168168 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
169169
170170 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
......@@ -264,7 +264,7 @@ test "saturating multiplication" {
264264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
265265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266266 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
268268 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
269269
270270 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
test/behavior/struct.zig+3-3
......@@ -419,7 +419,7 @@ test "packed struct 24bits" {
419419 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
420420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421421 if (builtin.cpu.arch == .wasm32) return error.SkipZigTest; // TODO
422 if (comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest; // TODO
422 if (comptime builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
423423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
424424 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
425425
......@@ -818,7 +818,7 @@ test "non-packed struct with u128 entry in union" {
818818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
819819 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
820820 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
821 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
821 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
822822 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
823823
824824 const U = union(enum) {
......@@ -941,7 +941,7 @@ test "tuple assigned to variable" {
941941
942942test "comptime struct field" {
943943 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
944 if (comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest; // TODO
944 if (comptime builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
945945
946946 const T = struct {
947947 a: i32,
test/behavior/vector.zig+2-2
......@@ -101,7 +101,7 @@ test "vector float operators" {
101101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
105105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
106106
107107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
......@@ -753,7 +753,7 @@ test "vector reduce operation" {
753753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
754754 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
755755 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
756 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
756 if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArm()) return error.SkipZigTest;
757757 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
758758 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091
759759
test/c_abi/main.zig+3-3
......@@ -10,7 +10,7 @@ const builtin = @import("builtin");
1010const print = std.debug.print;
1111const expect = std.testing.expect;
1212const expectEqual = std.testing.expectEqual;
13const have_i128 = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isARM() and
13const have_i128 = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isArm() and
1414 !builtin.cpu.arch.isMIPS() and !builtin.cpu.arch.isPowerPC32();
1515
1616const have_f128 = builtin.cpu.arch.isX86() and !builtin.os.tag.isDarwin();
......@@ -181,7 +181,7 @@ extern fn c_cmultf(a: ComplexFloat, b: ComplexFloat) ComplexFloat;
181181extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble;
182182
183183const complex_abi_compatible = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isMIPS() and
184 !builtin.cpu.arch.isARM() and !builtin.cpu.arch.isPowerPC32() and !builtin.cpu.arch.isRISCV();
184 !builtin.cpu.arch.isArm() and !builtin.cpu.arch.isPowerPC32() and !builtin.cpu.arch.isRISCV();
185185
186186test "C ABI complex float" {
187187 if (!complex_abi_compatible) return error.SkipZigTest;
......@@ -5553,7 +5553,7 @@ extern fn c_f16_struct(f16_struct) f16_struct;
55535553test "f16 struct" {
55545554 if (builtin.target.cpu.arch.isMIPS64()) return error.SkipZigTest;
55555555 if (builtin.target.cpu.arch.isPowerPC32()) return error.SkipZigTest;
5556 if (builtin.cpu.arch.isARM() and builtin.mode != .Debug) return error.SkipZigTest;
5556 if (builtin.cpu.arch.isArm() and builtin.mode != .Debug) return error.SkipZigTest;
55575557
55585558 const a = c_f16_struct(.{ .a = 12 });
55595559 try expect(a.a == 34);