File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -100,7 +100,7 @@ struct sub_group_mask {
100
100
uint32_t mask = 0 ;
101
101
if (pos.get (0 ) + insert_size < size ())
102
102
mask |= (0xffffffff << (pos.get (0 ) + insert_size));
103
- if (pos.get (0 ) < size ())
103
+ if (pos.get (0 ) < size () && pos. get ( 0 ) )
104
104
mask |= (0xffffffff >> (size () - pos.get (0 )));
105
105
Bits &= mask;
106
106
Bits += insert_data;
Original file line number Diff line number Diff line change @@ -87,4 +87,26 @@ int main() {
87
87
sycl::marray<char , 6 > r3{-1 };
88
88
b.extract_bits (r3, 14 );
89
89
assert (r3[0 ] == 1 && r3[1 ] == 2 && r3[2 ] == 2 && !r3[3 ] && !r3[4 ] && !r3[5 ]);
90
+ int ibits = 0b1010101010101010101010101010101 ;
91
+ b.insert_bits (ibits);
92
+ for (size_t i = 0 ; i < 32 ; i++) {
93
+ assert (b[i] != (bool )(i % 2 ));
94
+ }
95
+ short sbits = 0b0111011101110111 ;
96
+ b.insert_bits (sbits, 7 );
97
+ b.extract_bits (ibits);
98
+ assert (ibits == 0b1010101001110111011101111010101 );
99
+ sbits = 0b1100001111000011 ;
100
+ b.insert_bits (sbits, 23 );
101
+ b.extract_bits (ibits);
102
+ assert (ibits == 0b11100001101110111011101111010101 );
103
+ int64_t lbits = -1 ;
104
+ b.extract_bits (lbits, 33 );
105
+ assert (lbits == 0 );
106
+ lbits = -1 ;
107
+ b.extract_bits (lbits, 5 );
108
+ assert (lbits == 0b111000011011101110111011110 );
109
+ lbits = -1 ;
110
+ b.insert_bits (lbits);
111
+ assert (b.all ());
90
112
}
You can’t perform that action at this time.
0 commit comments