pa-risc2.s revision 55714
155714Skris	.SPACE $PRIVATE$
255714Skris	.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
355714Skris	.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
455714Skris	.SPACE $TEXT$
555714Skris	.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
655714Skris	.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
755714Skris	.IMPORT $global$,DATA
855714Skris	.IMPORT $$dyncall,MILLICODE
955714Skris; gcc_compiled.:
1055714Skris	.SPACE $TEXT$
1155714Skris	.SUBSPA $CODE$
1255714Skris
1355714Skris	.align 4
1455714Skris	.EXPORT bn_mul_add_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
1555714Skrisbn_mul_add_words
1655714Skris	.PROC
1755714Skris	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
1855714Skris	.ENTRY
1955714Skris	stw %r2,-20(0,%r30)
2055714Skris	stwm %r4,64(0,%r30)
2155714Skris	copy %r24,%r31
2255714Skris	stw %r3,-60(0,%r30)
2355714Skris	ldi 0,%r20
2455714Skris	ldo 12(%r26),%r2
2555714Skris	stw %r23,-16(0,%r30)
2655714Skris	copy %r25,%r3
2755714Skris	ldo 12(%r3),%r1
2855714Skris	fldws -16(0,%r30),%fr8L
2955714SkrisL$0010
3055714Skris	copy %r20,%r25
3155714Skris	ldi 0,%r24
3255714Skris	fldws 0(0,%r3),%fr9L
3355714Skris	ldw 0(0,%r26),%r19
3455714Skris	xmpyu %fr8L,%fr9L,%fr9
3555714Skris	fstds %fr9,-16(0,%r30)
3655714Skris	copy %r19,%r23
3755714Skris	ldw -16(0,%r30),%r28
3855714Skris	ldw -12(0,%r30),%r29
3955714Skris	ldi 0,%r22
4055714Skris	add %r23,%r29,%r29
4155714Skris	addc %r22,%r28,%r28
4255714Skris	add %r25,%r29,%r29
4355714Skris	addc %r24,%r28,%r28
4455714Skris	copy %r28,%r21
4555714Skris	ldi 0,%r20
4655714Skris	copy %r21,%r20
4755714Skris	addib,= -1,%r31,L$0011
4855714Skris	stw %r29,0(0,%r26)
4955714Skris	copy %r20,%r25
5055714Skris	ldi 0,%r24
5155714Skris	fldws -8(0,%r1),%fr9L
5255714Skris	ldw -8(0,%r2),%r19
5355714Skris	xmpyu %fr8L,%fr9L,%fr9
5455714Skris	fstds %fr9,-16(0,%r30)
5555714Skris	copy %r19,%r23
5655714Skris	ldw -16(0,%r30),%r28
5755714Skris	ldw -12(0,%r30),%r29
5855714Skris	ldi 0,%r22
5955714Skris	add %r23,%r29,%r29
6055714Skris	addc %r22,%r28,%r28
6155714Skris	add %r25,%r29,%r29
6255714Skris	addc %r24,%r28,%r28
6355714Skris	copy %r28,%r21
6455714Skris	ldi 0,%r20
6555714Skris	copy %r21,%r20
6655714Skris	addib,= -1,%r31,L$0011
6755714Skris	stw %r29,-8(0,%r2)
6855714Skris	copy %r20,%r25
6955714Skris	ldi 0,%r24
7055714Skris	fldws -4(0,%r1),%fr9L
7155714Skris	ldw -4(0,%r2),%r19
7255714Skris	xmpyu %fr8L,%fr9L,%fr9
7355714Skris	fstds %fr9,-16(0,%r30)
7455714Skris	copy %r19,%r23
7555714Skris	ldw -16(0,%r30),%r28
7655714Skris	ldw -12(0,%r30),%r29
7755714Skris	ldi 0,%r22
7855714Skris	add %r23,%r29,%r29
7955714Skris	addc %r22,%r28,%r28
8055714Skris	add %r25,%r29,%r29
8155714Skris	addc %r24,%r28,%r28
8255714Skris	copy %r28,%r21
8355714Skris	ldi 0,%r20
8455714Skris	copy %r21,%r20
8555714Skris	addib,= -1,%r31,L$0011
8655714Skris	stw %r29,-4(0,%r2)
8755714Skris	copy %r20,%r25
8855714Skris	ldi 0,%r24
8955714Skris	fldws 0(0,%r1),%fr9L
9055714Skris	ldw 0(0,%r2),%r19
9155714Skris	xmpyu %fr8L,%fr9L,%fr9
9255714Skris	fstds %fr9,-16(0,%r30)
9355714Skris	copy %r19,%r23
9455714Skris	ldw -16(0,%r30),%r28
9555714Skris	ldw -12(0,%r30),%r29
9655714Skris	ldi 0,%r22
9755714Skris	add %r23,%r29,%r29
9855714Skris	addc %r22,%r28,%r28
9955714Skris	add %r25,%r29,%r29
10055714Skris	addc %r24,%r28,%r28
10155714Skris	copy %r28,%r21
10255714Skris	ldi 0,%r20
10355714Skris	copy %r21,%r20
10455714Skris	addib,= -1,%r31,L$0011
10555714Skris	stw %r29,0(0,%r2)
10655714Skris	ldo 16(%r1),%r1
10755714Skris	ldo 16(%r3),%r3
10855714Skris	ldo 16(%r2),%r2
10955714Skris	bl L$0010,0
11055714Skris	ldo 16(%r26),%r26
11155714SkrisL$0011
11255714Skris	copy %r20,%r28
11355714Skris	ldw -84(0,%r30),%r2
11455714Skris	ldw -60(0,%r30),%r3
11555714Skris	bv 0(%r2)
11655714Skris	ldwm -64(0,%r30),%r4
11755714Skris	.EXIT
11855714Skris	.PROCEND
11955714Skris	.align 4
12055714Skris	.EXPORT bn_mul_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
12155714Skrisbn_mul_words
12255714Skris	.PROC
12355714Skris	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3
12455714Skris	.ENTRY
12555714Skris	stw %r2,-20(0,%r30)
12655714Skris	copy %r25,%r2
12755714Skris	stwm %r4,64(0,%r30)
12855714Skris	copy %r24,%r19
12955714Skris	ldi 0,%r28
13055714Skris	stw %r23,-16(0,%r30)
13155714Skris	ldo 12(%r26),%r31
13255714Skris	ldo 12(%r2),%r29
13355714Skris	fldws -16(0,%r30),%fr8L
13455714SkrisL$0026
13555714Skris	fldws 0(0,%r2),%fr9L
13655714Skris	xmpyu %fr8L,%fr9L,%fr9
13755714Skris	fstds %fr9,-16(0,%r30)
13855714Skris	copy %r28,%r21
13955714Skris	ldi 0,%r20
14055714Skris	ldw -16(0,%r30),%r24
14155714Skris	ldw -12(0,%r30),%r25
14255714Skris	add %r21,%r25,%r25
14355714Skris	addc %r20,%r24,%r24
14455714Skris	copy %r24,%r23
14555714Skris	ldi 0,%r22
14655714Skris	copy %r23,%r28
14755714Skris	addib,= -1,%r19,L$0027
14855714Skris	stw %r25,0(0,%r26)
14955714Skris	fldws -8(0,%r29),%fr9L
15055714Skris	xmpyu %fr8L,%fr9L,%fr9
15155714Skris	fstds %fr9,-16(0,%r30)
15255714Skris	copy %r28,%r21
15355714Skris	ldi 0,%r20
15455714Skris	ldw -16(0,%r30),%r24
15555714Skris	ldw -12(0,%r30),%r25
15655714Skris	add %r21,%r25,%r25
15755714Skris	addc %r20,%r24,%r24
15855714Skris	copy %r24,%r23
15955714Skris	ldi 0,%r22
16055714Skris	copy %r23,%r28
16155714Skris	addib,= -1,%r19,L$0027
16255714Skris	stw %r25,-8(0,%r31)
16355714Skris	fldws -4(0,%r29),%fr9L
16455714Skris	xmpyu %fr8L,%fr9L,%fr9
16555714Skris	fstds %fr9,-16(0,%r30)
16655714Skris	copy %r28,%r21
16755714Skris	ldi 0,%r20
16855714Skris	ldw -16(0,%r30),%r24
16955714Skris	ldw -12(0,%r30),%r25
17055714Skris	add %r21,%r25,%r25
17155714Skris	addc %r20,%r24,%r24
17255714Skris	copy %r24,%r23
17355714Skris	ldi 0,%r22
17455714Skris	copy %r23,%r28
17555714Skris	addib,= -1,%r19,L$0027
17655714Skris	stw %r25,-4(0,%r31)
17755714Skris	fldws 0(0,%r29),%fr9L
17855714Skris	xmpyu %fr8L,%fr9L,%fr9
17955714Skris	fstds %fr9,-16(0,%r30)
18055714Skris	copy %r28,%r21
18155714Skris	ldi 0,%r20
18255714Skris	ldw -16(0,%r30),%r24
18355714Skris	ldw -12(0,%r30),%r25
18455714Skris	add %r21,%r25,%r25
18555714Skris	addc %r20,%r24,%r24
18655714Skris	copy %r24,%r23
18755714Skris	ldi 0,%r22
18855714Skris	copy %r23,%r28
18955714Skris	addib,= -1,%r19,L$0027
19055714Skris	stw %r25,0(0,%r31)
19155714Skris	ldo 16(%r29),%r29
19255714Skris	ldo 16(%r2),%r2
19355714Skris	ldo 16(%r31),%r31
19455714Skris	bl L$0026,0
19555714Skris	ldo 16(%r26),%r26
19655714SkrisL$0027
19755714Skris	ldw -84(0,%r30),%r2
19855714Skris	bv 0(%r2)
19955714Skris	ldwm -64(0,%r30),%r4
20055714Skris	.EXIT
20155714Skris	.PROCEND
20255714Skris	.align 4
20355714Skris	.EXPORT bn_sqr_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR
20455714Skrisbn_sqr_words
20555714Skris	.PROC
20655714Skris	.CALLINFO FRAME=0,NO_CALLS
20755714Skris	.ENTRY
20855714Skris	ldo 28(%r26),%r19
20955714Skris	ldo 12(%r25),%r28
21055714SkrisL$0042
21155714Skris	fldws 0(0,%r25),%fr8L
21255714Skris	fldws 0(0,%r25),%fr8R
21355714Skris	xmpyu %fr8L,%fr8R,%fr8
21455714Skris	fstds %fr8,-16(0,%r30)
21555714Skris	ldw -16(0,%r30),%r22
21655714Skris	ldw -12(0,%r30),%r23
21755714Skris	stw %r23,0(0,%r26)
21855714Skris	copy %r22,%r21
21955714Skris	ldi 0,%r20
22055714Skris	addib,= -1,%r24,L$0049
22155714Skris	stw %r21,-24(0,%r19)
22255714Skris	fldws -8(0,%r28),%fr8L
22355714Skris	fldws -8(0,%r28),%fr8R
22455714Skris	xmpyu %fr8L,%fr8R,%fr8
22555714Skris	fstds %fr8,-16(0,%r30)
22655714Skris	ldw -16(0,%r30),%r22
22755714Skris	ldw -12(0,%r30),%r23
22855714Skris	stw %r23,-20(0,%r19)
22955714Skris	copy %r22,%r21
23055714Skris	ldi 0,%r20
23155714Skris	addib,= -1,%r24,L$0049
23255714Skris	stw %r21,-16(0,%r19)
23355714Skris	fldws -4(0,%r28),%fr8L
23455714Skris	fldws -4(0,%r28),%fr8R
23555714Skris	xmpyu %fr8L,%fr8R,%fr8
23655714Skris	fstds %fr8,-16(0,%r30)
23755714Skris	ldw -16(0,%r30),%r22
23855714Skris	ldw -12(0,%r30),%r23
23955714Skris	stw %r23,-12(0,%r19)
24055714Skris	copy %r22,%r21
24155714Skris	ldi 0,%r20
24255714Skris	addib,= -1,%r24,L$0049
24355714Skris	stw %r21,-8(0,%r19)
24455714Skris	fldws 0(0,%r28),%fr8L
24555714Skris	fldws 0(0,%r28),%fr8R
24655714Skris	xmpyu %fr8L,%fr8R,%fr8
24755714Skris	fstds %fr8,-16(0,%r30)
24855714Skris	ldw -16(0,%r30),%r22
24955714Skris	ldw -12(0,%r30),%r23
25055714Skris	stw %r23,-4(0,%r19)
25155714Skris	copy %r22,%r21
25255714Skris	ldi 0,%r20
25355714Skris	addib,= -1,%r24,L$0049
25455714Skris	stw %r21,0(0,%r19)
25555714Skris	ldo 16(%r28),%r28
25655714Skris	ldo 16(%r25),%r25
25755714Skris	ldo 32(%r19),%r19
25855714Skris	bl L$0042,0
25955714Skris	ldo 32(%r26),%r26
26055714SkrisL$0049
26155714Skris	bv,n 0(%r2)
26255714Skris	.EXIT
26355714Skris	.PROCEND
26455714Skris	.IMPORT BN_num_bits_word,CODE
26555714Skris	.IMPORT fprintf,CODE
26655714Skris	.IMPORT __iob,DATA
26755714Skris	.SPACE $TEXT$
26855714Skris	.SUBSPA $LIT$
26955714Skris
27055714Skris	.align 4
27155714SkrisL$C0000
27255714Skris	.STRING "Division would overflow (%d)\x0a\x00"
27355714Skris	.IMPORT abort,CODE
27455714Skris	.SPACE $TEXT$
27555714Skris	.SUBSPA $CODE$
27655714Skris
27755714Skris	.align 4
27855714Skris	.EXPORT bn_div64,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR
27955714Skrisbn_div64
28055714Skris	.PROC
28155714Skris	.CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8
28255714Skris	.ENTRY
28355714Skris	stw %r2,-20(0,%r30)
28455714Skris	stwm %r8,128(0,%r30)
28555714Skris	stw %r7,-124(0,%r30)
28655714Skris	stw %r4,-112(0,%r30)
28755714Skris	stw %r3,-108(0,%r30)
28855714Skris	copy %r26,%r3
28955714Skris	copy %r25,%r4
29055714Skris	stw %r6,-120(0,%r30)
29155714Skris	ldi 0,%r7
29255714Skris	stw %r5,-116(0,%r30)
29355714Skris	movb,<> %r24,%r5,L$0051
29455714Skris	ldi 2,%r6
29555714Skris	bl L$0068,0
29655714Skris	ldi -1,%r28
29755714SkrisL$0051
29855714Skris	.CALL ARGW0=GR
29955714Skris	bl BN_num_bits_word,%r2
30055714Skris	copy %r5,%r26
30155714Skris	copy %r28,%r24
30255714Skris	ldi 32,%r19
30355714Skris	comb,= %r19,%r24,L$0052
30455714Skris	subi 31,%r24,%r19
30555714Skris	mtsar %r19
30655714Skris	zvdepi 1,32,%r19
30755714Skris	comb,>>= %r19,%r3,L$0052
30855714Skris	addil LR'__iob-$global$+32,%r27
30955714Skris	ldo RR'__iob-$global$+32(%r1),%r26
31055714Skris	ldil LR'L$C0000,%r25
31155714Skris	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
31255714Skris	bl fprintf,%r2
31355714Skris	ldo RR'L$C0000(%r25),%r25
31455714Skris	.CALL
31555714Skris	bl abort,%r2
31655714Skris	nop
31755714SkrisL$0052
31855714Skris	comb,>> %r5,%r3,L$0053
31955714Skris	subi 32,%r24,%r24
32055714Skris	sub %r3,%r5,%r3
32155714SkrisL$0053
32255714Skris	comib,= 0,%r24,L$0054
32355714Skris	subi 31,%r24,%r19
32455714Skris	mtsar %r19
32555714Skris	zvdep %r5,32,%r5
32655714Skris	zvdep %r3,32,%r21
32755714Skris	subi 32,%r24,%r20
32855714Skris	mtsar %r20
32955714Skris	vshd 0,%r4,%r20
33055714Skris	or %r21,%r20,%r3
33155714Skris	mtsar %r19
33255714Skris	zvdep %r4,32,%r4
33355714SkrisL$0054
33455714Skris	extru %r5,15,16,%r23
33555714Skris	extru %r5,31,16,%r28
33655714SkrisL$0055
33755714Skris	extru %r3,15,16,%r19
33855714Skris	comb,<> %r23,%r19,L$0058
33955714Skris	copy %r3,%r26
34055714Skris	bl L$0059,0
34155714Skris	zdepi -1,31,16,%r29
34255714SkrisL$0058
34355714Skris	.IMPORT $$divU,MILLICODE
34455714Skris	bl $$divU,%r31
34555714Skris	copy %r23,%r25
34655714SkrisL$0059
34755714Skris	stw %r29,-16(0,%r30)
34855714Skris	fldws -16(0,%r30),%fr10L
34955714Skris	stw %r28,-16(0,%r30)
35055714Skris	fldws -16(0,%r30),%fr10R
35155714Skris	stw %r23,-16(0,%r30)
35255714Skris	xmpyu %fr10L,%fr10R,%fr8
35355714Skris	fldws -16(0,%r30),%fr10R
35455714Skris	fstws %fr8R,-16(0,%r30)
35555714Skris	xmpyu %fr10L,%fr10R,%fr9
35655714Skris	ldw -16(0,%r30),%r8
35755714Skris	fstws %fr9R,-16(0,%r30)
35855714Skris	copy %r8,%r22
35955714Skris	ldw -16(0,%r30),%r8
36055714Skris	extru %r4,15,16,%r24
36155714Skris	copy %r8,%r21
36255714SkrisL$0060
36355714Skris	sub %r3,%r21,%r20
36455714Skris	copy %r20,%r19
36555714Skris	depi 0,31,16,%r19
36655714Skris	comib,<> 0,%r19,L$0061
36755714Skris	zdep %r20,15,16,%r19
36855714Skris	addl %r19,%r24,%r19
36955714Skris	comb,>>= %r19,%r22,L$0061
37055714Skris	sub %r22,%r28,%r22
37155714Skris	sub %r21,%r23,%r21
37255714Skris	bl L$0060,0
37355714Skris	ldo -1(%r29),%r29
37455714SkrisL$0061
37555714Skris	stw %r29,-16(0,%r30)
37655714Skris	fldws -16(0,%r30),%fr10L
37755714Skris	stw %r28,-16(0,%r30)
37855714Skris	fldws -16(0,%r30),%fr10R
37955714Skris	xmpyu %fr10L,%fr10R,%fr8
38055714Skris	fstws %fr8R,-16(0,%r30)
38155714Skris	ldw -16(0,%r30),%r8
38255714Skris	stw %r23,-16(0,%r30)
38355714Skris	fldws -16(0,%r30),%fr10R
38455714Skris	copy %r8,%r19
38555714Skris	xmpyu %fr10L,%fr10R,%fr8
38655714Skris	fstws %fr8R,-16(0,%r30)
38755714Skris	extru %r19,15,16,%r20
38855714Skris	ldw -16(0,%r30),%r8
38955714Skris	zdep %r19,15,16,%r19
39055714Skris	addl %r8,%r20,%r20
39155714Skris	comclr,<<= %r19,%r4,0
39255714Skris	addi 1,%r20,%r20
39355714Skris	comb,<<= %r20,%r3,L$0066
39455714Skris	sub %r4,%r19,%r4
39555714Skris	addl %r3,%r5,%r3
39655714Skris	ldo -1(%r29),%r29
39755714SkrisL$0066
39855714Skris	addib,= -1,%r6,L$0056
39955714Skris	sub %r3,%r20,%r3
40055714Skris	zdep %r29,15,16,%r7
40155714Skris	shd %r3,%r4,16,%r3
40255714Skris	bl L$0055,0
40355714Skris	zdep %r4,15,16,%r4
40455714SkrisL$0056
40555714Skris	or %r7,%r29,%r28
40655714SkrisL$0068
40755714Skris	ldw -148(0,%r30),%r2
40855714Skris	ldw -124(0,%r30),%r7
40955714Skris	ldw -120(0,%r30),%r6
41055714Skris	ldw -116(0,%r30),%r5
41155714Skris	ldw -112(0,%r30),%r4
41255714Skris	ldw -108(0,%r30),%r3
41355714Skris	bv 0(%r2)
41455714Skris	ldwm -128(0,%r30),%r8
41555714Skris	.EXIT
41655714Skris	.PROCEND
417