summaryrefslogtreecommitdiffstats
path: root/src/mesa/x86/x86_xform2.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/x86/x86_xform2.S')
-rw-r--r--src/mesa/x86/x86_xform2.S307
1 files changed, 167 insertions, 140 deletions
diff --git a/src/mesa/x86/x86_xform2.S b/src/mesa/x86/x86_xform2.S
index 0e46a8411ec..b9528e1653c 100644
--- a/src/mesa/x86/x86_xform2.S
+++ b/src/mesa/x86/x86_xform2.S
@@ -1,4 +1,4 @@
-/* $Id: x86_xform2.S,v 1.1 2001/03/29 06:46:27 gareth Exp $ */
+/* $Id: x86_xform2.S,v 1.2 2002/03/07 21:40:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -24,6 +24,12 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
#include "matypes.h"
#include "xform_args.h"
@@ -32,9 +38,30 @@
#define FP_ONE 1065353216
#define FP_ZERO 0
-#define SRC(i) REGOFF(i * 4, ESI)
-#define DST(i) REGOFF(i * 4, EDI)
-#define MAT(i) REGOFF(i * 4, EDX)
+#define SRC0 REGOFF(0, ESI)
+#define SRC1 REGOFF(4, ESI)
+#define SRC2 REGOFF(8, ESI)
+#define SRC3 REGOFF(12, ESI)
+#define DST0 REGOFF(0, EDI)
+#define DST1 REGOFF(4, EDI)
+#define DST2 REGOFF(8, EDI)
+#define DST3 REGOFF(12, EDI)
+#define MAT0 REGOFF(0, EDX)
+#define MAT1 REGOFF(4, EDX)
+#define MAT2 REGOFF(8, EDX)
+#define MAT3 REGOFF(12, EDX)
+#define MAT4 REGOFF(16, EDX)
+#define MAT5 REGOFF(20, EDX)
+#define MAT6 REGOFF(24, EDX)
+#define MAT7 REGOFF(28, EDX)
+#define MAT8 REGOFF(32, EDX)
+#define MAT9 REGOFF(36, EDX)
+#define MAT10 REGOFF(40, EDX)
+#define MAT11 REGOFF(44, EDX)
+#define MAT12 REGOFF(48, EDX)
+#define MAT13 REGOFF(52, EDX)
+#define MAT14 REGOFF(56, EDX)
+#define MAT15 REGOFF(60, EDX)
ALIGNTEXT16
@@ -52,7 +79,7 @@ GLNAME( _mesa_x86_transform_points2_general ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_gr_done ) )
+ JZ( LLBL(x86_p2_gr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
@@ -67,57 +94,57 @@ GLNAME( _mesa_x86_transform_points2_general ):
ADD_L( EDI, ECX )
ALIGNTEXT16
-LLBL( x86_p2_gr_loop ):
-
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
- FLD_S( SRC(0) ) /* F5 F4 */
- FMUL_S( MAT(1) )
- FLD_S( SRC(0) ) /* F6 F5 F4 */
- FMUL_S( MAT(2) )
- FLD_S( SRC(0) ) /* F7 F6 F5 F4 */
- FMUL_S( MAT(3) )
-
- FLD_S( SRC(1) ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT(4) )
- FLD_S( SRC(1) ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT(5) )
- FLD_S( SRC(1) ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT(6) )
- FLD_S( SRC(1) ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT(7) )
+LLBL(x86_p2_gr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+ FLD_S( SRC0 ) /* F7 F6 F5 F4 */
+ FMUL_S( MAT3 )
+
+ FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT6 )
+ FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT7 )
FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST(0), ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST(0), ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST(0), ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST(0), ST(1) ) /* F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
FXCH( ST(3) ) /* F4 F6 F5 F7 */
- FADD_S( MAT(12) )
+ FADD_S( MAT12 )
FXCH( ST(2) ) /* F5 F6 F4 F7 */
- FADD_S( MAT(13) )
+ FADD_S( MAT13 )
FXCH( ST(1) ) /* F6 F5 F4 F7 */
- FADD_S( MAT(14) )
+ FADD_S( MAT14 )
FXCH( ST(3) ) /* F7 F5 F4 F6 */
- FADD_S( MAT(15) )
+ FADD_S( MAT15 )
FXCH( ST(2) ) /* F4 F5 F7 F6 */
- FSTP_S( DST(0) ) /* F5 F7 F6 */
- FSTP_S( DST(1) ) /* F7 F6 */
+ FSTP_S( DST0 ) /* F5 F7 F6 */
+ FSTP_S( DST1 ) /* F7 F6 */
FXCH( ST(1) ) /* F6 F7 */
- FSTP_S( DST(2) ) /* F7 */
- FSTP_S( DST(3) ) /* */
+ FSTP_S( DST2 ) /* F7 */
+ FSTP_S( DST3 ) /* */
-LLBL( x86_p2_gr_skip ):
+LLBL(x86_p2_gr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_gr_loop ) )
+ JNE( LLBL(x86_p2_gr_loop) )
-LLBL( x86_p2_gr_done ):
+LLBL(x86_p2_gr_done):
POP_L( EDI )
POP_L( ESI )
@@ -143,7 +170,7 @@ GLNAME( _mesa_x86_transform_points2_perspective ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_pr_done ) )
+ JZ( LLBL(x86_p2_pr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
@@ -157,31 +184,31 @@ GLNAME( _mesa_x86_transform_points2_perspective ):
MOV_L( REGOFF(V4F_START, EDI), EDI )
ADD_L( EDI, ECX )
- MOV_L( MAT(14), EBX )
+ MOV_L( MAT14, EBX )
ALIGNTEXT16
-LLBL( x86_p2_pr_loop ):
+LLBL(x86_p2_pr_loop):
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
- FLD_S( SRC(1) ) /* F1 F4 */
- FMUL_S( MAT(5) )
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
FXCH( ST(1) ) /* F4 F1 */
- FSTP_S( DST(0) ) /* F1 */
- FSTP_S( DST(1) ) /* */
- MOV_L( EBX, DST(2) )
- MOV_L( CONST(FP_ZERO), DST(3) )
+ FSTP_S( DST0 ) /* F1 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+ MOV_L( CONST(FP_ZERO), DST3 )
-LLBL( x86_p2_pr_skip ):
+LLBL(x86_p2_pr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_pr_loop ) )
+ JNE( LLBL(x86_p2_pr_loop) )
-LLBL( x86_p2_pr_done ):
+LLBL(x86_p2_pr_done):
POP_L( EBX )
POP_L( EDI )
@@ -207,7 +234,7 @@ GLNAME( _mesa_x86_transform_points2_3d ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_3dr_done ) )
+ JZ( LLBL(x86_p2_3dr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
@@ -222,48 +249,48 @@ GLNAME( _mesa_x86_transform_points2_3d ):
ADD_L( EDI, ECX )
ALIGNTEXT16
-LLBL( x86_p2_3dr_loop ):
-
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
- FLD_S( SRC(0) ) /* F5 F4 */
- FMUL_S( MAT(1) )
- FLD_S( SRC(0) ) /* F6 F5 F4 */
- FMUL_S( MAT(2) )
-
- FLD_S( SRC(1) ) /* F0 F6 F5 F4 */
- FMUL_S( MAT(4) )
- FLD_S( SRC(1) ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT(5) )
- FLD_S( SRC(1) ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT(6) )
+LLBL(x86_p2_3dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+
+ FLD_S( SRC1 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT6 )
FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST(0), ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST(0), ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST(0), ST(1) ) /* F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
FXCH( ST(2) ) /* F4 F5 F6 */
- FADD_S( MAT(12) )
+ FADD_S( MAT12 )
FXCH( ST(1) ) /* F5 F4 F6 */
- FADD_S( MAT(13) )
+ FADD_S( MAT13 )
FXCH( ST(2) ) /* F6 F4 F5 */
- FADD_S( MAT(14) )
+ FADD_S( MAT14 )
FXCH( ST(1) ) /* F4 F6 F5 */
- FSTP_S( DST(0) ) /* F6 F5 */
+ FSTP_S( DST0 ) /* F6 F5 */
FXCH( ST(1) ) /* F5 F6 */
- FSTP_S( DST(1) ) /* F6 */
- FSTP_S( DST(2) ) /* */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
-LLBL( x86_p2_3dr_skip ):
+LLBL(x86_p2_3dr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_3dr_loop ) )
+ JNE( LLBL(x86_p2_3dr_loop) )
-LLBL( x86_p2_3dr_done ):
+LLBL(x86_p2_3dr_done):
POP_L( EDI )
POP_L( ESI )
@@ -289,7 +316,7 @@ GLNAME( _mesa_x86_transform_points2_3d_no_rot ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_3dnrr_done ) )
+ JZ( LLBL(x86_p2_3dnrr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
@@ -303,35 +330,35 @@ GLNAME( _mesa_x86_transform_points2_3d_no_rot ):
MOV_L( REGOFF(V4F_START, EDI), EDI )
ADD_L( EDI, ECX )
- MOV_L( MAT(14), EBX )
+ MOV_L( MAT14, EBX )
ALIGNTEXT16
-LLBL( x86_p2_3dnrr_loop ):
+LLBL(x86_p2_3dnrr_loop):
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
- FLD_S( SRC(1) ) /* F1 F4 */
- FMUL_S( MAT(5) )
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
FXCH( ST(1) ) /* F4 F1 */
- FADD_S( MAT(12) )
- FLD_S( MAT(13) ) /* F5 F4 F1 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 */
FXCH( ST(2) ) /* F1 F4 F5 */
- FADDP( ST(0), ST(2) ) /* F4 F5 */
+ FADDP( ST0, ST(2) ) /* F4 F5 */
- FSTP_S( DST(0) ) /* F5 */
- FSTP_S( DST(1) ) /* */
- MOV_L( EBX, DST(2) )
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
-LLBL( x86_p2_3dnrr_skip ):
+LLBL(x86_p2_3dnrr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_3dnrr_loop ) )
+ JNE( LLBL(x86_p2_3dnrr_loop) )
-LLBL( x86_p2_3dnrr_done ):
+LLBL(x86_p2_3dnrr_done):
POP_L( EBX )
POP_L( EDI )
@@ -357,7 +384,7 @@ GLNAME( _mesa_x86_transform_points2_2d ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_2dr_done ) )
+ JZ( LLBL(x86_p2_2dr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
@@ -372,39 +399,39 @@ GLNAME( _mesa_x86_transform_points2_2d ):
ADD_L( EDI, ECX )
ALIGNTEXT16
-LLBL( x86_p2_2dr_loop ):
+LLBL(x86_p2_2dr_loop):
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
- FLD_S( SRC(0) ) /* F5 F4 */
- FMUL_S( MAT(1) )
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
- FLD_S( SRC(1) ) /* F0 F5 F4 */
- FMUL_S( MAT(4) )
- FLD_S( SRC(1) ) /* F1 F0 F5 F4 */
- FMUL_S( MAT(5) )
+ FLD_S( SRC1 ) /* F0 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT5 )
FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST(0), ST(3) ) /* F1 F5 F4 */
- FADDP( ST(0), ST(1) ) /* F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
FXCH( ST(1) ) /* F4 F5 */
- FADD_S( MAT(12) )
+ FADD_S( MAT12 )
FXCH( ST(1) ) /* F5 F4 */
- FADD_S( MAT(13) )
+ FADD_S( MAT13 )
FXCH( ST(1) ) /* F4 F5 */
- FSTP_S( DST(0) ) /* F5 */
- FSTP_S( DST(1) ) /* */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
-LLBL( x86_p2_2dr_skip ):
+LLBL(x86_p2_2dr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_2dr_loop ) )
+ JNE( LLBL(x86_p2_2dr_loop) )
-LLBL( x86_p2_2dr_done ):
+LLBL(x86_p2_2dr_done):
POP_L( EDI )
POP_L( ESI )
@@ -429,7 +456,7 @@ GLNAME( _mesa_x86_transform_points2_2d_no_rot ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_2dnrr_done ) )
+ JZ( LLBL(x86_p2_2dnrr_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
@@ -444,31 +471,31 @@ GLNAME( _mesa_x86_transform_points2_2d_no_rot ):
ADD_L( EDI, ECX )
ALIGNTEXT16
-LLBL( x86_p2_2dnrr_loop ):
+LLBL(x86_p2_2dnrr_loop):
- FLD_S( SRC(0) ) /* F4 */
- FMUL_S( MAT(0) )
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
- FLD_S( SRC(1) ) /* F1 F4 */
- FMUL_S( MAT(5) )
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
FXCH( ST(1) ) /* F4 F1 */
- FADD_S( MAT(12) )
- FLD_S( MAT(13) ) /* F5 F4 F1 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 */
FXCH( ST(2) ) /* F1 F4 F5 */
- FADDP( ST(0), ST(2) ) /* F4 F5 */
+ FADDP( ST0, ST(2) ) /* F4 F5 */
- FSTP_S( DST(0) ) /* F5 */
- FSTP_S( DST(1) ) /* */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
-LLBL( x86_p2_2dnrr_skip ):
+LLBL(x86_p2_2dnrr_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_2dnrr_loop ) )
+ JNE( LLBL(x86_p2_2dnrr_loop) )
-LLBL( x86_p2_2dnrr_done ):
+LLBL(x86_p2_2dnrr_done):
POP_L( EDI )
POP_L( ESI )
@@ -494,7 +521,7 @@ GLNAME( _mesa_x86_transform_points2_identity ):
MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
TEST_L( ECX, ECX )
- JZ( LLBL( x86_p2_ir_done ) )
+ JZ( LLBL(x86_p2_ir_done) )
MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
@@ -509,25 +536,25 @@ GLNAME( _mesa_x86_transform_points2_identity ):
ADD_L( EDI, ECX )
CMP_L( ESI, EDI )
- JE( LLBL( x86_p2_ir_done ) )
+ JE( LLBL(x86_p2_ir_done) )
ALIGNTEXT16
-LLBL( x86_p2_ir_loop ):
+LLBL(x86_p2_ir_loop):
- MOV_L( SRC(0), EBX )
- MOV_L( SRC(1), EDX )
+ MOV_L( SRC0, EBX )
+ MOV_L( SRC1, EDX )
- MOV_L( EBX, DST(0) )
- MOV_L( EDX, DST(1) )
+ MOV_L( EBX, DST0 )
+ MOV_L( EDX, DST1 )
-LLBL( x86_p2_ir_skip ):
+LLBL(x86_p2_ir_skip):
ADD_L( CONST(16), EDI )
ADD_L( EAX, ESI )
CMP_L( ECX, EDI )
- JNE( LLBL( x86_p2_ir_loop ) )
+ JNE( LLBL(x86_p2_ir_loop) )
-LLBL( x86_p2_ir_done ):
+LLBL(x86_p2_ir_done):
POP_L( EBX )
POP_L( EDI )