Calling movnti without sfence?

H.J. Lu hjl@lucon.org
Wed Nov 7 14:46:00 GMT 2007


While working on improving x86-64 memset, I noticed that movnti
is called without sfence:

11: 
        movnti  %r8,(%rcx)
        movnti  %r8,0x8(%rcx)
        movnti  %r8,0x10(%rcx)
        movnti  %r8,0x18(%rcx)
        movnti  %r8,0x20(%rcx)
        movnti  %r8,0x28(%rcx)
        movnti  %r8,0x30(%rcx)
        movnti  %r8,0x38(%rcx)
        add     $0x40,%rcx
        dec     %rax
        jne     11b
        jmp     4b

Is that intentional? Shouldn't it be

11: 
        movnti  %r8,(%rcx)
        movnti  %r8,0x8(%rcx)
        movnti  %r8,0x10(%rcx)
        movnti  %r8,0x18(%rcx)
        movnti  %r8,0x20(%rcx)
        movnti  %r8,0x28(%rcx)
        movnti  %r8,0x30(%rcx)
        movnti  %r8,0x38(%rcx)
        add     $0x40,%rcx
        dec     %rax
        jne     11b
	sfence
        jmp     4b


H.J.



More information about the Libc-alpha mailing list