Skip to content

Commit b949c76

Browse files
dderjoelJasonGross
authored andcommitted
another test case
Unable to unify: [inr [351, 349, 350]] == [inr [103, 108, 110]] Could not unify the values at index 0: [mit-plv#351, mit-plv#349, mit-plv#350] != [mit-plv#103, mit-plv#108, mit-plv#110] index 0: mit-plv#351 != mit-plv#103 (slice 0 44, [mit-plv#345]) != (slice 0 44, [mit-plv#100]) index 0: mit-plv#345 != mit-plv#100 (add 64, [#58, #95, mit-plv#343]) != (add 64, [#58, #98]) (add 64, [#95, mit-plv#343]) != (add 64, [#98]) (add 64, [#95, (mul 64, [#95, mit-plv#331])]) != (add 64, [(mul 64, [#3, #95])]) (add 64, [#95, (mul 64, [#95, (const 4, [])])]) != (add 64, [(mul 64, [#3, #95])]) (add 64, [(or 64, [#91, #93]), (mul 64, [(or 64, [#91, #93]), (const 4, [])])]) != (add 64, [(mul 64, [(const 5, []), (or 64, [#91, #93])])])
1 parent e45a176 commit b949c76

1 file changed

Lines changed: 84 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
SECTION .text
2+
GLOBAL square_poly1305
3+
square_poly1305:
4+
sub rsp, 0x30
5+
mov rax, 0x1 ; moving imm to reg
6+
shlx r10, [ rsi + 0x8 ], rax; x4 <- arg1[1] * 0x2 (shlx does not change the flags)
7+
mov rdx, [ rsi + 0x0 ]; arg1[0] to rdx
8+
mulx rcx, r11, rdx; x10_1, x10_0<- arg1[0]^2
9+
imul rdx, [ rsi + 0x10 ], 0x14; x10000 <- arg1[2] * 0x14
10+
mov r8, [ rsi + 0x10 ]; load m64 arg1[2] to register64
11+
lea r9, [r8 + 4 * r8]; x1 <- arg1[2] * 5 (by add to itself*4)
12+
mulx rax, r8, [ rsi + 0x8 ]; x6_1, x6_0<- arg1[1] * x10000 (_0*_0)
13+
mov rdx, [ rsi + 0x10 ]; arg1[2] to rdx
14+
mov [ rsp + 0x0 ], rbx; spilling calSv-rbx to mem
15+
mov [ rsp + 0x8 ], rbp; spilling calSv-rbp to mem
16+
mulx rbp, rbx, r9; x5_1, x5_0<- arg1[2] * x1 (_0*_0)
17+
mov rdx, [ rsi + 0x10 ]; load m64 arg1[2] to register64
18+
mov r9, rdx; load m64 x3 to register64
19+
shl r9, 0x1; x3 <- arg1[2] * 0x2
20+
mov rdx, [ rsi + 0x0 ]; arg1[0] to rdx
21+
mov [ rsp + 0x10 ], r12; spilling calSv-r12 to mem
22+
mov [ rsp + 0x18 ], r13; spilling calSv-r13 to mem
23+
mulx r13, r12, r9; x8_1, x8_0<- arg1[0] * x3 (_0*_0)
24+
mov rdx, [ rsi + 0x8 ]; load m64 arg1[1] to register64
25+
mov r9, rdx; load m64 x10001 to register64
26+
shl r9, 0x1; x10001 <- arg1[1] * 0x2
27+
mov rdx, [ rsi + 0x8 ]; arg1[1] to rdx
28+
mov [ rsp + 0x20 ], r14; spilling calSv-r14 to mem
29+
mov [ rsp + 0x28 ], r15; spilling calSv-r15 to mem
30+
mulx r15, r14, r9; x7_1, x7_0<- arg1[1] * x10001 (_0*_0)
31+
mov rdx, r10; x4 to rdx
32+
mulx r9, r10, [ rsi + 0x0 ]; x9_1, x9_0<- arg1[0] * x4 (_0*_0)
33+
add rbx, r10; could be done better, if r0 has been u8 as well
34+
adcx r9, rbp
35+
add r8, r11; could be done better, if r0 has been u8 as well
36+
adcx rcx, rax
37+
mov rdx, r8;x12, copying x11_0 here, cause x11_0 is needed in a reg. It has those deps: "x12, x13, size: 2", current hard deps: ""
38+
shrd rdx, rcx, 44; x12 <- x11_1||x11_0 >> 44
39+
add r14, r12; could be done better, if r0 has been u8 as well
40+
adcx r13, r15
41+
mov r11, 0xfffffffffff ; moving imm to reg
42+
and r8, r11; x13 <- x11_0&0xfffffffffff
43+
adox rbx, rdx
44+
mov rax, 0x0 ; moving imm to reg
45+
adox r9, rax
46+
mov rbp, 0x2b ; moving imm to reg
47+
bzhi r12, rbx, rbp; x18 <- x16_0 (only least 0x2b bits)
48+
shrd rbx, r9, 43; x17 <- x16_1||x16_0 >> 43
49+
add r14, rbx; could be done better, if r0 has been u8 as well
50+
adc r13, 0x0; add CF to r0's alloc
51+
mov r15, r14;x20, copying x19_0 here, cause x19_0 is needed in a reg. It has those deps: "x20, x21, size: 2", current hard deps: ""
52+
shrd r15, r13, 43; x20 <- x19_1||x19_0 >> 43
53+
lea r10, [r15 + 4 * r15]; x22 <- x20 * 5 (by add to itself*4)
54+
lea r8, [ r8 + r10 ]
55+
bzhi rcx, r14, rbp; x21 <- x19_0 (only least 0x2b bits)
56+
mov rdx, r8;x24, copying x23 here, cause x23 is needed in a reg. It has those deps: "x24, x25, size: 2", current hard deps: ""
57+
shr rdx, 44; x24 <- x23>> 44
58+
lea rdx, [ rdx + r12 ]
59+
mov r9, rdx;x27, copying x26 here, cause x26 is needed in a reg. It has those deps: "x27, x28, size: 2", current hard deps: ""
60+
shr r9, 43; x27 <- x26>> 43
61+
bzhi r12, rdx, rbp; x28 <- x26 (only least 0x2b bits)
62+
lea r9, [ r9 + rcx ]
63+
and r8, r11; x25 <- x23&0xfffffffffff
64+
mov [ rdi + 0x10 ], r9; out1[2] = x29
65+
mov [ rdi + 0x8 ], r12; out1[1] = x28
66+
mov [ rdi + 0x0 ], r8; out1[0] = x25
67+
mov rbx, [ rsp + 0x0 ] ; pop
68+
mov rbp, [ rsp + 0x8 ] ; pop
69+
mov r12, [ rsp + 0x10 ] ; pop
70+
mov r13, [ rsp + 0x18 ] ; pop
71+
mov r14, [ rsp + 0x20 ] ; pop
72+
mov r15, [ rsp + 0x28 ] ; pop
73+
add rsp, 0x30
74+
ret
75+
; cpu Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
76+
; ratio 1.1549
77+
; seed 1785685356
78+
; CC / CFLAGS gcc / -march=native -mtune=native -O3
79+
; time needed: 441 ms / 50 evals=> 8.82ms/eval
80+
; Time spent for assembling and measureing (initial batch_size=166, initial num_batches=31): 45 ms
81+
; number of used evaluations: 50
82+
; Ratio (time for assembling + measure)/(total runtime for 50 evals): 0.10204081632653061
83+
; number reverted permutation/ tried permutation: 7 / 26 =26.923%
84+
; number reverted decision/ tried decision: 5 / 23 =21.739%

0 commit comments

Comments
 (0)