0N/A // Prototype: int SafeFetch32 (int * Adr, int ErrValue) 0N/A // Prototype: intptr_t SafeFetchN (intptr_t * Adr, intptr_t ErrValue) 0N/A #
can't use it as a base register 0N/A3: testq $2,%r8 # check for trailing word 0N/A movw 8(%rax),%si # copy trailing word 0N/A4: testq $1,%r8 # check for trailing byte 0N/A movb -1(%rdi,%r8,1),%al # copy trailing byte 0N/A6: movq -24(%rax,%rdx,8),%rsi 0N/A movq %rsi,-24(%rcx,%rdx,8) 0N/A movq -16(%rax,%rdx,8),%rsi 0N/A movq %rsi,-16(%rcx,%rdx,8) 0N/A movq -8(%rax,%rdx,8),%rsi 0N/A movq %rsi,-8(%rcx,%rdx,8) 0N/A movq (%rax,%rdx,8),%rsi 0N/A movq %rsi,(%rcx,%rdx,8) 0N/A testq $1,%r8 # check for trailing byte 0N/A movb -1(%rdi,%r8,1),%cl # copy trailing byte 0N/A movb %cl,-1(%rsi,%r8,1) 0N/A subq $1,%r8 # adjust for possible trailing word 0N/A1: testq $2,%r8 # check for trailing word 0N/A movw -2(%rdi,%r8,1),%cx # copy trailing word 0N/A movw %cx,-2(%rsi,%r8,1) 0N/A2: testq $4,%r8 # check for trailing dword 0N/A movl (%rdi,%rdx,8),%ecx # copy trailing dword 0N/A movl %ecx,(%rsi,%rdx,8) 0N/A3: movq -8(%rdi,%rdx,8),%rcx 0N/A movq %rcx,-8(%rsi,%rdx,8) 0N/A4: movq 24(%rdi,%rdx,8),%rcx 0N/A movq %rcx,24(%rsi,%rdx,8) 0N/A movq 16(%rdi,%rdx,8),%rcx 0N/A movq %rcx,16(%rsi,%rdx,8) 0N/A movq 8(%rdi,%rdx,8),%rcx 0N/A movq %rcx,8(%rsi,%rdx,8) 0N/A movq (%rdi,%rdx,8),%rcx 0N/A movq %rcx,(%rsi,%rdx,8) 0N/A # Support for void Copy::arrayof_conjoint_jshorts(void* from, 0N/A # conjoint_jshorts_atomic 0N/A # let the hardware handle it. The tow or four words within dwords 0N/A # or qwords that span cache line boundaries will still be loaded 0N/A # and stored atomically. 0N/A # rdx - count, treated as ssize_t 0N/A .type _Copy_arrayof_conjoint_jshorts,@function 0N/A .type _Copy_conjoint_jshorts_atomic,@function 0N/A_Copy_arrayof_conjoint_jshorts: 0N/A_Copy_conjoint_jshorts_atomic: 0N/A movq %rdx,%r8 # word count 0N/A shrq $2,%rdx # qword count 0N/A leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2 0N/A leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 0N/A leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 0N/A1: movq 8(%rax,%rdx,8),%rsi 0N/A movq %rsi,8(%rcx,%rdx,8) 0N/A2: testq $2,%r8 # check for trailing dword 0N/A movl 8(%rax),%esi # copy trailing dword 0N/A addq $4,%rcx # original %rsi is trashed, so we