Merge pull request #4190 from martin-frbg/issue4186-2
Allow negative INCX in the ?NRM2 kernels
This commit is contained in:
		
						commit
						ebc157fcc9
					
				|  | @ -57,7 +57,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	FLOAT absxi = 0.0; | 	FLOAT absxi = 0.0; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 	if ( n == 1 ) return( ABS(x[0]) ); | 	if ( n == 1 ) return( ABS(x[0]) ); | ||||||
| 
 | 
 | ||||||
| 	n *= inc_x; | 	n *= inc_x; | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	BLASLONG inc_x2; | 	BLASLONG inc_x2; | ||||||
| 	FLOAT temp; | 	FLOAT temp; | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 
 | 
 | ||||||
| 	inc_x2 = 2 * inc_x; | 	inc_x2 = 2 * inc_x; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -61,7 +61,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|    fmov.d s2, s1 |    fmov.d s2, s1 | ||||||
|    bge $r0,    N, .L999 |    bge $r0,    N, .L999 | ||||||
|    slli.d INCX, INCX, ZBASE_SHIFT |    slli.d INCX, INCX, ZBASE_SHIFT | ||||||
|    bge $r0,    INCX, .L999 |    beq $r0,    INCX, .L999 | ||||||
|    srai.d  I, N, 2 |    srai.d  I, N, 2 | ||||||
|    bge $r0,    I, .L25 |    bge $r0,    I, .L25 | ||||||
|    LD a1,  X,   0 * SIZE |    LD a1,  X,   0 * SIZE | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|    MTC  s1, $r0 |    MTC  s1, $r0 | ||||||
|    bge $r0,    N, .L999 |    bge $r0,    N, .L999 | ||||||
|    slli.d INCX, INCX, BASE_SHIFT |    slli.d INCX, INCX, BASE_SHIFT | ||||||
|    bge $r0,    INCX, .L999 |    beq $r0,    INCX, .L999 | ||||||
|    move    XX, X |    move    XX, X | ||||||
|    NOP |    NOP | ||||||
|    LD a1,  X,   0 * SIZE |    LD a1,  X,   0 * SIZE | ||||||
|  |  | ||||||
|  | @ -61,7 +61,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|    fmov.d s2, s1 |    fmov.d s2, s1 | ||||||
|    bge $r0,    N, .L999 |    bge $r0,    N, .L999 | ||||||
|    slli.d INCX, INCX, BASE_SHIFT |    slli.d INCX, INCX, BASE_SHIFT | ||||||
|    bge $r0,    INCX, .L999 |    beq $r0,    INCX, .L999 | ||||||
|    srai.d I, N, 3 |    srai.d I, N, 3 | ||||||
|    bne INCX, TEMP, .L20 |    bne INCX, TEMP, .L20 | ||||||
|    bge $r0,    I, .L15 |    bge $r0,    I, .L15 | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|    MTC  s1, $r0 |    MTC  s1, $r0 | ||||||
|    bge $r0,    N, .L999 |    bge $r0,    N, .L999 | ||||||
|    slli.d INCX, INCX, ZBASE_SHIFT |    slli.d INCX, INCX, ZBASE_SHIFT | ||||||
|    bge $r0,    INCX, .L999 |    beq $r0,    INCX, .L999 | ||||||
|    move    XX, X |    move    XX, X | ||||||
|    MOV s2, s1 |    MOV s2, s1 | ||||||
|    srai.d  I, N, 2 |    srai.d  I, N, 2 | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	FLOAT absxi = 0.0; | 	FLOAT absxi = 0.0; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 	if ( n == 1 ) return( ABS(x[0]) ); | 	if ( n == 1 ) return( ABS(x[0]) ); | ||||||
| 
 | 
 | ||||||
| 	n *= inc_x; | 	n *= inc_x; | ||||||
|  |  | ||||||
|  | @ -48,7 +48,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	BLASLONG inc_x2; | 	BLASLONG inc_x2; | ||||||
| 	FLOAT temp; | 	FLOAT temp; | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 
 | 
 | ||||||
| 	inc_x2 = 2 * inc_x; | 	inc_x2 = 2 * inc_x; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -77,7 +77,7 @@ | ||||||
| 	blez	N, .L999 | 	blez	N, .L999 | ||||||
| 	mov.d	s2, s1 | 	mov.d	s2, s1 | ||||||
| 
 | 
 | ||||||
| 	blez	INCX, .L999 | 	beqz	INCX, .L999 | ||||||
| 	dsll	INCX, INCX, ZBASE_SHIFT | 	dsll	INCX, INCX, ZBASE_SHIFT | ||||||
| 
 | 
 | ||||||
| 	dsra	I, N, 2 | 	dsra	I, N, 2 | ||||||
|  |  | ||||||
|  | @ -81,7 +81,7 @@ | ||||||
| 	blez	N, .L999 | 	blez	N, .L999 | ||||||
| 	MTC	$0,  s1 | 	MTC	$0,  s1 | ||||||
| 
 | 
 | ||||||
| 	blez	INCX, .L999 | 	beqz	INCX, .L999 | ||||||
| 	dsll	INCX, INCX, BASE_SHIFT | 	dsll	INCX, INCX, BASE_SHIFT | ||||||
| 
 | 
 | ||||||
| 	move	XX, X | 	move	XX, X | ||||||
|  |  | ||||||
|  | @ -77,7 +77,7 @@ | ||||||
| 	blez	N, .L999 | 	blez	N, .L999 | ||||||
| 	mov.d	s2, s1 | 	mov.d	s2, s1 | ||||||
| 
 | 
 | ||||||
| 	blez	INCX, .L999 | 	beqz	INCX, .L999 | ||||||
| 	dsll	INCX, INCX, BASE_SHIFT | 	dsll	INCX, INCX, BASE_SHIFT | ||||||
| 
 | 
 | ||||||
| 	bne	INCX, TEMP, .L20 | 	bne	INCX, TEMP, .L20 | ||||||
|  |  | ||||||
|  | @ -80,7 +80,7 @@ | ||||||
| 	blez	N, .L999 | 	blez	N, .L999 | ||||||
| 	MTC	$0,  s1 | 	MTC	$0,  s1 | ||||||
| 
 | 
 | ||||||
| 	blez	INCX, .L999 | 	beqz	INCX, .L999 | ||||||
| 	dsll	INCX, INCX, ZBASE_SHIFT | 	dsll	INCX, INCX, ZBASE_SHIFT | ||||||
| 
 | 
 | ||||||
| 	move	XX, X | 	move	XX, X | ||||||
|  |  | ||||||
|  | @ -99,7 +99,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(9999) | 	ble-	LL(9999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(9999) | 	beq-	LL(9999) | ||||||
| 
 | 
 | ||||||
| 	fmr	f0,  f1 | 	fmr	f0,  f1 | ||||||
| 	fmr	f2,  f1 | 	fmr	f2,  f1 | ||||||
|  |  | ||||||
|  | @ -119,7 +119,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble	LL(99) | 	ble	LL(99) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble	LL(99) | 	beq	LL(99) | ||||||
| 
 | 
 | ||||||
| 	andi.	r0, X, 2 * SIZE - 1 | 	andi.	r0, X, 2 * SIZE - 1 | ||||||
| 	bne	LL(100) | 	bne	LL(100) | ||||||
|  |  | ||||||
|  | @ -104,7 +104,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(999) | 	ble-	LL(999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(999) | 	beq-	LL(999) | ||||||
| 
 | 
 | ||||||
| 	fmr	f0,  f1 | 	fmr	f0,  f1 | ||||||
| 	sub	X, X, INCX | 	sub	X, X, INCX | ||||||
|  |  | ||||||
|  | @ -134,7 +134,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble	LL(99) | 	ble	LL(99) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble	LL(99) | 	beq	LL(99) | ||||||
| 
 | 
 | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -111,7 +111,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(999) | 	ble-	LL(999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(999) | 	beq-	LL(999) | ||||||
| 
 | 
 | ||||||
| 	mr	NN, N | 	mr	NN, N | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
|  |  | ||||||
|  | @ -113,7 +113,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(9999) | 	ble-	LL(9999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(9999) | 	beq-	LL(9999) | ||||||
| 
 | 
 | ||||||
| 	mr	NN, N | 	mr	NN, N | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
|  |  | ||||||
|  | @ -97,7 +97,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(9999) | 	ble-	LL(9999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(9999) | 	beq-	LL(9999) | ||||||
| 
 | 
 | ||||||
| 	fmr	f0,  f1 | 	fmr	f0,  f1 | ||||||
| 	fmr	f2,  f1 | 	fmr	f2,  f1 | ||||||
|  |  | ||||||
|  | @ -119,7 +119,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble	LL(99) | 	ble	LL(99) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble	LL(99) | 	beq	LL(99) | ||||||
| 
 | 
 | ||||||
| 	cmpwi	cr0, INCX, SIZE | 	cmpwi	cr0, INCX, SIZE | ||||||
| 	bne	LL(100) | 	bne	LL(100) | ||||||
|  |  | ||||||
|  | @ -105,7 +105,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(999) | 	ble-	LL(999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(999) | 	beq-	LL(999) | ||||||
| 
 | 
 | ||||||
| 	fmr	f0,  f1 | 	fmr	f0,  f1 | ||||||
| 	fmr	f2,  f1 | 	fmr	f2,  f1 | ||||||
|  |  | ||||||
|  | @ -105,7 +105,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(9999) | 	ble-	LL(9999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(9999) | 	beq-	LL(9999) | ||||||
| 
 | 
 | ||||||
| 	mr	NN, N | 	mr	NN, N | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
|  |  | ||||||
|  | @ -134,7 +134,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble	LL(99) | 	ble	LL(99) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble	LL(99) | 	beq	LL(99) | ||||||
| 
 | 
 | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -112,7 +112,7 @@ | ||||||
| 	cmpwi	cr0, N, 0 | 	cmpwi	cr0, N, 0 | ||||||
| 	ble-	LL(999) | 	ble-	LL(999) | ||||||
| 	cmpwi	cr0, INCX, 0 | 	cmpwi	cr0, INCX, 0 | ||||||
| 	ble-	LL(999) | 	beq-	LL(999) | ||||||
| 
 | 
 | ||||||
| 	mr	NN, N | 	mr	NN, N | ||||||
| 	mr	XX, X | 	mr	XX, X | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	FLOAT absxi = 0.0; | 	FLOAT absxi = 0.0; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 	if ( n == 1 ) return( ABS(x[0]) ); | 	if ( n == 1 ) return( ABS(x[0]) ); | ||||||
| 
 | 
 | ||||||
| 	n *= inc_x; | 	n *= inc_x; | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) | ||||||
| 	BLASLONG inc_x2; | 	BLASLONG inc_x2; | ||||||
| 	FLOAT temp; | 	FLOAT temp; | ||||||
| 
 | 
 | ||||||
| 	if (n <= 0 || inc_x <= 0) return(0.0); | 	if (n <= 0 || inc_x == 0) return(0.0); | ||||||
| 
 | 
 | ||||||
| 	inc_x2 = 2 * inc_x; | 	inc_x2 = 2 * inc_x; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -76,7 +76,7 @@ | ||||||
| 	FMOV	c1, t4 | 	FMOV	c1, t4 | ||||||
| 
 | 
 | ||||||
| 	cmp	INCX, 0 | 	cmp	INCX, 0 | ||||||
| 	ble	.LL20 | 	beq	.LL20 | ||||||
| 	sll	INCX, ZBASE_SHIFT, INCX | 	sll	INCX, ZBASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
| 	cmp	N, 0 | 	cmp	N, 0 | ||||||
|  |  | ||||||
|  | @ -107,7 +107,7 @@ | ||||||
| 	FMOV	fzero, c1 | 	FMOV	fzero, c1 | ||||||
| 
 | 
 | ||||||
| 	cmp	INCX, 0 | 	cmp	INCX, 0 | ||||||
| 	ble	.LL99 | 	beq	.LL99 | ||||||
| 	sll	INCX, BASE_SHIFT, INCX | 	sll	INCX, BASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
| 	add	%sp, -8, %sp | 	add	%sp, -8, %sp | ||||||
|  |  | ||||||
|  | @ -76,7 +76,7 @@ | ||||||
| 	FMOV	c1, t4 | 	FMOV	c1, t4 | ||||||
| 
 | 
 | ||||||
| 	cmp	INCX, 0 | 	cmp	INCX, 0 | ||||||
| 	ble	.LL20 | 	beq	.LL20 | ||||||
| 	sll	INCX, BASE_SHIFT, INCX | 	sll	INCX, BASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
| 	cmp	N, 0 | 	cmp	N, 0 | ||||||
|  |  | ||||||
|  | @ -107,7 +107,7 @@ | ||||||
| 	FMOV	fzero, c1 | 	FMOV	fzero, c1 | ||||||
| 
 | 
 | ||||||
| 	cmp	INCX, 0 | 	cmp	INCX, 0 | ||||||
| 	ble	.LL99 | 	beq	.LL99 | ||||||
| 	sll	INCX, ZBASE_SHIFT, INCX | 	sll	INCX, ZBASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
| 	add	%sp, -8, %sp | 	add	%sp, -8, %sp | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ | ||||||
| 	testl	M, M | 	testl	M, M | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	testl	INCX, INCX | 	testl	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	sall	$BASE_SHIFT, INCX | 	sall	$BASE_SHIFT, INCX | ||||||
| 	fldz | 	fldz | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	pxor	%xmm1, %xmm1 | 	pxor	%xmm1, %xmm1 | ||||||
| 	testl	INCX, INCX | 	testl	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	leal	(, INCX, SIZE), INCX | 	leal	(, INCX, SIZE), INCX | ||||||
| 	cmpl	$SIZE, INCX | 	cmpl	$SIZE, INCX | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ | ||||||
| 	testl	M, M | 	testl	M, M | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	testl	INCX, INCX | 	testl	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	sall	$ZBASE_SHIFT, INCX | 	sall	$ZBASE_SHIFT, INCX | ||||||
| 	fldz | 	fldz | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	pxor	%xmm1, %xmm1 | 	pxor	%xmm1, %xmm1 | ||||||
| 	testl	INCX, INCX | 	testl	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	sall	$ZBASE_SHIFT, INCX | 	sall	$ZBASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -58,7 +58,7 @@ | ||||||
| 	testq	M, M | 	testq	M, M | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	testq	INCX, INCX | 	testq	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	salq	$BASE_SHIFT, INCX | 	salq	$BASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	pxor	%xmm1, %xmm1 | 	pxor	%xmm1, %xmm1 | ||||||
| 	testq	INCX, INCX | 	testq	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	pxor	%xmm2, %xmm2 | 	pxor	%xmm2, %xmm2 | ||||||
| 	leaq	(, INCX, SIZE), INCX | 	leaq	(, INCX, SIZE), INCX | ||||||
|  |  | ||||||
|  | @ -58,7 +58,7 @@ | ||||||
| 	testq	M, M | 	testq	M, M | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	testq	INCX, INCX | 	testq	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	salq	$ZBASE_SHIFT, INCX | 	salq	$ZBASE_SHIFT, INCX | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -58,7 +58,7 @@ | ||||||
| 	jle	.L999 | 	jle	.L999 | ||||||
| 	pxor	%xmm1, %xmm1 | 	pxor	%xmm1, %xmm1 | ||||||
| 	testq	INCX, INCX | 	testq	INCX, INCX | ||||||
| 	jle	.L999 | 	je	.L999 | ||||||
| 
 | 
 | ||||||
| 	xorq	FLAG, FLAG | 	xorq	FLAG, FLAG | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue