Home | History | Annotate | Line # | Download | only in sparc64
      1  1.1  christos #include <sparc_arch.h>
      2  1.1  christos 
      3  1.1  christos #ifdef __arch64__
      4  1.1  christos .register	%g2,#scratch
      5  1.1  christos .register	%g3,#scratch
      6  1.1  christos #endif
      7  1.1  christos 
      8  1.1  christos #ifdef __PIC__
      9  1.1  christos SPARC_PIC_THUNK(%g1)
     10  1.1  christos #endif
     11  1.1  christos 
     12  1.1  christos .globl	bn_GF2m_mul_2x2
     13  1.1  christos .align	16
     14  1.1  christos bn_GF2m_mul_2x2:
     15  1.1  christos         SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5)
     16  1.1  christos         ld	[%g1+0],%g1             	! OPENSSL_sparcv9cap_P[0]
     17  1.1  christos 
     18  1.1  christos         andcc	%g1, SPARCV9_VIS3, %g0
     19  1.1  christos         bz,pn	%icc,.Lsoftware
     20  1.1  christos         nop
     21  1.1  christos 
     22  1.1  christos 	sllx	%o1, 32, %o1
     23  1.1  christos 	sllx	%o3, 32, %o3
     24  1.1  christos 	or	%o2, %o1, %o1
     25  1.1  christos 	or	%o4, %o3, %o3
     26  1.1  christos 	.word	0x95b262ab			! xmulx   %o1, %o3, %o2
     27  1.1  christos 	.word	0x99b262cb			! xmulxhi %o1, %o3, %o4
     28  1.1  christos 	srlx	%o2, 32, %o1			! 13 cycles later
     29  1.1  christos 	st	%o2, [%o0+0]
     30  1.1  christos 	st	%o1, [%o0+4]
     31  1.1  christos 	srlx	%o4, 32, %o3
     32  1.1  christos 	st	%o4, [%o0+8]
     33  1.1  christos 	retl
     34  1.1  christos 	st	%o3, [%o0+12]
     35  1.1  christos 
     36  1.1  christos .align	16
     37  1.1  christos .Lsoftware:
     38  1.1  christos 	save	%sp,-STACK_FRAME-128,%sp
     39  1.1  christos 
     40  1.1  christos 	sllx	%i1,32,%g1
     41  1.1  christos 	mov	-1,%o4
     42  1.1  christos 	sllx	%i3,32,%o7
     43  1.1  christos 	or	%i2,%g1,%g1
     44  1.1  christos 	srlx	%o4,1,%o5			! 0x7fff...
     45  1.1  christos 	or	%i4,%o7,%o7
     46  1.1  christos 	srlx	%o4,2,%o4			! 0x3fff...
     47  1.1  christos 	add	%sp,STACK_BIAS+STACK_FRAME,%l0
     48  1.1  christos 
     49  1.1  christos 	sllx	%g1,2,%o2
     50  1.1  christos 	mov	%g1,%o0
     51  1.1  christos 	sllx	%g1,1,%o1
     52  1.1  christos 
     53  1.1  christos 	srax	%o2,63,%g5			! broadcast 61st bit
     54  1.1  christos 	and	%o5,%o2,%o2			! (a<<2)&0x7fff...
     55  1.1  christos 	srlx	%o5,2,%o5
     56  1.1  christos 	srax	%o1,63,%g4			! broadcast 62nd bit
     57  1.1  christos 	and	%o4,%o1,%o1			! (a<<1)&0x3fff...
     58  1.1  christos 	srax	%o0,63,%g1			! broadcast 63rd bit
     59  1.1  christos 	and	%o5,%o0,%o0			! (a<<0)&0x1fff...
     60  1.1  christos 
     61  1.1  christos 	sllx	%o0,3,%o3
     62  1.1  christos 	and	%o7,%g1,%g1
     63  1.1  christos 	and	%o7,%g4,%g4
     64  1.1  christos 	and	%o7,%g5,%g5
     65  1.1  christos 
     66  1.1  christos 	stx	%g0,[%l0+0*8]			! tab[0]=0
     67  1.1  christos 	xor	%o0,%o1,%o4
     68  1.1  christos 	stx	%o0,[%l0+1*8]			! tab[1]=a1
     69  1.1  christos 	stx	%o1,[%l0+2*8]			! tab[2]=a2
     70  1.1  christos 	 xor	%o2,%o3,%o5
     71  1.1  christos 	stx	%o4,[%l0+3*8]			! tab[3]=a1^a2
     72  1.1  christos 	 xor	%o2,%o0,%o0
     73  1.1  christos 
     74  1.1  christos 	stx	%o2,[%l0+4*8]			! tab[4]=a4
     75  1.1  christos 	xor	%o2,%o1,%o1
     76  1.1  christos 	stx	%o0,[%l0+5*8]			! tab[5]=a1^a4
     77  1.1  christos 	xor	%o2,%o4,%o4
     78  1.1  christos 	stx	%o1,[%l0+6*8]			! tab[6]=a2^a4
     79  1.1  christos 	 xor	%o5,%o0,%o0
     80  1.1  christos 	stx	%o4,[%l0+7*8]			! tab[7]=a1^a2^a4
     81  1.1  christos 	 xor	%o5,%o1,%o1
     82  1.1  christos 
     83  1.1  christos 	stx	%o3,[%l0+8*8]			! tab[8]=a8
     84  1.1  christos 	xor	%o5,%o4,%o4
     85  1.1  christos 	stx	%o0,[%l0+9*8]			! tab[9]=a1^a8
     86  1.1  christos 	 xor	%o2,%o0,%o0
     87  1.1  christos 	stx	%o1,[%l0+10*8]			! tab[10]=a2^a8
     88  1.1  christos 	 xor	%o2,%o1,%o1
     89  1.1  christos 	stx	%o4,[%l0+11*8]		! tab[11]=a1^a2^a8
     90  1.1  christos 
     91  1.1  christos 	xor	%o2,%o4,%o4
     92  1.1  christos 	stx	%o5,[%l0+12*8]		! tab[12]=a4^a8
     93  1.1  christos 	 srlx	%g1,1,%o3
     94  1.1  christos 	stx	%o0,[%l0+13*8]			! tab[13]=a1^a4^a8
     95  1.1  christos 	 sllx	%g1,63,%g1
     96  1.1  christos 	stx	%o1,[%l0+14*8]			! tab[14]=a2^a4^a8
     97  1.1  christos 	 srlx	%g4,2,%g2
     98  1.1  christos 	stx	%o4,[%l0+15*8]		! tab[15]=a1^a2^a4^a8
     99  1.1  christos 
    100  1.1  christos 	sllx	%g4,62,%o0
    101  1.1  christos 	 sllx	%o7,3,%g4
    102  1.1  christos 	srlx	%g5,3,%g3
    103  1.1  christos 	 and	%g4,120,%g4
    104  1.1  christos 	sllx	%g5,61,%o1
    105  1.1  christos 	 ldx	[%l0+%g4],%g4
    106  1.1  christos 	 srlx	%o7,4-3,%g5
    107  1.1  christos 	xor	%g2,%o3,%o3
    108  1.1  christos 	 and	%g5,120,%g5
    109  1.1  christos 	xor	%o0,%g1,%g1
    110  1.1  christos 	 ldx	[%l0+%g5],%g5
    111  1.1  christos 	xor	%g3,%o3,%o3
    112  1.1  christos 
    113  1.1  christos 	xor	%g4,%g1,%g1
    114  1.1  christos 	srlx	%o7,8-3,%g4
    115  1.1  christos 	 xor	%o1,%g1,%g1
    116  1.1  christos 	and	%g4,120,%g4
    117  1.1  christos 	sllx	%g5,4,%g2
    118  1.1  christos 	ldx	[%l0+%g4],%g4
    119  1.1  christos 	srlx	%g5,60,%g3
    120  1.1  christos 	xor	%g2,%g1,%g1
    121  1.1  christos 	srlx	%o7,12-3,%g5
    122  1.1  christos 	xor	%g3,%o3,%o3
    123  1.1  christos 	and	%g5,120,%g5
    124  1.1  christos 	sllx	%g4,8,%g3
    125  1.1  christos 	ldx	[%l0+%g5],%g5
    126  1.1  christos 	srlx	%g4,56,%g2
    127  1.1  christos 	xor	%g3,%g1,%g1
    128  1.1  christos 	srlx	%o7,16-3,%g4
    129  1.1  christos 	xor	%g2,%o3,%o3
    130  1.1  christos 	and	%g4,120,%g4
    131  1.1  christos 	sllx	%g5,12,%g2
    132  1.1  christos 	ldx	[%l0+%g4],%g4
    133  1.1  christos 	srlx	%g5,52,%g3
    134  1.1  christos 	xor	%g2,%g1,%g1
    135  1.1  christos 	srlx	%o7,20-3,%g5
    136  1.1  christos 	xor	%g3,%o3,%o3
    137  1.1  christos 	and	%g5,120,%g5
    138  1.1  christos 	sllx	%g4,16,%g3
    139  1.1  christos 	ldx	[%l0+%g5],%g5
    140  1.1  christos 	srlx	%g4,48,%g2
    141  1.1  christos 	xor	%g3,%g1,%g1
    142  1.1  christos 	srlx	%o7,24-3,%g4
    143  1.1  christos 	xor	%g2,%o3,%o3
    144  1.1  christos 	and	%g4,120,%g4
    145  1.1  christos 	sllx	%g5,20,%g2
    146  1.1  christos 	ldx	[%l0+%g4],%g4
    147  1.1  christos 	srlx	%g5,44,%g3
    148  1.1  christos 	xor	%g2,%g1,%g1
    149  1.1  christos 	srlx	%o7,28-3,%g5
    150  1.1  christos 	xor	%g3,%o3,%o3
    151  1.1  christos 	and	%g5,120,%g5
    152  1.1  christos 	sllx	%g4,24,%g3
    153  1.1  christos 	ldx	[%l0+%g5],%g5
    154  1.1  christos 	srlx	%g4,40,%g2
    155  1.1  christos 	xor	%g3,%g1,%g1
    156  1.1  christos 	srlx	%o7,32-3,%g4
    157  1.1  christos 	xor	%g2,%o3,%o3
    158  1.1  christos 	and	%g4,120,%g4
    159  1.1  christos 	sllx	%g5,28,%g2
    160  1.1  christos 	ldx	[%l0+%g4],%g4
    161  1.1  christos 	srlx	%g5,36,%g3
    162  1.1  christos 	xor	%g2,%g1,%g1
    163  1.1  christos 	srlx	%o7,36-3,%g5
    164  1.1  christos 	xor	%g3,%o3,%o3
    165  1.1  christos 	and	%g5,120,%g5
    166  1.1  christos 	sllx	%g4,32,%g3
    167  1.1  christos 	ldx	[%l0+%g5],%g5
    168  1.1  christos 	srlx	%g4,32,%g2
    169  1.1  christos 	xor	%g3,%g1,%g1
    170  1.1  christos 	srlx	%o7,40-3,%g4
    171  1.1  christos 	xor	%g2,%o3,%o3
    172  1.1  christos 	and	%g4,120,%g4
    173  1.1  christos 	sllx	%g5,36,%g2
    174  1.1  christos 	ldx	[%l0+%g4],%g4
    175  1.1  christos 	srlx	%g5,28,%g3
    176  1.1  christos 	xor	%g2,%g1,%g1
    177  1.1  christos 	srlx	%o7,44-3,%g5
    178  1.1  christos 	xor	%g3,%o3,%o3
    179  1.1  christos 	and	%g5,120,%g5
    180  1.1  christos 	sllx	%g4,40,%g3
    181  1.1  christos 	ldx	[%l0+%g5],%g5
    182  1.1  christos 	srlx	%g4,24,%g2
    183  1.1  christos 	xor	%g3,%g1,%g1
    184  1.1  christos 	srlx	%o7,48-3,%g4
    185  1.1  christos 	xor	%g2,%o3,%o3
    186  1.1  christos 	and	%g4,120,%g4
    187  1.1  christos 	sllx	%g5,44,%g2
    188  1.1  christos 	ldx	[%l0+%g4],%g4
    189  1.1  christos 	srlx	%g5,20,%g3
    190  1.1  christos 	xor	%g2,%g1,%g1
    191  1.1  christos 	srlx	%o7,52-3,%g5
    192  1.1  christos 	xor	%g3,%o3,%o3
    193  1.1  christos 	and	%g5,120,%g5
    194  1.1  christos 	sllx	%g4,48,%g3
    195  1.1  christos 	ldx	[%l0+%g5],%g5
    196  1.1  christos 	srlx	%g4,16,%g2
    197  1.1  christos 	xor	%g3,%g1,%g1
    198  1.1  christos 	srlx	%o7,56-3,%g4
    199  1.1  christos 	xor	%g2,%o3,%o3
    200  1.1  christos 	and	%g4,120,%g4
    201  1.1  christos 	sllx	%g5,52,%g2
    202  1.1  christos 	ldx	[%l0+%g4],%g4
    203  1.1  christos 	srlx	%g5,12,%g3
    204  1.1  christos 	xor	%g2,%g1,%g1
    205  1.1  christos 	srlx	%o7,60-3,%g5
    206  1.1  christos 	xor	%g3,%o3,%o3
    207  1.1  christos 	and	%g5,120,%g5
    208  1.1  christos 	sllx	%g4,56,%g3
    209  1.1  christos 	ldx	[%l0+%g5],%g5
    210  1.1  christos 	srlx	%g4,8,%g2
    211  1.1  christos 	xor	%g3,%g1,%g1
    212  1.1  christos 
    213  1.1  christos 	sllx	%g5,60,%g3
    214  1.1  christos 	 xor	%g2,%o3,%o3
    215  1.1  christos 	srlx	%g5,4,%g2
    216  1.1  christos 	xor	%g3,%g1,%g1
    217  1.1  christos 	xor	%g2,%o3,%o3
    218  1.1  christos 
    219  1.1  christos 	srlx	%g1,32,%i1
    220  1.1  christos 	st	%g1,[%i0+0]
    221  1.1  christos 	st	%i1,[%i0+4]
    222  1.1  christos 	srlx	%o3,32,%i2
    223  1.1  christos 	st	%o3,[%i0+8]
    224  1.1  christos 	st	%i2,[%i0+12]
    225  1.1  christos 
    226  1.1  christos 	ret
    227  1.1  christos 	restore
    228  1.1  christos .type	bn_GF2m_mul_2x2,#function
    229  1.1  christos .size	bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2
    230  1.1  christos .asciz	"GF(2^m) Multiplication for SPARCv9, CRYPTOGAMS by <appro (at) openssl.org>"
    231  1.1  christos .align	4
    232