| ... | ... | @@ -394,12 +394,34 @@ test "bitcast vector to integer and back" { |
| 394 | 394 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 395 | 395 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 396 | 396 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 397 | | if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; |
| 398 | | |
| 399 | | const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14; |
| 400 | | var x: @Vector(16, bool) = @splat(true); |
| 401 | | x[1] = false; |
| 402 | | try expect(@as(u16, @bitCast(x)) == comptime @as(u16, @bitCast(@as(@Vector(16, bool), arr)))); |
| 397 | if (builtin.cpu.arch.endian() == .big and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; |
| 398 | |
| 399 | var vec: @Vector(16, bool) = @splat(true); |
| 400 | vec[1] = false; |
| 401 | |
| 402 | const int: u16 = @bitCast(vec); |
| 403 | try expect(int == 0b1111_1111_1111_1101); |
| 404 | |
| 405 | const vec_again: @Vector(16, bool) = @bitCast(int); |
| 406 | try expect(vec_again[0]); |
| 407 | try expect(!vec_again[1]); |
| 408 | try expect(vec_again[2]); |
| 409 | try expect(vec_again[3]); |
| 410 | try expect(vec_again[4]); |
| 411 | try expect(vec_again[5]); |
| 412 | try expect(vec_again[6]); |
| 413 | try expect(vec_again[7]); |
| 414 | try expect(vec_again[8]); |
| 415 | try expect(vec_again[9]); |
| 416 | try expect(vec_again[10]); |
| 417 | try expect(vec_again[11]); |
| 418 | try expect(vec_again[12]); |
| 419 | try expect(vec_again[13]); |
| 420 | try expect(vec_again[14]); |
| 421 | try expect(vec_again[15]); |
| 422 | |
| 423 | const int_again: u16 = @bitCast(vec_again); |
| 424 | try expect(int_again == 0b1111_1111_1111_1101); |
| 403 | 425 | } |
| 404 | 426 | |
| 405 | 427 | fn bitCastWrapper16(x: f16) u16 { |