Commit db80dff4e0
Changed files (4)
src
codegen
test
src/codegen/llvm.zig
@@ -4390,7 +4390,7 @@ pub const FuncGen = struct {
var operand_llvm_ty = try self.dg.llvmType(operand_ty);
if (bits % 16 == 8) {
- // If not an even byte-multiple, we need zero-extend + shift-left 1 byte
+ // If not an even byte-multiple, we need zero-extend + shift-left 1 byte
// The truncated result at the end will be the correct bswap
operand_llvm_ty = self.context.intType(bits + 8);
const extended = self.builder.buildZExt(operand, operand_llvm_ty, "");
test/behavior/bitreverse.zig
@@ -3,10 +3,24 @@ const builtin = @import("builtin");
const expect = std.testing.expect;
const minInt = std.math.minInt;
+test "@bitReverse large exotic integer" {
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+ // Currently failing on stage1 for big-endian targets
+ if (builtin.zig_backend == .stage1) return error.SkipZigTest;
+
+ try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
+}
+
test "@bitReverse" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
comptime try testBitReverse();
try testBitReverse();
@@ -27,11 +41,6 @@ fn testBitReverse() !void {
try expect(@bitReverse(u96, @as(u96, 0x123456789abcdef111213141)) == 0x828c84888f7b3d591e6a2c48);
try expect(@bitReverse(u128, @as(u128, 0x123456789abcdef11121314151617181)) == 0x818e868a828c84888f7b3d591e6a2c48);
- if (builtin.zig_backend != .stage1) {
- // Currently failing on stage1 for big-endian targets
- try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
- }
-
// using runtime uints, unsigned
var num0: u0 = 0;
try expect(@bitReverse(u0, num0) == 0);
test/behavior/byteswap.zig
@@ -6,6 +6,8 @@ test "@byteSwap integers" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
const ByteSwapIntTest = struct {
fn run() !void {
@@ -56,6 +58,8 @@ test "@byteSwap vectors" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
const ByteSwapVectorTest = struct {
fn run() !void {
test/behavior.zig
@@ -6,6 +6,8 @@ test {
_ = @import("behavior/array.zig");
_ = @import("behavior/basic.zig");
_ = @import("behavior/bit_shifting.zig");
+ _ = @import("behavior/bitreverse.zig");
+ _ = @import("behavior/byteswap.zig");
_ = @import("behavior/bool.zig");
_ = @import("behavior/bugs/394.zig");
_ = @import("behavior/bugs/655.zig");
@@ -105,8 +107,6 @@ test {
if (builtin.zig_backend != .stage2_c) {
// Tests that pass for stage1 and the llvm backend.
_ = @import("behavior/atomics.zig");
- _ = @import("behavior/bitreverse.zig");
- _ = @import("behavior/byteswap.zig");
_ = @import("behavior/bugs/9584.zig");
_ = @import("behavior/eval.zig");
_ = @import("behavior/floatop.zig");