LINUX.ORG.RU

История изменений

Исправление jpegqs, (текущая версия) :

У хаскеля получается такой код:

ecx = i, eax = end, ebx = r

1:	cmp	rcx, rax
	je	end
	inc	rcx
        jmp	3f

2:	add	rbx, rcx
        inc	rcx
3:	test	cl, 1
        jne	1b
        cmp	rcx, rax
        jne	2b
end:

GCC 13 и выше на -O3 умудряется разанроллить на векторах. При -mno-sse этого делать не будет.

https://godbolt.org/z/sovhcdnPn

Исходная версия jpegqs, :

У хаскеля получается такой код:

ecx = i, eax = end, ebx = r

1:	cmp	rcx, rax
	je	end
	inc	rcx
        jmp	3f

2:	add	rbx, rcx
        inc	rcx
3:	test	cl, 1
        jne	1b
        cmp	rcx, rax
        jne	2b
end:

GCC 13 и выше на -O3 умудряется разанроллинть на векторах. При -mno-sse этого делать не будет.

https://godbolt.org/z/sovhcdnPn