From 4ecc8a5baf2662dbb20071a96d8ac30180a6a0bc Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Fri, 18 Jun 2021 22:02:47 +0200 Subject: Fix SIMD asm impl of day 5 --- 5/seat_id_sse3.asm | 24 ------------------------ 5/seat_id_ssse3.asm | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 5/seat_id_sse3.asm create mode 100644 5/seat_id_ssse3.asm (limited to '5') diff --git a/5/seat_id_sse3.asm b/5/seat_id_sse3.asm deleted file mode 100644 index a377932..0000000 --- a/5/seat_id_sse3.asm +++ /dev/null @@ -1,24 +0,0 @@ -global seat_id - -section .rodata - align 16 - xmm_shuf: db 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10, 11, 12, 13, 14, 15 - xmm_cmp: db 1, 'RBBBBBBB', 1, 1, 1, 1, 1, 1, 1 - -section .text - -seat_id: - xor eax, eax ; set up return value - movq xmm0, qword [rdi] ; load first 8 bytes - pshufb xmm0, [rel xmm_shuf] ; reverse byte order and already shift left once - pcmpeqb xmm0, [rel xmm_cmp] - pmovmskb eax, xmm0 ; store mask in return value - xor ecx, ecx - cmp byte [rdi + 8], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp byte [rdi + 9], 'R' - sete cl - or eax, ecx - ret diff --git a/5/seat_id_ssse3.asm b/5/seat_id_ssse3.asm new file mode 100644 index 0000000..4d51cbe --- /dev/null +++ b/5/seat_id_ssse3.asm @@ -0,0 +1,23 @@ +global seat_id + +section .rodata + align 16 + xmm_shuf: db 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10, 11, 12, 13, 14, 15 + xmm_cmp: db 1, 'RBBBBBBB', 1, 1, 1, 1, 1, 1, 1 + +section .text + +seat_id: + movq xmm0, qword [rdi] ; load first 8 bytes + pshufb xmm0, [rel xmm_shuf] ; reverse byte order and already shift left once + pcmpeqb xmm0, [rel xmm_cmp] + pmovmskb eax, xmm0 ; store mask in return value + xor ecx, ecx + cmp byte [rdi + 8], 'R' + sete cl + or eax, ecx + shl eax, 1 + cmp byte [rdi + 9], 'R' + sete cl + or eax, ecx + ret -- cgit v1.2.3