@@ -4,11 +4,20 @@ const mem = std.mem;
4
4
const expect = std .testing .expect ;
5
5
const expectEqual = std .testing .expectEqual ;
6
6
7
- test "@depositBits" {
7
+ fn runnerSupportsPextPdep ( int_width : u16 ) bool {
8
8
switch (builtin .zig_backend ) {
9
- .stage2_llvm , .stage2_x86_64 = > {},
10
- else = > return error .SkipZigTest , // TODO
9
+ .stage2_llvm = > return true ,
10
+ .stage2_x86_64 = > {
11
+ if (int_width > 64 ) return false ;
12
+ if (! builtin .cpu .features .isEnabled (@intFromEnum (std .Target .x86 .Feature .bmi2 ))) return false ;
13
+ return true ;
14
+ },
15
+ else = > return false ,
11
16
}
17
+ }
18
+
19
+ test "@depositBits" {
20
+ if (comptime ! runnerSupportsPextPdep (64 )) return error .SkipZigTest ; // TODO
12
21
13
22
const S = struct {
14
23
pub fn doTheTest () ! void {
@@ -37,7 +46,7 @@ test "@depositBits" {
37
46
}
38
47
39
48
test "@depositBits u128" {
40
- if (builtin . zig_backend != .stage2_llvm ) return error .SkipZigTest ;
49
+ if (comptime ! runnerSupportsPextPdep ( 128 )) return error .SkipZigTest ; // TODO
41
50
42
51
const S = struct {
43
52
pub fn doTheTest () ! void {
@@ -56,10 +65,7 @@ test "@depositBits u128" {
56
65
}
57
66
58
67
test "@extractBits" {
59
- switch (builtin .zig_backend ) {
60
- .stage2_llvm , .stage2_x86_64 = > {},
61
- else = > return error .SkipZigTest , // TODO
62
- }
68
+ if (comptime ! runnerSupportsPextPdep (64 )) return error .SkipZigTest ; // TODO
63
69
64
70
const S = struct {
65
71
pub fn doTheTest () ! void {
@@ -88,7 +94,7 @@ test "@extractBits" {
88
94
}
89
95
90
96
test "@extractBits u128" {
91
- if (builtin . zig_backend != .stage2_llvm ) return error .SkipZigTest ; // TODO
97
+ if (comptime ! runnerSupportsPextPdep ( 128 ) ) return error .SkipZigTest ; // TODO
92
98
93
99
const S = struct {
94
100
pub fn doTheTest () ! void {
0 commit comments