Sparc optimized GLAPI dispatch table.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: glapi.c,v 1.54 2001/05/29 15:23:49 brianp Exp $ */
|
/* $Id: glapi.c,v 1.55 2001/06/05 23:54:00 davem69 Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -52,7 +52,9 @@
|
|||||||
#include "glapitable.h"
|
#include "glapitable.h"
|
||||||
#include "glthread.h"
|
#include "glthread.h"
|
||||||
|
|
||||||
|
#ifdef USE_SPARC_ASM
|
||||||
|
#include "SPARC/sparc.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/***** BEGIN NO-OP DISPATCH *****/
|
/***** BEGIN NO-OP DISPATCH *****/
|
||||||
|
|
||||||
@@ -1754,6 +1756,55 @@ generate_entrypoint(GLuint functionOffset)
|
|||||||
*(unsigned int *)(code + 0x16) = (unsigned int)functionOffset * 4;
|
*(unsigned int *)(code + 0x16) = (unsigned int)functionOffset * 4;
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
|
#elif defined(USE_SPARC_ASM)
|
||||||
|
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
static const unsigned int insn_template[] = {
|
||||||
|
0x05000000, /* sethi %uhi(_glapi_Dispatch), %g2 */
|
||||||
|
0x03000000, /* sethi %hi(_glapi_Dispatch), %g1 */
|
||||||
|
0x8410a000, /* or %g2, %ulo(_glapi_Dispatch), %g2 */
|
||||||
|
0x82106000, /* or %g1, %lo(_glapi_Dispatch), %g1 */
|
||||||
|
0x8528b020, /* sllx %g2, 32, %g2 */
|
||||||
|
0xc2584002, /* ldx [%g1 + %g2], %g1 */
|
||||||
|
0x05000000, /* sethi %hi(8 * glapioffset), %g2 */
|
||||||
|
0x8410a000, /* or %g2, %lo(8 * glapioffset), %g2 */
|
||||||
|
0xc6584002, /* ldx [%g1 + %g2], %g3 */
|
||||||
|
0x81c0c000, /* jmpl %g3, %g0 */
|
||||||
|
0x01000000 /* nop */
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
static const unsigned int insn_template[] = {
|
||||||
|
0x03000000, /* sethi %hi(_glapi_Dispatch), %g1 */
|
||||||
|
0xc2006000, /* ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
|
||||||
|
0xc6006000, /* ld [%g1 + %lo(4*glapioffset)], %g3 */
|
||||||
|
0x81c0c000, /* jmpl %g3, %g0 */
|
||||||
|
0x01000000 /* nop */
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
unsigned int *code = malloc(sizeof(insn_template));
|
||||||
|
unsigned long glapi_addr = (unsigned long) &_glapi_Dispatch;
|
||||||
|
if (code) {
|
||||||
|
memcpy(code, insn_template, sizeof(insn_template));
|
||||||
|
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
code[0] |= (glapi_addr >> (32 + 10));
|
||||||
|
code[1] |= ((glapi_addr & 0xffffffff) >> 10);
|
||||||
|
_mesa_sparc_icache_flush(&code[0]);
|
||||||
|
code[2] |= ((glapi_addr >> 32) & ((1 << 10) - 1));
|
||||||
|
code[3] |= (glapi_addr & ((1 << 10) - 1));
|
||||||
|
_mesa_sparc_icache_flush(&code[2]);
|
||||||
|
code[6] |= ((functionOffset * 8) >> 10);
|
||||||
|
code[7] |= ((functionOffset * 8) & ((1 << 10) - 1));
|
||||||
|
_mesa_sparc_icache_flush(&code[6]);
|
||||||
|
#else
|
||||||
|
code[0] |= (glapi_addr >> 10);
|
||||||
|
code[1] |= (glapi_addr & ((1 << 10) - 1));
|
||||||
|
_mesa_sparc_icache_flush(&code[0]);
|
||||||
|
code[2] |= (functionOffset * 4);
|
||||||
|
_mesa_sparc_icache_flush(&code[2]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return code;
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# $Id: glsparcasm.py,v 1.1 2001/06/05 04:30:03 davem69 Exp $
|
# $Id: glsparcasm.py,v 1.2 2001/06/05 23:54:00 davem69 Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.5
|
# Version: 3.5
|
||||||
@@ -51,15 +51,21 @@ def PrintHead():
|
|||||||
print ' * sethi/or instruction sequences below at library init time.'
|
print ' * sethi/or instruction sequences below at library init time.'
|
||||||
print ' */'
|
print ' */'
|
||||||
print ''
|
print ''
|
||||||
print '.text'
|
print '.data'
|
||||||
print '.align 64'
|
print '.align 64'
|
||||||
print ''
|
print ''
|
||||||
|
print '.globl _mesa_sparc_glapi_begin'
|
||||||
|
print '_mesa_sparc_glapi_begin:'
|
||||||
|
print ''
|
||||||
return
|
return
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
def PrintTail():
|
def PrintTail():
|
||||||
print '\t nop'
|
print '\t nop'
|
||||||
print ''
|
print ''
|
||||||
|
print '.globl _mesa_sparc_glapi_end'
|
||||||
|
print '_mesa_sparc_glapi_end:'
|
||||||
|
print ''
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -73,13 +79,13 @@ def GenerateDispatchCode(name, offset):
|
|||||||
print '\tor\t%g2, %lo(0x00000000), %g2'
|
print '\tor\t%g2, %lo(0x00000000), %g2'
|
||||||
print '\tor\t%g1, %lo(0x00000000), %g1'
|
print '\tor\t%g1, %lo(0x00000000), %g1'
|
||||||
print '\tsllx\t%g2, 32, %g2'
|
print '\tsllx\t%g2, 32, %g2'
|
||||||
print '\tor\t%g1, %g2, %g1'
|
print '\tldx\t[%g1 + %g2], %g1'
|
||||||
print "\tsethi\t%%hi(8 * _gloffset_%s), %%g2" % (offset)
|
print "\tsethi\t%%hi(8 * _gloffset_%s), %%g2" % (offset)
|
||||||
print "\tor\t%%g2, %%lo(8 * _gloffset_%s), %%g2" % (offset)
|
print "\tor\t%%g2, %%lo(8 * _gloffset_%s), %%g2" % (offset)
|
||||||
print '\tldx\t[%g1 + %g2], %g3'
|
print '\tldx\t[%g1 + %g2], %g3'
|
||||||
print '#else'
|
print '#else'
|
||||||
print '\tsethi\t%hi(0x00000000), %g1'
|
print '\tsethi\t%hi(0x00000000), %g1'
|
||||||
print '\tor\t%g1, %lo(0x00000000), %g1'
|
print '\tld\t[%g1 + %lo(0x00000000)], %g1'
|
||||||
print "\tld\t[%%g1 + (4 * _gloffset_%s)], %%g3" % (offset)
|
print "\tld\t[%%g1 + (4 * _gloffset_%s)], %%g3" % (offset)
|
||||||
print '#endif'
|
print '#endif'
|
||||||
print '\tjmpl\t%g3, %g0'
|
print '\tjmpl\t%g3, %g0'
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: context.c,v 1.140 2001/06/05 03:58:20 davem69 Exp $ */
|
/* $Id: context.c,v 1.141 2001/06/05 23:54:00 davem69 Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -66,6 +66,9 @@
|
|||||||
#include "Trace/tr_wrapper.h"
|
#include "Trace/tr_wrapper.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SPARC_ASM
|
||||||
|
#include "SPARC/sparc.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MESA_VERBOSE
|
#ifndef MESA_VERBOSE
|
||||||
int MESA_VERBOSE = 0
|
int MESA_VERBOSE = 0
|
||||||
@@ -453,6 +456,9 @@ one_time_init( void )
|
|||||||
_math_init();
|
_math_init();
|
||||||
_mesa_init_math();
|
_mesa_init_math();
|
||||||
|
|
||||||
|
#ifdef USE_SPARC_ASM
|
||||||
|
_mesa_init_sparc_glapi_relocs();
|
||||||
|
#endif
|
||||||
if (getenv("MESA_DEBUG")) {
|
if (getenv("MESA_DEBUG")) {
|
||||||
_glapi_noop_enable_warnings(GL_TRUE);
|
_glapi_noop_enable_warnings(GL_TRUE);
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: dispatch.c,v 1.22 2001/03/28 17:20:20 brianp Exp $ */
|
/* $Id: dispatch.c,v 1.23 2001/06/05 23:54:00 davem69 Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
#include "glthread.h"
|
#include "glthread.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(USE_X86_ASM)
|
#if !(defined(USE_X86_ASM) || defined(USE_SPARC_ASM))
|
||||||
|
|
||||||
#define KEYWORD1
|
#define KEYWORD1
|
||||||
#define KEYWORD2 GLAPIENTRY
|
#define KEYWORD2 GLAPIENTRY
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: sparc.c,v 1.2 2001/05/23 14:42:47 brianp Exp $ */
|
/* $Id: sparc.c,v 1.3 2001/06/05 23:54:01 davem69 Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "glheader.h"
|
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "math/m_vertices.h"
|
#include "math/m_vertices.h"
|
||||||
#include "math/m_xform.h"
|
#include "math/m_xform.h"
|
||||||
@@ -107,3 +106,33 @@ void _mesa_init_all_sparc_transform_asm(void)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern unsigned int _mesa_sparc_glapi_begin;
|
||||||
|
extern unsigned int _mesa_sparc_glapi_end;
|
||||||
|
|
||||||
|
void _mesa_init_sparc_glapi_relocs(void)
|
||||||
|
{
|
||||||
|
unsigned int *insn_ptr, *end_ptr;
|
||||||
|
unsigned long disp_addr;
|
||||||
|
|
||||||
|
insn_ptr = &_mesa_sparc_glapi_begin;
|
||||||
|
end_ptr = &_mesa_sparc_glapi_end;
|
||||||
|
disp_addr = (unsigned long) &_glapi_Dispatch;
|
||||||
|
|
||||||
|
while (insn_ptr < end_ptr) {
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
insn_ptr[0] |= (disp_addr >> (32 + 10));
|
||||||
|
insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10);
|
||||||
|
_mesa_sparc_icache_flush(&insn_ptr[0]);
|
||||||
|
insn_ptr[2] |= ((disp_addr >> 32) & ((1 << 10) - 1));
|
||||||
|
insn_ptr[3] |= (disp_addr & ((1 << 10) - 1));
|
||||||
|
_mesa_sparc_icache_flush(&insn_ptr[2]);
|
||||||
|
insn_ptr += 10;
|
||||||
|
#else
|
||||||
|
insn_ptr[0] |= (disp_addr >> 10);
|
||||||
|
insn_ptr[1] |= (disp_addr & ((1 << 10) - 1));
|
||||||
|
_mesa_sparc_icache_flush(&insn_ptr[0]);
|
||||||
|
insn_ptr += 4;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: sparc.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */
|
/* $Id: sparc.h,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -33,5 +33,7 @@
|
|||||||
#define SPARC_H
|
#define SPARC_H
|
||||||
|
|
||||||
extern void _mesa_init_all_sparc_transform_asm(void);
|
extern void _mesa_init_all_sparc_transform_asm(void);
|
||||||
|
extern void _mesa_init_sparc_glapi_relocs(void);
|
||||||
|
extern void _mesa_sparc_icache_flush(unsigned int *);
|
||||||
|
|
||||||
#endif /* !(SPARC_H) */
|
#endif /* !(SPARC_H) */
|
||||||
|
@@ -1,4 +1,34 @@
|
|||||||
/* $Id: sparc_matrix.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */
|
/* $Id: sparc_matrix.h,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */
|
||||||
|
|
||||||
|
#ifndef _SPARC_MATRIX_H
|
||||||
|
#define _SPARC_MATRIX_H
|
||||||
|
|
||||||
|
#ifdef __sparc_v9__
|
||||||
|
#define LDPTR ldx
|
||||||
|
#define MAT_M 0x00
|
||||||
|
#define MAT_INV 0x08
|
||||||
|
#define V4F_DATA 0x00
|
||||||
|
#define V4F_START 0x08
|
||||||
|
#define V4F_COUNT 0x10
|
||||||
|
#define V4F_STRIDE 0x14
|
||||||
|
#define V4F_SIZE 0x18
|
||||||
|
#define V4F_FLAGS 0x1c
|
||||||
|
#else
|
||||||
|
#define LDPTR ld
|
||||||
|
#define MAT_M 0x00
|
||||||
|
#define MAT_INV 0x04
|
||||||
|
#define V4F_DATA 0x00
|
||||||
|
#define V4F_START 0x04
|
||||||
|
#define V4F_COUNT 0x08
|
||||||
|
#define V4F_STRIDE 0x0c
|
||||||
|
#define V4F_SIZE 0x10
|
||||||
|
#define V4F_FLAGS 0x14
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VEC_SIZE_1 1
|
||||||
|
#define VEC_SIZE_2 3
|
||||||
|
#define VEC_SIZE_3 7
|
||||||
|
#define VEC_SIZE_4 15
|
||||||
|
|
||||||
#define M0 %f16
|
#define M0 %f16
|
||||||
#define M1 %f17
|
#define M1 %f17
|
||||||
@@ -17,158 +47,6 @@
|
|||||||
#define M14 %f30
|
#define M14 %f30
|
||||||
#define M15 %f31
|
#define M15 %f31
|
||||||
|
|
||||||
/* Seems to work, disable if unaligned traps begin to appear... -DaveM */
|
|
||||||
#define USE_LD_DOUBLE
|
|
||||||
|
|
||||||
#ifndef USE_LD_DOUBLE
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + ( 3 * 0x4)], M3; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14; \
|
|
||||||
ld [BASE + (15 * 0x4)], M15
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_12_13(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13
|
|
||||||
|
|
||||||
#define LDMATRIX_0_12_13(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + ( 3 * 0x4)], M3; \
|
|
||||||
ld [BASE + ( 4 * 0x4)], M4; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + ( 6 * 0x4)], M6; \
|
|
||||||
ld [BASE + ( 7 * 0x4)], M7; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14; \
|
|
||||||
ld [BASE + (15 * 0x4)], M15
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_4_5_12_13(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 4 * 0x4)], M4; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_12_13(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + ( 3 * 0x4)], M3; \
|
|
||||||
ld [BASE + ( 4 * 0x4)], M4; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + ( 6 * 0x4)], M6; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + ( 3 * 0x4)], M3; \
|
|
||||||
ld [BASE + ( 4 * 0x4)], M4; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + ( 6 * 0x4)], M6; \
|
|
||||||
ld [BASE + ( 7 * 0x4)], M7; \
|
|
||||||
ld [BASE + ( 8 * 0x4)], M8; \
|
|
||||||
ld [BASE + ( 9 * 0x4)], M9; \
|
|
||||||
ld [BASE + (10 * 0x4)], M10; \
|
|
||||||
ld [BASE + (11 * 0x4)], M11; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14; \
|
|
||||||
ld [BASE + (15 * 0x4)], M15
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_12_13(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 1 * 0x4)], M1; \
|
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
|
||||||
ld [BASE + ( 4 * 0x4)], M4; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + ( 6 * 0x4)], M6; \
|
|
||||||
ld [BASE + ( 8 * 0x4)], M8; \
|
|
||||||
ld [BASE + ( 9 * 0x4)], M9; \
|
|
||||||
ld [BASE + (10 * 0x4)], M10; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_10_12_13_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + (10 * 0x4)], M10; \
|
|
||||||
ld [BASE + (12 * 0x4)], M12; \
|
|
||||||
ld [BASE + (13 * 0x4)], M13; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#define LDMATRIX_0_5_8_9_10_14(BASE) \
|
|
||||||
ld [BASE + ( 0 * 0x4)], M0; \
|
|
||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
|
||||||
ld [BASE + ( 8 * 0x4)], M8; \
|
|
||||||
ld [BASE + ( 9 * 0x4)], M9; \
|
|
||||||
ld [BASE + (10 * 0x4)], M10; \
|
|
||||||
ld [BASE + (14 * 0x4)], M14
|
|
||||||
|
|
||||||
#else /* !(USE_LD_DOUBLE) */
|
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \
|
#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \
|
||||||
ldd [BASE + ( 0 * 0x4)], M0; \
|
ldd [BASE + ( 0 * 0x4)], M0; \
|
||||||
ldd [BASE + ( 2 * 0x4)], M2; \
|
ldd [BASE + ( 2 * 0x4)], M2; \
|
||||||
@@ -250,6 +128,14 @@
|
|||||||
ld [BASE + ( 5 * 0x4)], M5; \
|
ld [BASE + ( 5 * 0x4)], M5; \
|
||||||
ldd [BASE + (12 * 0x4)], M12
|
ldd [BASE + (12 * 0x4)], M12
|
||||||
|
|
||||||
|
#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \
|
||||||
|
ldd [BASE + ( 0 * 0x4)], M0; \
|
||||||
|
ld [BASE + ( 2 * 0x4)], M2; \
|
||||||
|
ldd [BASE + ( 4 * 0x4)], M4; \
|
||||||
|
ld [BASE + ( 6 * 0x4)], M6; \
|
||||||
|
ldd [BASE + ( 8 * 0x4)], M8; \
|
||||||
|
ld [BASE + (10 * 0x4)], M10
|
||||||
|
|
||||||
#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
|
#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
|
||||||
ldd [BASE + ( 0 * 0x4)], M0; \
|
ldd [BASE + ( 0 * 0x4)], M0; \
|
||||||
ld [BASE + ( 2 * 0x4)], M2; \
|
ld [BASE + ( 2 * 0x4)], M2; \
|
||||||
@@ -274,4 +160,4 @@
|
|||||||
ld [BASE + (10 * 0x4)], M10; \
|
ld [BASE + (10 * 0x4)], M10; \
|
||||||
ld [BASE + (14 * 0x4)], M14
|
ld [BASE + (14 * 0x4)], M14
|
||||||
|
|
||||||
#endif /* USE_LD_DOUBLE */
|
#endif /* !(_SPARC_MATRIX_H) */
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: xform.S,v 1.1 2001/05/23 14:27:03 brianp Exp $ */
|
/* $Id: xform.S,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
*
|
*
|
||||||
@@ -16,28 +16,7 @@
|
|||||||
* tricky and not much of a gain though.
|
* tricky and not much of a gain though.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __sparc_v9__
|
#include "sparc_matrix.h"
|
||||||
#define LDPTR ldx
|
|
||||||
#define V4F_DATA 0x00
|
|
||||||
#define V4F_START 0x08
|
|
||||||
#define V4F_COUNT 0x10
|
|
||||||
#define V4F_STRIDE 0x14
|
|
||||||
#define V4F_SIZE 0x18
|
|
||||||
#define V4F_FLAGS 0x1c
|
|
||||||
#else
|
|
||||||
#define LDPTR ld
|
|
||||||
#define V4F_DATA 0x00
|
|
||||||
#define V4F_START 0x04
|
|
||||||
#define V4F_COUNT 0x08
|
|
||||||
#define V4F_STRIDE 0x0c
|
|
||||||
#define V4F_SIZE 0x10
|
|
||||||
#define V4F_FLAGS 0x14
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define VEC_SIZE_1 1
|
|
||||||
#define VEC_SIZE_2 3
|
|
||||||
#define VEC_SIZE_3 7
|
|
||||||
#define VEC_SIZE_4 15
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 64
|
.align 64
|
||||||
@@ -71,8 +50,6 @@ __set_v4f_4:
|
|||||||
retl
|
retl
|
||||||
st %g2, [%o0 + V4F_FLAGS]
|
st %g2, [%o0 + V4F_FLAGS]
|
||||||
|
|
||||||
#include "sparc_matrix.h"
|
|
||||||
|
|
||||||
/* First the raw versions. */
|
/* First the raw versions. */
|
||||||
|
|
||||||
.globl _mesa_sparc_transform_points1_general
|
.globl _mesa_sparc_transform_points1_general
|
||||||
|
Reference in New Issue
Block a user