diff options
| author | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
| commit | baf4910870a6e8999802b9a4a22eabd4142a34e3 (patch) | |
| tree | 2d11443dc21e53bd0d99d015cf789937d6d95862 /2020/01/repair_avx.asm | |
| parent | 49d0c908f24b2c193c9deed1716fe36061ba26a1 (diff) | |
Move all Advent of Codes into one repo
Diffstat (limited to '2020/01/repair_avx.asm')
| -rw-r--r-- | 2020/01/repair_avx.asm | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/2020/01/repair_avx.asm b/2020/01/repair_avx.asm new file mode 100644 index 0000000..4f128f6 --- /dev/null +++ b/2020/01/repair_avx.asm @@ -0,0 +1,21 @@ +global repair_avx_inner + +section .text + +repair_avx_inner: +%assign i 0 +%rep 25 + vpcmpeqd ymm1, ymm0, [rdi + i] +; vptest ymm1, ymm1 ; slower then vpmovmskb + test + vpmovmskb eax, ymm1 + test eax, eax + jne .found +%assign i i+32 +%endrep + xor eax, eax ; not found, return 0 + vzeroupper ; eliminate performance penalties caused by false dependencies when transitioning between AVX and legacy SSE instructions + ret +.found: + vzeroupper ; eliminate performance penalties caused by false dependencies when transitioning between AVX and legacy SSE instructions + movd eax, xmm0 ; smaller then putting a vmovd before the vzeroupper and no measurable performance difference + ret |
