File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed
Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -50,10 +50,11 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
5050
5151 if is_key {
5252 std:: arch:: asm!(
53- "test {i }, {i }" ,
53+ "test {max_i }, {max_i }" ,
5454 "je 2f" , // Jump on empty
55- "cmp {i }, 1" ,
55+ "cmp {max_i }, 1" ,
5656 "je 3f" , // Jump to one case
57+ "mov {i}, {max_i}" ,
5758 "shl {i}, 5" ,
5859 "4:" ,
5960 "add {i}, -64" ,
@@ -75,8 +76,9 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
7576 "adc {sum}, 0" ,
7677 "2:" ,
7778 os = in( reg) holes,
79+ max_i = in( reg) holes_i,
7880 d = in( ymm_reg) d,
79- i = inout ( reg) holes_i => _,
81+ i = out ( reg) _,
8082 sum = inout( reg) sum,
8183 t = out( reg) _,
8284 vt = out( ymm_reg) _,
@@ -97,10 +99,11 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
9799 keys_i += 1 ;
98100 } else {
99101 std:: arch:: asm!(
100- "test {i }, {i }" ,
102+ "test {max_i }, {max_i }" ,
101103 "je 2f" , // Jump on empty
102- "cmp {i }, 1" ,
104+ "cmp {max_i }, 1" ,
103105 "je 3f" , // Jump to one case
106+ "mov {i}, {max_i}" ,
104107 "shl {i}, 5" ,
105108 "4:" ,
106109 "add {i}, -64" ,
@@ -122,8 +125,9 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
122125 "adc {sum}, 0" ,
123126 "2:" ,
124127 os = in( reg) keys,
128+ max_i = in( reg) keys_i,
125129 d = in( ymm_reg) d,
126- i = inout ( reg) keys_i => _,
130+ i = out ( reg) _,
127131 sum = inout( reg) sum,
128132 t = out( reg) _,
129133 vt = out( ymm_reg) _,
You can’t perform that action at this time.
0 commit comments