+++ /dev/null
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !math_big_pure_go,ppc64
-
-#include "textflag.h"
-
-// This file provides fast assembly versions for the elementary
-// arithmetic operations on vectors implemented in arith.go.
-
-TEXT ·divWW(SB), NOSPLIT, $0
- BR ·divWW_g(SB)
-
+++ /dev/null
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !math_big_pure_go,ppc64le
-
-#include "textflag.h"
-
-// This file provides fast assembly versions for the elementary
-// arithmetic operations on vectors implemented in arith.go.
-
-// func divWW(x1, x0, y Word) (q, r Word)
-TEXT ·divWW(SB), NOSPLIT, $0
- MOVD x1+0(FP), R4
- MOVD x0+8(FP), R5
- MOVD y+16(FP), R6
-
- CMPU R4, R6
- BGE divbigger
-
- // from the programmer's note in ch. 3 of the ISA manual, p.74
- DIVDEU R6, R4, R3
- DIVDU R6, R5, R7
- MULLD R6, R3, R8
- MULLD R6, R7, R20
- SUB R20, R5, R10
- ADD R7, R3, R3
- SUB R8, R10, R4
- CMPU R4, R10
- BLT adjust
- CMPU R4, R6
- BLT end
-
-adjust:
- MOVD $1, R21
- ADD R21, R3, R3
- SUB R6, R4, R4
-
-end:
- MOVD R3, q+24(FP)
- MOVD R4, r+32(FP)
-
- RET
-
-divbigger:
- MOVD $-1, R7
- MOVD R7, q+24(FP)
- MOVD R7, r+32(FP)
- RET
-
MOVD R4, c+56(FP)
RET
+// func divWW(x1, x0, y Word) (q, r Word)
+TEXT ·divWW(SB), NOSPLIT, $0
+ MOVD x1+0(FP), R4
+ MOVD x0+8(FP), R5
+ MOVD y+16(FP), R6
+
+ CMPU R4, R6
+ BGE divbigger
+
+ // from the programmer's note in ch. 3 of the ISA manual, p.74
+ DIVDEU R6, R4, R3
+ DIVDU R6, R5, R7
+ MULLD R6, R3, R8
+ MULLD R6, R7, R20
+ SUB R20, R5, R10
+ ADD R7, R3, R3
+ SUB R8, R10, R4
+ CMPU R4, R10
+ BLT adjust
+ CMPU R4, R6
+ BLT end
+
+adjust:
+ MOVD $1, R21
+ ADD R21, R3, R3
+ SUB R6, R4, R4
+
+end:
+ MOVD R3, q+24(FP)
+ MOVD R4, r+32(FP)
+
+ RET
+
+divbigger:
+ MOVD $-1, R7
+ MOVD R7, q+24(FP)
+ MOVD R7, r+32(FP)
+ RET
+
TEXT ·divWVW(SB), NOSPLIT, $0
BR ·divWVW_g(SB)