File ffcall/vacall/vacall-sparc.S artifact 69cac37009 part of check-in c83183fa27


#include "asmsparc.h"
.text
	.align 4
	.global C(__vacall)
	DECLARE_FUNCTION(__vacall)
	.proc	020
C(__vacall:)
	!$PROLOGUE$ 0
	save	%sp, -144, %sp
	!$PROLOGUE$ 1
	add	%fp, 92, %o0
	st	%i2, [%o0-16]
	st	%i3, [%o0-12]
	st	%i4, [%o0-8]
	st	%i5, [%o0-4]
	st	%i0, [%o0-24]
	st	%i1, [%o0-20]
	add	%o0, -24, %o1
	st	%o1, [%fp-44]
	st	%g0, [%fp-48]
	st	%g0, [%fp-40]
	st	%g0, [%fp-36]
	ld	[%o0-28], %o2
	sethi	%hi(C(vacall_function)), %o1
	ld	[%o1+%lo(C(vacall_function))], %o3
	add	%fp, -48, %o0
	call	%o3, 0
	st	%o2, [%fp-16]
	ld	[%fp-36], %o0
	cmp	%o0, 0
	be	L4
	cmp	%o0, 1
	be	L46
	mov	%o0, %o1
	cmp	%o1, 2
	bne	L7
	cmp	%o1, 3
L46:
	b	L4
	ldsb	[%fp-24], %i0
L7:
	bne	L9
	cmp	%o1, 4
	b	L4
	ldub	[%fp-24], %i0
L9:
	bne	L11
	cmp	%o1, 5
	b	L4
	ldsh	[%fp-24], %i0
L11:
	bne	L13
	cmp	%o1, 6
	b	L4
	lduh	[%fp-24], %i0
L13:
	be	L47
	cmp	%o1, 7
	be	L47
	cmp	%o1, 8
	be	L47
	cmp	%o1, 9
	be	L47
	add	%o1, -10, %o0
	cmp	%o0, 1
	bgu	L23
	cmp	%o1, 12
	ld	[%fp-24], %i0
	b	L4
	ld	[%fp-20], %i1
L23:
	bne	L25
	cmp	%o1, 13
	ld	[%fp-48], %o0
	andcc	%o0, 32, %g0
	be	L26
	ld	[%fp-24], %f2
	b	L4
	fstod	%f2, %f0
L26:
	b	L4
	ld	[%fp-24], %f0
L25:
	bne	L29
	cmp	%o1, 14
	b	L4
	ldd	[%fp-24], %f0
L29:
	bne	L31
	cmp	%o1, 15
L47:
	b	L4
	ld	[%fp-24], %i0
L31:
	bne	L4
	ld	[%fp-48], %o0
	andcc	%o0, 24, %g0
	be	L34
	mov	%o0, %o1
	ld	[%fp-32], %o0
	ld	[%i7+8], %o1
	and	%o0, 4095, %o0
	cmp	%o0, %o1
	bne	L4
	ld	[%fp-40], %i0
	b	L4
	add	%i7, 4, %i7
L34:
	andcc	%o1, 1, %g0
	be	L37
	andcc	%o1, 2, %g0
	b	L4
	ld	[%fp-40], %i0
L37:
	be	L39
	ld	[%fp-32], %o0
	cmp	%o0, 1
	bne	L40
	mov	%o0, %o1
	ld	[%fp-40], %o0
	b	L4
	ldub	[%o0], %i0
L40:
	cmp	%o1, 2
	bne	L43
	cmp	%o1, 4
	ld	[%fp-40], %o0
	b	L4
	lduh	[%o0], %i0
L43:
	bne,a	L4
	add	%i7, 4, %i7
	ld	[%fp-40], %o0
	b	L4
	ld	[%o0], %i0
L39:
	add	%i7, 4, %i7
L4:
	ret
	restore