Skip to content

Commit 7c6a966

Browse files
committed
Dont zero init
1 parent 2a90d10 commit 7c6a966

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/day25.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@ const KEPT_BITS: i8 = 0b011;
1717
unsafe fn part1_inner(s: &[u8]) -> u64 {
1818
let mut sum = 0;
1919

20-
let mut keys = [MaybeUninit::<__m256i>::uninit(); 512];
20+
static mut KEYS: [__m256i; 512] = unsafe { std::mem::transmute([0u8; 512 * 32]) };
21+
static mut HOLES: [__m256i; 512] = unsafe { std::mem::transmute([0u8; 512 * 32]) };
22+
23+
let keys = &mut *(&raw mut KEYS);
24+
let holes = &mut *(&raw mut HOLES);
25+
2126
let mut keys_i = 0;
22-
let mut holes = [MaybeUninit::<__m256i>::uninit(); 512];
2327
let mut holes_i = 0;
2428

2529
let mut i = 0;
@@ -46,7 +50,7 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
4650

4751
if is_key {
4852
for i in 0..holes_i {
49-
let o = holes.get_unchecked(i).assume_init_read();
53+
let o = *holes.get_unchecked(i);
5054
let collisions = _mm256_cmpeq_epi8(d, o);
5155
let collisions = _mm256_movemask_epi8(collisions);
5256
sum += (collisions == 0) as u64;
@@ -62,11 +66,11 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
6266
0, 0, 0, 0, 0, -1, -1, -1,
6367
),
6468
);
65-
keys.get_unchecked_mut(keys_i).write(d);
69+
*keys.get_unchecked_mut(keys_i) = d;
6670
keys_i += 1;
6771
} else {
6872
for i in 0..keys_i {
69-
let o = keys.get_unchecked(i).assume_init_read();
73+
let o = *keys.get_unchecked(i);
7074
let collisions = _mm256_cmpeq_epi8(d, o);
7175
let collisions = _mm256_movemask_epi8(collisions);
7276
sum += (collisions == 0) as u64;
@@ -82,7 +86,7 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
8286
0, 0, 0, 0, 0, -1, -1, -1,
8387
),
8488
);
85-
holes.get_unchecked_mut(holes_i).write(d);
89+
*holes.get_unchecked_mut(holes_i) = d;
8690
holes_i += 1;
8791
}
8892

0 commit comments

Comments
 (0)