/* MIPS2 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
store difference in a third limb vector.

Copyright (C) 1995-2014 Free Software Foundation, Inc.

This file is part of the GNU MP Library.

The GNU MP Library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or (at your
option) any later version.

The GNU MP Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
License for more details.

You should have received a copy of the GNU Lesser General Public License
along with the GNU MP Library.  If not, see
<http://www.gnu.org/licenses/>.  */

#include <sysdep.h>

/* INPUT PARAMETERS
   res_ptr	$4
   s1_ptr	$5
   s2_ptr	$6
   size		$7
*/
#ifdef __PIC__
	.option pic2
#endif
ENTRY (__mpn_sub_n)
	.set	noreorder
#ifdef __PIC__
	.cpload t9
#endif
	.set	nomacro

	lw	$10,0($5)
	lw	$11,0($6)

	addiu	$7,$7,-1
	and	$9,$7,4-1	/* number of limbs in first loop */
	beq	$9,$0,L(L0)	/* if multiple of 4 limbs, skip first loop */
	move	$2,$0

	subu	$7,$7,$9

L(Loop0):	addiu	$9,$9,-1
	lw	$12,4($5)
	addu	$11,$11,$2
	lw	$13,4($6)
	sltu	$8,$11,$2
	subu	$11,$10,$11
	sltu	$2,$10,$11
	sw	$11,0($4)
	or	$2,$2,$8

	addiu	$5,$5,4
	addiu	$6,$6,4
	move	$10,$12
	move	$11,$13
	bne	$9,$0,L(Loop0)
	addiu	$4,$4,4

L(L0):	beq	$7,$0,L(Lend)
	nop

L(Loop):	addiu	$7,$7,-4

	lw	$12,4($5)
	addu	$11,$11,$2
	lw	$13,4($6)
	sltu	$8,$11,$2
	subu	$11,$10,$11
	sltu	$2,$10,$11
	sw	$11,0($4)
	or	$2,$2,$8

	lw	$10,8($5)
	addu	$13,$13,$2
	lw	$11,8($6)
	sltu	$8,$13,$2
	subu	$13,$12,$13
	sltu	$2,$12,$13
	sw	$13,4($4)
	or	$2,$2,$8

	lw	$12,12($5)
	addu	$11,$11,$2
	lw	$13,12($6)
	sltu	$8,$11,$2
	subu	$11,$10,$11
	sltu	$2,$10,$11
	sw	$11,8($4)
	or	$2,$2,$8

	lw	$10,16($5)
	addu	$13,$13,$2
	lw	$11,16($6)
	sltu	$8,$13,$2
	subu	$13,$12,$13
	sltu	$2,$12,$13
	sw	$13,12($4)
	or	$2,$2,$8

	addiu	$5,$5,16
	addiu	$6,$6,16

	bne	$7,$0,L(Loop)
	addiu	$4,$4,16

L(Lend):	addu	$11,$11,$2
	sltu	$8,$11,$2
	subu	$11,$10,$11
	sltu	$2,$10,$11
	sw	$11,0($4)
	j	$31
	or	$2,$2,$8
	END (__mpn_sub_n)
