	.file	"matmul.shmem.c"
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LLC0:
	.long	0
	.long	0
	.section	".text"
	.align 4
	.global matmul
	.type	matmul, #function
	.proc	020
matmul:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	mov	%i0, %o5
	sethi	%hi(.LLC0), %g1
	sethi	%hi(7168), %i5
	mov	%i1, %o4
	mov	%i2, %o3
	ldd	[%g1+%lo(.LLC0)], %f14
	or	%i5, 832, %i5
	mov	0, %i0
	mov	0, %o7
.LL13:
	sll	%o7, 2, %g1
	add	%g1, %i0, %g1
	sll	%g1, 6, %g1
	mov	%g1, %o2
	mov	0, %i1
	add	%g1, %o3, %i2
.LL12:
	sll	%i1, 3, %g1
	add	%g1, %o4, %g1
	fmovs	%f14, %f12
	fmovs	%f15, %f13
	add	%o2, %o5, %i4
	mov	999, %i3
.LL11:
	ldd	[%i4], %f8
	ldd	[%g1], %f10
	fmuld	%f8, %f10, %f8
	faddd	%f12, %f8, %f12
	add	%i4, 8, %i4
	addcc	%i3, -1, %i3
	bpos	.LL11
	add	%g1, %i5, %g1
	std	%f12, [%i2]
	add	%i1, 1, %i1
	cmp	%i1, 999
	ble	.LL12
	add	%i2, 8, %i2
	add	%i0, 1, %i0
	cmp	%i0, 999
	ble	.LL13
	add	%o7, 31, %o7
	ret
	restore
	.size	matmul, .-matmul
	.global .div
	.global .umul
	.section	.rodata.cst8
	.align 8
.LLC2:
	.long	0
	.long	0
	.section	".text"
	.align 4
	.global partmatmul
	.type	partmatmul, #function
	.proc	020
partmatmul:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	mov	%i4, %o1
	call	.div, 0
	mov	%i3, %o0
	mov	%o0, %l0
	call	.umul, 0
	mov	%i5, %o1
	mov	%o0, %l2
	mov	%l0, %o1
	call	.umul, 0
	add	%i5, 1, %o0
	add	%o0, -1, %l3
	ld	[%fp+92], %o0
	mov	%l0, %o1
	call	.umul, 0
	add	%o0, 1, %o0
	mov	%l2, %l0
	cmp	%l2, %l3
	bg	.LL35
	add	%o0, -1, %o0
	sll	%l2, 5, %g1
	sub	%g1, %l2, %g1
	sethi	%hi(.LLC2), %o5
	mov	%g1, %i4
	ldd	[%o5+%lo(.LLC2)], %f14
	sll	%g1, 2, %i5
.LL33:
	cmp	%l2, %o0
	bg	.LL37
	mov	%l2, %o7
	sll	%i4, 2, %g1
	add	%g1, %l0, %g1
	sll	%g1, 3, %g1
	add	%g1, %l2, %g1
	sll	%g1, 3, %g1
	add	%g1, %i2, %o1
	add	%i5, %l0, %o5
	sethi	%hi(7168), %g1
	sll	%o5, 6, %o5
	or	%g1, 832, %l1
.LL32:
	cmp	%i3, 0
	fmovs	%f14, %f12
	ble	.LL39
	fmovs	%f15, %f13
	sll	%o7, 3, %g1
	add	%g1, %i1, %g1
	add	%o5, %i0, %o3
	mov	%l1, %o2
	mov	%i3, %o4
.LL31:
	ldd	[%o3], %f8
	ldd	[%g1], %f10
	fmuld	%f8, %f10, %f8
	faddd	%f12, %f8, %f12
	add	%o3, 8, %o3
	addcc	%o4, -1, %o4
	bne	.LL31
	add	%g1, %o2, %g1
.LL39:
	std	%f12, [%o1]
	add	%o7, 1, %o7
	cmp	%o7, %o0
	ble	.LL32
	add	%o1, 8, %o1
.LL37:
	add	%l0, 1, %l0
	add	%i5, 124, %i5
	cmp	%l0, %l3
	ble	.LL33
	add	%i4, 31, %i4
.LL35:
	ret
	restore
	.size	partmatmul, .-partmatmul
	.section	.rodata.cst8
	.align 8
.LLC3:
	.long	1093567616
	.long	0
	.section	".text"
	.align 4
	.global dtime
	.type	dtime, #function
	.proc	07
dtime:
	!#PROLOGUE# 0
	save	%sp, -128, %sp
	!#PROLOGUE# 1
	add	%fp, -24, %o0
	call	gettimeofday, 0
	add	%fp, -32, %o1
	ld	[%fp-20], %f8
	fitod	%f8, %f10
	sethi	%hi(.LLC3), %g1
	ldd	[%g1+%lo(.LLC3)], %f8
	ld	[%fp-24], %f12
	fdivd	%f10, %f8, %f10
	fitod	%f12, %f0
	faddd	%f0, %f10, %f0
	ret
	restore
	.size	dtime, .-dtime
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LLC5:
	.asciz	"Sequential  %6.2f s, %6.2lf MFLOPS, C(6, 9) = %lf \n"
	.align 8
.LLC4:
	.asciz	"malloc: \n"
	.align 8
.LLC8:
	.asciz	"shmget: "
	.align 8
.LLC10:
	.asciz	"fork: "
	.align 8
.LLC9:
	.asciz	"shmat: "
	.align 8
.LLC11:
	.asciz	"Parallel %6.2f s, %6.2f MFLOPS, C(6, 9) = %f \n"
	.align 8
.LLC12:
	.asciz	"Speedup : %6.4f\n"
	.section	.rodata.cst8
	.align 8
.LLC6:
	.long	1093567616
	.long	0
	.align 8
.LLC7:
	.long	1105055077
	.long	0
	.section	".text"
	.align 4
	.global main
	.type	main, #function
	.proc	04
main:
	!#PROLOGUE# 0
	save	%sp, -272, %sp
	!#PROLOGUE# 1
	sethi	%hi(7999488), %l0
	call	malloc, 0
	or	%l0, 512, %o0
	mov	%o0, %i0
	call	malloc, 0
	or	%l0, 512, %o0
	mov	%o0, %l1
	call	malloc, 0
	or	%l0, 512, %o0
	subcc	%g0, %i0, %g0
	subx	%g0, -1, %o5
	subcc	%g0, %l1, %g0
	subx	%g0, -1, %g1
	orcc	%o5, %g1, %g0
	bne	.LL43
	mov	%o0, %i5
	cmp	%o0, 0
	mov	0, %o2
	be	.LL43
	mov	0, %o1
.LL51:
	sll	%o1, 2, %g1
	add	%g1, %o2, %g1
	sll	%g1, 6, %o4
	mov	0, %o3
.LL50:
	add	%o2, %o3, %o5
	add	%o5, 1, %g1
	st	%g1, [%fp-16]
	ld	[%fp-16], %f10
	st	%o5, [%fp-16]
	fitod	%f10, %f8
	ld	[%fp-16], %f12
	std	%f8, [%i0+%o4]
	fitod	%f12, %f10
	std	%f10, [%l1+%o4]
	add	%o3, 1, %o3
	cmp	%o3, 999
	ble	.LL50
	add	%o4, 8, %o4
	add	%o2, 1, %o2
	cmp	%o2, 999
	ble	.LL51
	add	%o1, 31, %o1
	call	dtime, 0
	sethi	%hi(.LLC6), %i4
	mov	%i0, %o0
	mov	%l1, %o1
	mov	%i5, %o2
	call	matmul, 0
	std	%f0, [%fp-152]
	call	dtime, 0
	sethi	%hi(.LLC7), %i3
	ldd	[%fp-152], %f8
	fsubd	%f0, %f8, %f0
	sethi	%hi(47104), %o4
	or	%o4, 968, %o4
	ldd	[%i4+%lo(.LLC6)], %f8
	fmuld	%f0, %f8, %f8
	add	%i5, %o4, %o5
	ldd	[%i3+%lo(.LLC7)], %f10
	ld	[%o5+4], %g1
	fdivd	%f10, %f8, %f10
	std	%f10, [%fp-16]
	ldd	[%fp-16], %o0
	ld	[%i5+%o4], %o5
	mov	%o0, %o3
	std	%f0, [%fp-160]
	mov	%o1, %o4
	sethi	%hi(.LLC5), %o0
	st	%g1, [%sp+92]
	ld	[%fp-160], %o1
	ld	[%fp-156], %o2
	call	printf, 0
	or	%o0, %lo(.LLC5), %o0
	call	dtime, 0
	 nop
	sethi	%hi(23999488), %o1
	std	%f0, [%fp-152]
	or	%o1, 512, %o1
	mov	0, %o0
	call	shmget, 0
	mov	1920, %o2
	cmp	%o0, -1
	be	.LL89
	mov	%o0, %l7
	mov	0, %o1
	call	shmat, 0
	mov	0, %o2
	orcc	%o0, 0, %l5
	be	.LL90
	sethi	%hi(7999488), %l0
	or	%l0, 512, %l0
	sethi	%hi(16000000), %g1
	add	%l5, %g1, %l6
	mov	%i0, %o1
	call	memcpy, 0
	mov	%l0, %o2
	add	%l5, %l0, %l3
	mov	%l3, %o0
	mov	%l1, %o1
	call	memcpy, 0
	mov	%l0, %o2
	mov	0, %l4
	add	%fp, -16, %i2
	mov	0, %l2
.LL94:
	sll	%l4, 3, %l0
.LL65:
	call	fork, 0
	 nop
	add	%l0, %i2, %g1
	cmp	%o0, 0
	be	.LL91
	add	%l0, 4, %l0
	cmp	%o0, -1
	be	.LL92
	add	%l2, 1, %l2
	cmp	%l2, 1
	ble	.LL65
	st	%o0, [%g1-128]
	add	%l4, 1, %l4
	cmp	%l4, 1
	ble	.LL94
	mov	0, %l2
	mov	%i2, %l3
	mov	0, %l4
.LL74:
	add	%l3, -128, %l0
	mov	1, %l2
.LL73:
	ld	[%l0], %o0
	mov	0, %o1
	call	waitpid, 0
	mov	0, %o2
	addcc	%l2, -1, %l2
	bpos	.LL73
	add	%l0, 4, %l0
	add	%l4, 1, %l4
	cmp	%l4, 1
	ble	.LL74
	add	%l3, 8, %l3
	b,a	.LL93
.LL43:
	sethi	%hi(.LLC4), %o0
	call	perror, 0
	or	%o0, %lo(.LLC4), %o0
	call	free, 0
	mov	%i0, %o0
	call	free, 0
	mov	%l1, %o0
	call	free, 0
	mov	%i5, %o0
	mov	2, %o0
.LL87:
	call	exit, 0
	 nop
.LL89:
	sethi	%hi(.LLC8), %o0
	or	%o0, %lo(.LLC8), %o0
.LL88:
	call	perror, 0
	 nop
	b	.LL87
	mov	1, %o0
.LL92:
	sethi	%hi(.LLC10), %o0
	b	.LL88
	or	%o0, %lo(.LLC10), %o0
.LL91:
	mov	%l5, %o0
	st	%l2, [%sp+92]
	mov	%l3, %o1
	mov	%l6, %o2
	mov	%l4, %o5
	mov	1000, %o3
	call	partmatmul, 0
	mov	2, %o4
	b	.LL87
	mov	0, %o0
.LL90:
	sethi	%hi(.LLC9), %o0
	b	.LL88
	or	%o0, %lo(.LLC9), %o0
.LL93:
	call	dtime, 0
	 nop
	sethi	%hi(47104), %g1
	or	%g1, 968, %g1
	ldd	[%fp-152], %f8
	fsubd	%f0, %f8, %f0
	add	%l6, %g1, %o4
	ld	[%o4+4], %o5
	ldd	[%i4+%lo(.LLC6)], %f8
	fmuld	%f0, %f8, %f8
	ldd	[%i3+%lo(.LLC7)], %f10
	st	%o5, [%sp+92]
	ld	[%l6+%g1], %o5
	fdivd	%f10, %f8, %f10
	std	%f10, [%fp-16]
	ldd	[%fp-16], %o0
	mov	%o0, %o3
	std	%f0, [%fp-168]
	mov	%o1, %o4
	sethi	%hi(.LLC11), %o0
	ld	[%fp-168], %o1
	ld	[%fp-164], %o2
	call	printf, 0
	or	%o0, %lo(.LLC11), %o0
	ldd	[%fp-160], %f10
	fdtos	%f10, %f8
	ldd	[%fp-168], %f10
	fstod	%f8, %f8
	fdivd	%f8, %f10, %f8
	std	%f8, [%fp-16]
	ldd	[%fp-16], %o4
	sethi	%hi(.LLC12), %o0
	mov	%o4, %o1
	mov	%o5, %o2
	call	printf, 0
	or	%o0, %lo(.LLC12), %o0
	call	shmdt, 0
	mov	%l5, %o0
	mov	10, %o1
	add	%fp, -128, %o2
	call	shmctl, 0
	mov	%l7, %o0
	call	free, 0
	mov	%i0, %o0
	call	free, 0
	mov	%l1, %o0
	call	free, 0
	mov	%i5, %o0
	ret
	restore %g0, 0, %o0
	.size	main, .-main
	.ident	"GCC: (GNU) 3.4.2"
