[PATCH] Improve and consolidate sparc PIC assembler.

Torbjorn Granlund tg at gmplib.org
Sun Apr 14 19:21:36 CEST 2013


I tried some timing of call to a pc loading thunk versus an rdpc
instruction.  Approximate cycle counts:

       rdpc    thunk
US2      5       2
US3      6       6
T1       6      10

I assume US1=US2, US3=US4, and T1=T2.  US1, US2 are the least relevant
machines, and the only ones where I could see a slowdown for rdpc.
T1 is also getting irrelevant, more so than US3,US4 I think.

T3 and T4 are of course quite relevant, so we should take these into
account.  If they run rdpc no slower than the thunk call, then we should
use rdpc unconditionally.

I used this test program:

thunk:	retl
	mov	%o7, %g5
	.globl	main
main:	save	%sp, -176, %sp
	set	1593000000, %g1
1:
!	rd	%pc, %g5
!	rd	%pc, %g5
	call	thunk
	 nop
	call	thunk
	 nop
	brnz	%g1, 1b
	dec	%g1
	ret
	restore

At http://docs.oracle.com/cd/E26502_01/html/E28387/gentextid-2583.html
Oracle assumes one uses rdpc.  They also seem to say that the gdop stuff
is for the 64-bit ABI, and now we use if in sparc32.

-- 
Torbjörn


More information about the gmp-devel mailing list