The bug is around
593 testq %rdi, %rdi 594 je L(back_to_loop)
At this point, there may be less than 4 vector length remaining:
Breakpoint 1, __strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:594 594 je L(back_to_loop) (gdb) p $r11 $2 = 97 (gdb) next 303 vmovdqa (%rax), %ymm0 (gdb) 304 vmovdqa VEC_SIZE(%rax), %ymm3 (gdb) 305 VPCMPEQ (%rdx), %ymm0, %ymm4 (gdb) 306 VPCMPEQ VEC_SIZE(%rdx), %ymm3, %ymm1 (gdb) 307 VPMINU %ymm0, %ymm4, %ymm4 (gdb) 308 VPMINU %ymm3, %ymm1, %ymm1 (gdb) 309 vmovdqa (VEC_SIZE * 2)(%rax), %ymm2 (gdb) 310 VPMINU %ymm1, %ymm4, %ymm0 (gdb) 311 vmovdqa (VEC_SIZE * 3)(%rax), %ymm3 (gdb) 312 VPCMPEQ (VEC_SIZE * 2)(%rdx), %ymm2, %ymm5 (gdb) 313 VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm3, %ymm6 (gdb)
Program received signal SIGSEGV, Segmentation fault. __strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:313 313 VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm3, %ymm6 (gdb)
The bug is around
593 testq %rdi, %rdi
594 je L(back_to_loop)
At this point, there may be less than 4 vector length remaining:
Breakpoint 1, __strncmp_avx2 () x86_64/ multiarch/ strcmp- avx2.S: 594
at ../sysdeps/
594 je L(back_to_loop)
(gdb) p $r11
$2 = 97
(gdb) next
303 vmovdqa (%rax), %ymm0
(gdb)
304 vmovdqa VEC_SIZE(%rax), %ymm3
(gdb)
305 VPCMPEQ (%rdx), %ymm0, %ymm4
(gdb)
306 VPCMPEQ VEC_SIZE(%rdx), %ymm3, %ymm1
(gdb)
307 VPMINU %ymm0, %ymm4, %ymm4
(gdb)
308 VPMINU %ymm3, %ymm1, %ymm1
(gdb)
309 vmovdqa (VEC_SIZE * 2)(%rax), %ymm2
(gdb)
310 VPMINU %ymm1, %ymm4, %ymm0
(gdb)
311 vmovdqa (VEC_SIZE * 3)(%rax), %ymm3
(gdb)
312 VPCMPEQ (VEC_SIZE * 2)(%rdx), %ymm2, %ymm5
(gdb)
313 VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm3, %ymm6
(gdb)
Program received signal SIGSEGV, Segmentation fault. x86_64/ multiarch/ strcmp- avx2.S: 313
__strncmp_avx2 () at ../sysdeps/
313 VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm3, %ymm6
(gdb)