Skip to content

Commit 57fa1d2

Browse files
committed
Dont use static
1 parent cf05e91 commit 57fa1d2

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/day25.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::arch::x86_64::*;
1+
use std::{arch::x86_64::*, mem::MaybeUninit};
22

33
use aoc_runner_derive::aoc;
44

@@ -21,11 +21,8 @@ static LUT: [u32; 4] = [0, 0xFF, 0xFF_FF, 0xFF_FF_FF];
2121
unsafe fn part1_inner(s: &[u8]) -> u64 {
2222
let mut sum = 0;
2323

24-
static mut KEYS: [u64; 256] = unsafe { std::mem::transmute([0u8; 256 * 8]) };
25-
static mut HOLES: [u64; 256] = unsafe { std::mem::transmute([0u8; 256 * 8]) };
26-
27-
let keys = &mut *(&raw mut KEYS);
28-
let holes = &mut *(&raw mut HOLES);
24+
let mut keys: [MaybeUninit<u64>; 256] = [MaybeUninit::uninit(); 256];
25+
let mut holes: [MaybeUninit<u64>; 256] = [MaybeUninit::uninit(); 256];
2926

3027
let mut keys_i = 0;
3128
let mut holes_i = 0;
@@ -131,15 +128,15 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
131128
msb = in(ymm_reg) _mm256_set1_epi8(0x80u8 as i8),
132129
zero = in(ymm_reg) _mm256_set1_epi64x(0),
133130
lut = in(reg) LUT.as_ptr(),
134-
os = in(reg) holes,
131+
os = in(reg) holes.as_ptr(),
135132
max_i = in(reg) holes_i,
136133
sum = inout(reg) sum,
137134
i = out(reg) _,
138135
t = out(reg) _,
139136
vt = out(ymm_reg) _,
140137
options(nostack),
141138
);
142-
*keys.get_unchecked_mut(keys_i) = d + 0x7A7A7A7A7A;
139+
keys.get_unchecked_mut(keys_i).write(d + 0x7A7A7A7A7A);
143140
keys_i += 1;
144141
} else {
145142
std::arch::asm!(
@@ -210,15 +207,15 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
210207
msb = in(ymm_reg) _mm256_set1_epi8(0x80u8 as i8),
211208
zero = in(ymm_reg) _mm256_set1_epi64x(0),
212209
lut = in(reg) LUT.as_ptr(),
213-
os = in(reg) keys,
210+
os = in(reg) keys.as_ptr(),
214211
max_i = in(reg) keys_i,
215212
sum = inout(reg) sum,
216213
i = out(reg) _,
217214
t = out(reg) _,
218215
vt = out(ymm_reg) _,
219216
options(nostack),
220217
);
221-
*holes.get_unchecked_mut(holes_i) = d + 0x7A7A7A7A7A;
218+
holes.get_unchecked_mut(holes_i).write(d + 0x7A7A7A7A7A);
222219
holes_i += 1;
223220
}
224221

0 commit comments

Comments
 (0)