summaryrefslogtreecommitdiffstats
path: root/src/mesa/sparc
diff options
context:
space:
mode:
authorThierry Reding <[email protected]>2006-10-14 03:46:41 +0000
committerThierry Reding <[email protected]>2006-10-14 03:46:41 +0000
commit1ddf606332a188e46a47607cd41eb5d81bdf4c8a (patch)
tree8cb51078803106d87aedeae7bbd7a762a0d369d1 /src/mesa/sparc
Import Mesa 6.5.1 (MesaLib, MesaDemos, MesaGLUT).
Diffstat (limited to 'src/mesa/sparc')
-rw-r--r--src/mesa/sparc/clip.S243
-rw-r--r--src/mesa/sparc/glapi_sparc.S1770
-rw-r--r--src/mesa/sparc/norm.S609
-rw-r--r--src/mesa/sparc/sparc.c177
-rw-r--r--src/mesa/sparc/sparc.h38
-rw-r--r--src/mesa/sparc/sparc_matrix.h170
-rw-r--r--src/mesa/sparc/xform.S1393
7 files changed, 4400 insertions, 0 deletions
diff --git a/src/mesa/sparc/clip.S b/src/mesa/sparc/clip.S
new file mode 100644
index 00000000000..58c228ed151
--- /dev/null
+++ b/src/mesa/sparc/clip.S
@@ -0,0 +1,243 @@
+/*
+ * Clip testing in SPARC assembly
+ */
+
+#if __arch64__
+#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
+
+#if defined(SVR4) || defined(__SVR4) || defined(__svr4__)
+ /* Solaris requires this for 64-bit. */
+ .register %g2, #scratch
+ .register %g3, #scratch
+ .register %g7, #scratch
+#endif
+
+ .text
+ .align 64
+
+one_dot_zero:
+ .word 0x3f800000 /* 1.0f */
+
+ /* This trick is shamelessly stolen from the x86
+ * Mesa asm. Very clever, and we can do it too
+ * since we have the necessary add with carry
+ * instructions on Sparc.
+ */
+clip_table:
+ .byte 0, 1, 0, 2, 4, 5, 4, 6
+ .byte 0, 1, 0, 2, 8, 9, 8, 10
+ .byte 32, 33, 32, 34, 36, 37, 36, 38
+ .byte 32, 33, 32, 34, 40, 41, 40, 42
+ .byte 0, 1, 0, 2, 4, 5, 4, 6
+ .byte 0, 1, 0, 2, 8, 9, 8, 10
+ .byte 16, 17, 16, 18, 20, 21, 20, 22
+ .byte 16, 17, 16, 18, 24, 25, 24, 26
+ .byte 63, 61, 63, 62, 55, 53, 55, 54
+ .byte 63, 61, 63, 62, 59, 57, 59, 58
+ .byte 47, 45, 47, 46, 39, 37, 39, 38
+ .byte 47, 45, 47, 46, 43, 41, 43, 42
+ .byte 63, 61, 63, 62, 55, 53, 55, 54
+ .byte 63, 61, 63, 62, 59, 57, 59, 58
+ .byte 31, 29, 31, 30, 23, 21, 23, 22
+ .byte 31, 29, 31, 30, 27, 25, 27, 26
+
+/* GLvector4f *clip_vec, GLvector4f *proj_vec,
+ GLubyte clipMask[], GLubyte *orMask, GLubyte *andMask */
+
+ .align 64
+__pc_tramp:
+ retl
+ nop
+
+ .globl _mesa_sparc_cliptest_points4
+_mesa_sparc_cliptest_points4:
+ save %sp, -64, %sp
+ call __pc_tramp
+ sub %o7, (. - one_dot_zero - 4), %g1
+ ld [%g1 + 0x0], %f4
+ add %g1, 0x4, %g1
+
+ ld [%i0 + V4F_STRIDE], %l1
+ ld [%i0 + V4F_COUNT], %g7
+ LDPTR [%i0 + V4F_START], %i0
+ LDPTR [%i1 + V4F_START], %i5
+ ldub [%i3], %g2
+ ldub [%i4], %g3
+ sll %g3, 8, %g3
+ or %g2, %g3, %g2
+
+ ld [%i1 + V4F_FLAGS], %g3
+ or %g3, VEC_SIZE_4, %g3
+ st %g3, [%i1 + V4F_FLAGS]
+ mov 3, %g3
+ st %g3, [%i1 + V4F_SIZE]
+ st %g7, [%i1 + V4F_COUNT]
+ clr %l2
+ clr %l0
+
+ /* l0: i
+ * g7: count
+ * l1: stride
+ * l2: c
+ * g2: (tmpAndMask << 8) | tmpOrMask
+ * g1: clip_table
+ * i0: from[stride][i]
+ * i2: clipMask
+ * i5: vProj[4][i]
+ */
+
+1: ld [%i0 + 0x0c], %f3 ! LSU Group
+ ld [%i0 + 0x0c], %g5 ! LSU Group
+ ld [%i0 + 0x08], %g4 ! LSU Group
+ fdivs %f4, %f3, %f8 ! FGM
+ addcc %g5, %g5, %g5 ! IEU1 Group
+ addx %g0, 0x0, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ ld [%i0 + 0x04], %g4 ! LSU Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ ld [%i0 + 0x00], %g4 ! LSU Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ ldub [%g1 + %g3], %g3 ! LSU Group
+ cmp %g3, 0 ! IEU1 Group, stall
+ be 2f ! CTI
+ stb %g3, [%i2] ! LSU
+ sll %g3, 8, %g4 ! IEU1 Group
+ add %l2, 1, %l2 ! IEU0
+ st %g0, [%i5 + 0x00] ! LSU
+ or %g4, 0xff, %g4 ! IEU0 Group
+ or %g2, %g3, %g2 ! IEU1
+ st %g0, [%i5 + 0x04] ! LSU
+ and %g2, %g4, %g2 ! IEU0 Group
+ st %g0, [%i5 + 0x08] ! LSU
+ b 3f ! CTI
+ st %f4, [%i5 + 0x0c] ! LSU Group
+2: ld [%i0 + 0x00], %f0 ! LSU Group
+ ld [%i0 + 0x04], %f1 ! LSU Group
+ ld [%i0 + 0x08], %f2 ! LSU Group
+ fmuls %f0, %f8, %f0 ! FGM
+ st %f0, [%i5 + 0x00] ! LSU Group
+ fmuls %f1, %f8, %f1 ! FGM
+ st %f1, [%i5 + 0x04] ! LSU Group
+ fmuls %f2, %f8, %f2 ! FGM
+ st %f2, [%i5 + 0x08] ! LSU Group
+ st %f8, [%i5 + 0x0c] ! LSU Group
+3: add %i5, 0x10, %i5 ! IEU1
+ add %l0, 1, %l0 ! IEU0 Group
+ add %i2, 1, %i2 ! IEU0 Group
+ cmp %l0, %g7 ! IEU1 Group
+ bne 1b ! CTI
+ add %i0, %l1, %i0 ! IEU0 Group
+ stb %g2, [%i3] ! LSU
+ srl %g2, 8, %g3 ! IEU0 Group
+ cmp %l2, %g7 ! IEU1 Group
+ bl,a 1f ! CTI
+ clr %g3 ! IEU0
+1: stb %g3, [%i4] ! LSU Group
+ ret ! CTI Group
+ restore %i1, 0x0, %o0
+
+ .globl _mesa_sparc_cliptest_points4_np
+_mesa_sparc_cliptest_points4_np:
+ save %sp, -64, %sp
+
+ call __pc_tramp
+ sub %o7, (. - one_dot_zero - 4), %g1
+ add %g1, 0x4, %g1
+
+ ld [%i0 + V4F_STRIDE], %l1
+ ld [%i0 + V4F_COUNT], %g7
+ LDPTR [%i0 + V4F_START], %i0
+ LDPTR [%i1 + V4F_START], %i5
+ ldub [%i3], %g2
+ ldub [%i4], %g3
+ sll %g3, 8, %g3
+ or %g2, %g3, %g2
+
+ ld [%i1 + V4F_FLAGS], %g3
+ or %g3, VEC_SIZE_4, %g3
+ st %g3, [%i1 + V4F_FLAGS]
+ mov 3, %g3
+ st %g3, [%i1 + V4F_SIZE]
+ st %g7, [%i1 + V4F_COUNT]
+ clr %l2
+ clr %l0
+
+ /* l0: i
+ * g7: count
+ * l1: stride
+ * l2: c
+ * g2: (tmpAndMask << 8) | tmpOrMask
+ * g1: clip_table
+ * i0: from[stride][i]
+ * i2: clipMask
+ */
+
+1: ld [%i0 + 0x0c], %g5 ! LSU Group
+ ld [%i0 + 0x08], %g4 ! LSU Group
+ addcc %g5, %g5, %g5 ! IEU1 Group
+ addx %g0, 0x0, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ ld [%i0 + 0x04], %g4 ! LSU Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ ld [%i0 + 0x00], %g4 ! LSU Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ addcc %g4, %g4, %g4 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ subcc %g5, %g4, %g0 ! IEU1 Group
+ addx %g3, %g3, %g3 ! IEU1 Group
+ ldub [%g1 + %g3], %g3 ! LSU Group
+ cmp %g3, 0 ! IEU1 Group, stall
+ be 2f ! CTI
+ stb %g3, [%i2] ! LSU
+ sll %g3, 8, %g4 ! IEU1 Group
+ add %l2, 1, %l2 ! IEU0
+ or %g4, 0xff, %g4 ! IEU0 Group
+ or %g2, %g3, %g2 ! IEU1
+ and %g2, %g4, %g2 ! IEU0 Group
+2: add %l0, 1, %l0 ! IEU0 Group
+ add %i2, 1, %i2 ! IEU0 Group
+ cmp %l0, %g7 ! IEU1 Group
+ bne 1b ! CTI
+ add %i0, %l1, %i0 ! IEU0 Group
+ stb %g2, [%i3] ! LSU
+ srl %g2, 8, %g3 ! IEU0 Group
+ cmp %l2, %g7 ! IEU1 Group
+ bl,a 1f ! CTI
+ clr %g3 ! IEU0
+1: stb %g3, [%i4] ! LSU Group
+ ret ! CTI Group
+ restore %i1, 0x0, %o0
diff --git a/src/mesa/sparc/glapi_sparc.S b/src/mesa/sparc/glapi_sparc.S
new file mode 100644
index 00000000000..bf2bc839082
--- /dev/null
+++ b/src/mesa/sparc/glapi_sparc.S
@@ -0,0 +1,1770 @@
+/* DO NOT EDIT - This file generated automatically by gl_SPARC_asm.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sub license,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL, IBM,
+ * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "glapioffsets.h"
+
+#ifdef __arch64__
+# define GL_STUB(fn,off) \
+fn: \
+ sethi %hi(0xDEADBEEF), %g4 ; \
+ sethi %hi(0xDEADBEEF), %g1 ; \
+ or %g4, %lo(0xDEADBEEF), %g4 ; \
+ or %g1, %lo(0xDEADBEEF), %g1 ; \
+ sllx %g4, 32, %g4 ; \
+ ldx [%g1 + %g4], %g1 ; \
+ sethi %hi(8 * off), %g4 ; \
+ or %g4, %lo(8 * off), %g4 ; \
+ ldx [%g1 + %g4], %g5 ; \
+ jmpl %g5, %g0 ; \
+ nop
+#else
+# define GL_STUB(fn,off) \
+fn: \
+ sethi %hi(0xDEADBEEF), %g1 ; \
+ ld [%g1 + %lo(0xDEADBEEF)], %g1 ; \
+ ld [%g1 + (4 * off)], %g5 ; \
+ jmpl %g5, %g0 ; \
+ nop
+#endif
+
+#define GL_STUB_ALIAS(fn,alias) fn = alias
+
+.text
+.align 32
+ .globl __glapi_sparc_icache_flush ; .type __glapi_sparc_icache_flush,#function
+__glapi_sparc_icache_flush: /* %o0 = insn_addr */
+ flush %o0
+ retl
+ nop
+
+.data
+.align 64
+
+ .globl glNewList ; .type glNewList,#function
+ .globl glEndList ; .type glEndList,#function
+ .globl glCallList ; .type glCallList,#function
+ .globl glCallLists ; .type glCallLists,#function
+ .globl glDeleteLists ; .type glDeleteLists,#function
+ .globl glGenLists ; .type glGenLists,#function
+ .globl glListBase ; .type glListBase,#function
+ .globl glBegin ; .type glBegin,#function
+ .globl glBitmap ; .type glBitmap,#function
+ .globl glColor3b ; .type glColor3b,#function
+ .globl glColor3bv ; .type glColor3bv,#function
+ .globl glColor3d ; .type glColor3d,#function
+ .globl glColor3dv ; .type glColor3dv,#function
+ .globl glColor3f ; .type glColor3f,#function
+ .globl glColor3fv ; .type glColor3fv,#function
+ .globl glColor3i ; .type glColor3i,#function
+ .globl glColor3iv ; .type glColor3iv,#function
+ .globl glColor3s ; .type glColor3s,#function
+ .globl glColor3sv ; .type glColor3sv,#function
+ .globl glColor3ub ; .type glColor3ub,#function
+ .globl glColor3ubv ; .type glColor3ubv,#function
+ .globl glColor3ui ; .type glColor3ui,#function
+ .globl glColor3uiv ; .type glColor3uiv,#function
+ .globl glColor3us ; .type glColor3us,#function
+ .globl glColor3usv ; .type glColor3usv,#function
+ .globl glColor4b ; .type glColor4b,#function
+ .globl glColor4bv ; .type glColor4bv,#function
+ .globl glColor4d ; .type glColor4d,#function
+ .globl glColor4dv ; .type glColor4dv,#function
+ .globl glColor4f ; .type glColor4f,#function
+ .globl glColor4fv ; .type glColor4fv,#function
+ .globl glColor4i ; .type glColor4i,#function
+ .globl glColor4iv ; .type glColor4iv,#function
+ .globl glColor4s ; .type glColor4s,#function
+ .globl glColor4sv ; .type glColor4sv,#function
+ .globl glColor4ub ; .type glColor4ub,#function
+ .globl glColor4ubv ; .type glColor4ubv,#function
+ .globl glColor4ui ; .type glColor4ui,#function
+ .globl glColor4uiv ; .type glColor4uiv,#function
+ .globl glColor4us ; .type glColor4us,#function
+ .globl glColor4usv ; .type glColor4usv,#function
+ .globl glEdgeFlag ; .type glEdgeFlag,#function
+ .globl glEdgeFlagv ; .type glEdgeFlagv,#function
+ .globl glEnd ; .type glEnd,#function
+ .globl glIndexd ; .type glIndexd,#function
+ .globl glIndexdv ; .type glIndexdv,#function
+ .globl glIndexf ; .type glIndexf,#function
+ .globl glIndexfv ; .type glIndexfv,#function
+ .globl glIndexi ; .type glIndexi,#function
+ .globl glIndexiv ; .type glIndexiv,#function
+ .globl glIndexs ; .type glIndexs,#function
+ .globl glIndexsv ; .type glIndexsv,#function
+ .globl glNormal3b ; .type glNormal3b,#function
+ .globl glNormal3bv ; .type glNormal3bv,#function
+ .globl glNormal3d ; .type glNormal3d,#function
+ .globl glNormal3dv ; .type glNormal3dv,#function
+ .globl glNormal3f ; .type glNormal3f,#function
+ .globl glNormal3fv ; .type glNormal3fv,#function
+ .globl glNormal3i ; .type glNormal3i,#function
+ .globl glNormal3iv ; .type glNormal3iv,#function
+ .globl glNormal3s ; .type glNormal3s,#function
+ .globl glNormal3sv ; .type glNormal3sv,#function
+ .globl glRasterPos2d ; .type glRasterPos2d,#function
+ .globl glRasterPos2dv ; .type glRasterPos2dv,#function
+ .globl glRasterPos2f ; .type glRasterPos2f,#function
+ .globl glRasterPos2fv ; .type glRasterPos2fv,#function
+ .globl glRasterPos2i ; .type glRasterPos2i,#function
+ .globl glRasterPos2iv ; .type glRasterPos2iv,#function
+ .globl glRasterPos2s ; .type glRasterPos2s,#function
+ .globl glRasterPos2sv ; .type glRasterPos2sv,#function
+ .globl glRasterPos3d ; .type glRasterPos3d,#function
+ .globl glRasterPos3dv ; .type glRasterPos3dv,#function
+ .globl glRasterPos3f ; .type glRasterPos3f,#function
+ .globl glRasterPos3fv ; .type glRasterPos3fv,#function
+ .globl glRasterPos3i ; .type glRasterPos3i,#function
+ .globl glRasterPos3iv ; .type glRasterPos3iv,#function
+ .globl glRasterPos3s ; .type glRasterPos3s,#function
+ .globl glRasterPos3sv ; .type glRasterPos3sv,#function
+ .globl glRasterPos4d ; .type glRasterPos4d,#function
+ .globl glRasterPos4dv ; .type glRasterPos4dv,#function
+ .globl glRasterPos4f ; .type glRasterPos4f,#function
+ .globl glRasterPos4fv ; .type glRasterPos4fv,#function
+ .globl glRasterPos4i ; .type glRasterPos4i,#function
+ .globl glRasterPos4iv ; .type glRasterPos4iv,#function
+ .globl glRasterPos4s ; .type glRasterPos4s,#function
+ .globl glRasterPos4sv ; .type glRasterPos4sv,#function
+ .globl glRectd ; .type glRectd,#function
+ .globl glRectdv ; .type glRectdv,#function
+ .globl glRectf ; .type glRectf,#function
+ .globl glRectfv ; .type glRectfv,#function
+ .globl glRecti ; .type glRecti,#function
+ .globl glRectiv ; .type glRectiv,#function
+ .globl glRects ; .type glRects,#function
+ .globl glRectsv ; .type glRectsv,#function
+ .globl glTexCoord1d ; .type glTexCoord1d,#function
+ .globl glTexCoord1dv ; .type glTexCoord1dv,#function
+ .globl glTexCoord1f ; .type glTexCoord1f,#function
+ .globl glTexCoord1fv ; .type glTexCoord1fv,#function
+ .globl glTexCoord1i ; .type glTexCoord1i,#function
+ .globl glTexCoord1iv ; .type glTexCoord1iv,#function
+ .globl glTexCoord1s ; .type glTexCoord1s,#function
+ .globl glTexCoord1sv ; .type glTexCoord1sv,#function
+ .globl glTexCoord2d ; .type glTexCoord2d,#function
+ .globl glTexCoord2dv ; .type glTexCoord2dv,#function
+ .globl glTexCoord2f ; .type glTexCoord2f,#function
+ .globl glTexCoord2fv ; .type glTexCoord2fv,#function
+ .globl glTexCoord2i ; .type glTexCoord2i,#function
+ .globl glTexCoord2iv ; .type glTexCoord2iv,#function
+ .globl glTexCoord2s ; .type glTexCoord2s,#function
+ .globl glTexCoord2sv ; .type glTexCoord2sv,#function
+ .globl glTexCoord3d ; .type glTexCoord3d,#function
+ .globl glTexCoord3dv ; .type glTexCoord3dv,#function
+ .globl glTexCoord3f ; .type glTexCoord3f,#function
+ .globl glTexCoord3fv ; .type glTexCoord3fv,#function
+ .globl glTexCoord3i ; .type glTexCoord3i,#function
+ .globl glTexCoord3iv ; .type glTexCoord3iv,#function
+ .globl glTexCoord3s ; .type glTexCoord3s,#function
+ .globl glTexCoord3sv ; .type glTexCoord3sv,#function
+ .globl glTexCoord4d ; .type glTexCoord4d,#function
+ .globl glTexCoord4dv ; .type glTexCoord4dv,#function
+ .globl glTexCoord4f ; .type glTexCoord4f,#function
+ .globl glTexCoord4fv ; .type glTexCoord4fv,#function
+ .globl glTexCoord4i ; .type glTexCoord4i,#function
+ .globl glTexCoord4iv ; .type glTexCoord4iv,#function
+ .globl glTexCoord4s ; .type glTexCoord4s,#function
+ .globl glTexCoord4sv ; .type glTexCoord4sv,#function
+ .globl glVertex2d ; .type glVertex2d,#function
+ .globl glVertex2dv ; .type glVertex2dv,#function
+ .globl glVertex2f ; .type glVertex2f,#function
+ .globl glVertex2fv ; .type glVertex2fv,#function
+ .globl glVertex2i ; .type glVertex2i,#function
+ .globl glVertex2iv ; .type glVertex2iv,#function
+ .globl glVertex2s ; .type glVertex2s,#function
+ .globl glVertex2sv ; .type glVertex2sv,#function
+ .globl glVertex3d ; .type glVertex3d,#function
+ .globl glVertex3dv ; .type glVertex3dv,#function
+ .globl glVertex3f ; .type glVertex3f,#function
+ .globl glVertex3fv ; .type glVertex3fv,#function
+ .globl glVertex3i ; .type glVertex3i,#function
+ .globl glVertex3iv ; .type glVertex3iv,#function
+ .globl glVertex3s ; .type glVertex3s,#function
+ .globl glVertex3sv ; .type glVertex3sv,#function
+ .globl glVertex4d ; .type glVertex4d,#function
+ .globl glVertex4dv ; .type glVertex4dv,#function
+ .globl glVertex4f ; .type glVertex4f,#function
+ .globl glVertex4fv ; .type glVertex4fv,#function
+ .globl glVertex4i ; .type glVertex4i,#function
+ .globl glVertex4iv ; .type glVertex4iv,#function
+ .globl glVertex4s ; .type glVertex4s,#function
+ .globl glVertex4sv ; .type glVertex4sv,#function
+ .globl glClipPlane ; .type glClipPlane,#function
+ .globl glColorMaterial ; .type glColorMaterial,#function
+ .globl glCullFace ; .type glCullFace,#function
+ .globl glFogf ; .type glFogf,#function
+ .globl glFogfv ; .type glFogfv,#function
+ .globl glFogi ; .type glFogi,#function
+ .globl glFogiv ; .type glFogiv,#function
+ .globl glFrontFace ; .type glFrontFace,#function
+ .globl glHint ; .type glHint,#function
+ .globl glLightf ; .type glLightf,#function
+ .globl glLightfv ; .type glLightfv,#function
+ .globl glLighti ; .type glLighti,#function
+ .globl glLightiv ; .type glLightiv,#function
+ .globl glLightModelf ; .type glLightModelf,#function
+ .globl glLightModelfv ; .type glLightModelfv,#function
+ .globl glLightModeli ; .type glLightModeli,#function
+ .globl glLightModeliv ; .type glLightModeliv,#function
+ .globl glLineStipple ; .type glLineStipple,#function
+ .globl glLineWidth ; .type glLineWidth,#function
+ .globl glMaterialf ; .type glMaterialf,#function
+ .globl glMaterialfv ; .type glMaterialfv,#function
+ .globl glMateriali ; .type glMateriali,#function
+ .globl glMaterialiv ; .type glMaterialiv,#function
+ .globl glPointSize ; .type glPointSize,#function
+ .globl glPolygonMode ; .type glPolygonMode,#function
+ .globl glPolygonStipple ; .type glPolygonStipple,#function
+ .globl glScissor ; .type glScissor,#function
+ .globl glShadeModel ; .type glShadeModel,#function
+ .globl glTexParameterf ; .type glTexParameterf,#function
+ .globl glTexParameterfv ; .type glTexParameterfv,#function
+ .globl glTexParameteri ; .type glTexParameteri,#function
+ .globl glTexParameteriv ; .type glTexParameteriv,#function
+ .globl glTexImage1D ; .type glTexImage1D,#function
+ .globl glTexImage2D ; .type glTexImage2D,#function
+ .globl glTexEnvf ; .type glTexEnvf,#function
+ .globl glTexEnvfv ; .type glTexEnvfv,#function
+ .globl glTexEnvi ; .type glTexEnvi,#function
+ .globl glTexEnviv ; .type glTexEnviv,#function
+ .globl glTexGend ; .type glTexGend,#function
+ .globl glTexGendv ; .type glTexGendv,#function
+ .globl glTexGenf ; .type glTexGenf,#function
+ .globl glTexGenfv ; .type glTexGenfv,#function
+ .globl glTexGeni ; .type glTexGeni,#function
+ .globl glTexGeniv ; .type glTexGeniv,#function
+ .globl glFeedbackBuffer ; .type glFeedbackBuffer,#function
+ .globl glSelectBuffer ; .type glSelectBuffer,#function
+ .globl glRenderMode ; .type glRenderMode,#function
+ .globl glInitNames ; .type glInitNames,#function
+ .globl glLoadName ; .type glLoadName,#function
+ .globl glPassThrough ; .type glPassThrough,#function
+ .globl glPopName ; .type glPopName,#function
+ .globl glPushName ; .type glPushName,#function
+ .globl glDrawBuffer ; .type glDrawBuffer,#function
+ .globl glClear ; .type glClear,#function
+ .globl glClearAccum ; .type glClearAccum,#function
+ .globl glClearIndex ; .type glClearIndex,#function
+ .globl glClearColor ; .type glClearColor,#function
+ .globl glClearStencil ; .type glClearStencil,#function
+ .globl glClearDepth ; .type glClearDepth,#function
+ .globl glStencilMask ; .type glStencilMask,#function
+ .globl glColorMask ; .type glColorMask,#function
+ .globl glDepthMask ; .type glDepthMask,#function
+ .globl glIndexMask ; .type glIndexMask,#function
+ .globl glAccum ; .type glAccum,#function
+ .globl glDisable ; .type glDisable,#function
+ .globl glEnable ; .type glEnable,#function
+ .globl glFinish ; .type glFinish,#function
+ .globl glFlush ; .type glFlush,#function
+ .globl glPopAttrib ; .type glPopAttrib,#function
+ .globl glPushAttrib ; .type glPushAttrib,#function
+ .globl glMap1d ; .type glMap1d,#function
+ .globl glMap1f ; .type glMap1f,#function
+ .globl glMap2d ; .type glMap2d,#function
+ .globl glMap2f ; .type glMap2f,#function
+ .globl glMapGrid1d ; .type glMapGrid1d,#function
+ .globl glMapGrid1f ; .type glMapGrid1f,#function
+ .globl glMapGrid2d ; .type glMapGrid2d,#function
+ .globl glMapGrid2f ; .type glMapGrid2f,#function
+ .globl glEvalCoord1d ; .type glEvalCoord1d,#function
+ .globl glEvalCoord1dv ; .type glEvalCoord1dv,#function
+ .globl glEvalCoord1f ; .type glEvalCoord1f,#function
+ .globl glEvalCoord1fv ; .type glEvalCoord1fv,#function
+ .globl glEvalCoord2d ; .type glEvalCoord2d,#function
+ .globl glEvalCoord2dv ; .type glEvalCoord2dv,#function
+ .globl glEvalCoord2f ; .type glEvalCoord2f,#function
+ .globl glEvalCoord2fv ; .type glEvalCoord2fv,#function
+ .globl glEvalMesh1 ; .type glEvalMesh1,#function
+ .globl glEvalPoint1 ; .type glEvalPoint1,#function
+ .globl glEvalMesh2 ; .type glEvalMesh2,#function
+ .globl glEvalPoint2 ; .type glEvalPoint2,#function
+ .globl glAlphaFunc ; .type glAlphaFunc,#function
+ .globl glBlendFunc ; .type glBlendFunc,#function
+ .globl glLogicOp ; .type glLogicOp,#function
+ .globl glStencilFunc ; .type glStencilFunc,#function
+ .globl glStencilOp ; .type glStencilOp,#function
+ .globl glDepthFunc ; .type glDepthFunc,#function
+ .globl glPixelZoom ; .type glPixelZoom,#function
+ .globl glPixelTransferf ; .type glPixelTransferf,#function
+ .globl glPixelTransferi ; .type glPixelTransferi,#function
+ .globl glPixelStoref ; .type glPixelStoref,#function
+ .globl glPixelStorei ; .type glPixelStorei,#function
+ .globl glPixelMapfv ; .type glPixelMapfv,#function
+ .globl glPixelMapuiv ; .type glPixelMapuiv,#function
+ .globl glPixelMapusv ; .type glPixelMapusv,#function
+ .globl glReadBuffer ; .type glReadBuffer,#function
+ .globl glCopyPixels ; .type glCopyPixels,#function
+ .globl glReadPixels ; .type glReadPixels,#function
+ .globl glDrawPixels ; .type glDrawPixels,#function
+ .globl glGetBooleanv ; .type glGetBooleanv,#function
+ .globl glGetClipPlane ; .type glGetClipPlane,#function
+ .globl glGetDoublev ; .type glGetDoublev,#function
+ .globl glGetError ; .type glGetError,#function
+ .globl glGetFloatv ; .type glGetFloatv,#function
+ .globl glGetIntegerv ; .type glGetIntegerv,#function
+ .globl glGetLightfv ; .type glGetLightfv,#function
+ .globl glGetLightiv ; .type glGetLightiv,#function
+ .globl glGetMapdv ; .type glGetMapdv,#function
+ .globl glGetMapfv ; .type glGetMapfv,#function
+ .globl glGetMapiv ; .type glGetMapiv,#function
+ .globl glGetMaterialfv ; .type glGetMaterialfv,#function
+ .globl glGetMaterialiv ; .type glGetMaterialiv,#function
+ .globl glGetPixelMapfv ; .type glGetPixelMapfv,#function
+ .globl glGetPixelMapuiv ; .type glGetPixelMapuiv,#function
+ .globl glGetPixelMapusv ; .type glGetPixelMapusv,#function
+ .globl glGetPolygonStipple ; .type glGetPolygonStipple,#function
+ .globl glGetString ; .type glGetString,#function
+ .globl glGetTexEnvfv ; .type glGetTexEnvfv,#function
+ .globl glGetTexEnviv ; .type glGetTexEnviv,#function
+ .globl glGetTexGendv ; .type glGetTexGendv,#function
+ .globl glGetTexGenfv ; .type glGetTexGenfv,#function
+ .globl glGetTexGeniv ; .type glGetTexGeniv,#function
+ .globl glGetTexImage ; .type glGetTexImage,#function
+ .globl glGetTexParameterfv ; .type glGetTexParameterfv,#function
+ .globl glGetTexParameteriv ; .type glGetTexParameteriv,#function
+ .globl glGetTexLevelParameterfv ; .type glGetTexLevelParameterfv,#function
+ .globl glGetTexLevelParameteriv ; .type glGetTexLevelParameteriv,#function
+ .globl glIsEnabled ; .type glIsEnabled,#function
+ .globl glIsList ; .type glIsList,#function
+ .globl glDepthRange ; .type glDepthRange,#function
+ .globl glFrustum ; .type glFrustum,#function
+ .globl glLoadIdentity ; .type glLoadIdentity,#function
+ .globl glLoadMatrixf ; .type glLoadMatrixf,#function
+ .globl glLoadMatrixd ; .type glLoadMatrixd,#function
+ .globl glMatrixMode ; .type glMatrixMode,#function
+ .globl glMultMatrixf ; .type glMultMatrixf,#function
+ .globl glMultMatrixd ; .type glMultMatrixd,#function
+ .globl glOrtho ; .type glOrtho,#function
+ .globl glPopMatrix ; .type glPopMatrix,#function
+ .globl glPushMatrix ; .type glPushMatrix,#function
+ .globl glRotated ; .type glRotated,#function
+ .globl glRotatef ; .type glRotatef,#function
+ .globl glScaled ; .type glScaled,#function
+ .globl glScalef ; .type glScalef,#function
+ .globl glTranslated ; .type glTranslated,#function
+ .globl glTranslatef ; .type glTranslatef,#function
+ .globl glViewport ; .type glViewport,#function
+ .globl glArrayElement ; .type glArrayElement,#function
+ .globl glBindTexture ; .type glBindTexture,#function
+ .globl glColorPointer ; .type glColorPointer,#function
+ .globl glDisableClientState ; .type glDisableClientState,#function
+ .globl glDrawArrays ; .type glDrawArrays,#function
+ .globl glDrawElements ; .type glDrawElements,#function
+ .globl glEdgeFlagPointer ; .type glEdgeFlagPointer,#function
+ .globl glEnableClientState ; .type glEnableClientState,#function
+ .globl glIndexPointer ; .type glIndexPointer,#function
+ .globl glIndexub ; .type glIndexub,#function
+ .globl glIndexubv ; .type glIndexubv,#function
+ .globl glInterleavedArrays ; .type glInterleavedArrays,#function
+ .globl glNormalPointer ; .type glNormalPointer,#function
+ .globl glPolygonOffset ; .type glPolygonOffset,#function
+ .globl glTexCoordPointer ; .type glTexCoordPointer,#function
+ .globl glVertexPointer ; .type glVertexPointer,#function
+ .globl glAreTexturesResident ; .type glAreTexturesResident,#function
+ .globl glCopyTexImage1D ; .type glCopyTexImage1D,#function
+ .globl glCopyTexImage2D ; .type glCopyTexImage2D,#function
+ .globl glCopyTexSubImage1D ; .type glCopyTexSubImage1D,#function
+ .globl glCopyTexSubImage2D ; .type glCopyTexSubImage2D,#function
+ .globl glDeleteTextures ; .type glDeleteTextures,#function
+ .globl glGenTextures ; .type glGenTextures,#function
+ .globl glGetPointerv ; .type glGetPointerv,#function
+ .globl glIsTexture ; .type glIsTexture,#function
+ .globl glPrioritizeTextures ; .type glPrioritizeTextures,#function
+ .globl glTexSubImage1D ; .type glTexSubImage1D,#function
+ .globl glTexSubImage2D ; .type glTexSubImage2D,#function
+ .globl glPopClientAttrib ; .type glPopClientAttrib,#function
+ .globl glPushClientAttrib ; .type glPushClientAttrib,#function
+ .globl glBlendColor ; .type glBlendColor,#function
+ .globl glBlendEquation ; .type glBlendEquation,#function
+ .globl glDrawRangeElements ; .type glDrawRangeElements,#function
+ .globl glColorTable ; .type glColorTable,#function
+ .globl glColorTableParameterfv ; .type glColorTableParameterfv,#function
+ .globl glColorTableParameteriv ; .type glColorTableParameteriv,#function
+ .globl glCopyColorTable ; .type glCopyColorTable,#function
+ .globl glGetColorTable ; .type glGetColorTable,#function
+ .globl glGetColorTableParameterfv ; .type glGetColorTableParameterfv,#function
+ .globl glGetColorTableParameteriv ; .type glGetColorTableParameteriv,#function
+ .globl glColorSubTable ; .type glColorSubTable,#function
+ .globl glCopyColorSubTable ; .type glCopyColorSubTable,#function
+ .globl glConvolutionFilter1D ; .type glConvolutionFilter1D,#function
+ .globl glConvolutionFilter2D ; .type glConvolutionFilter2D,#function
+ .globl glConvolutionParameterf ; .type glConvolutionParameterf,#function
+ .globl glConvolutionParameterfv ; .type glConvolutionParameterfv,#function
+ .globl glConvolutionParameteri ; .type glConvolutionParameteri,#function
+ .globl glConvolutionParameteriv ; .type glConvolutionParameteriv,#function
+ .globl glCopyConvolutionFilter1D ; .type glCopyConvolutionFilter1D,#function
+ .globl glCopyConvolutionFilter2D ; .type glCopyConvolutionFilter2D,#function
+ .globl glGetConvolutionFilter ; .type glGetConvolutionFilter,#function
+ .globl glGetConvolutionParameterfv ; .type glGetConvolutionParameterfv,#function
+ .globl glGetConvolutionParameteriv ; .type glGetConvolutionParameteriv,#function
+ .globl glGetSeparableFilter ; .type glGetSeparableFilter,#function
+ .globl glSeparableFilter2D ; .type glSeparableFilter2D,#function
+ .globl glGetHistogram ; .type glGetHistogram,#function
+ .globl glGetHistogramParameterfv ; .type glGetHistogramParameterfv,#function
+ .globl glGetHistogramParameteriv ; .type glGetHistogramParameteriv,#function
+ .globl glGetMinmax ; .type glGetMinmax,#function
+ .globl glGetMinmaxParameterfv ; .type glGetMinmaxParameterfv,#function
+ .globl glGetMinmaxParameteriv ; .type glGetMinmaxParameteriv,#function
+ .globl glHistogram ; .type glHistogram,#function
+ .globl glMinmax ; .type glMinmax,#function
+ .globl glResetHistogram ; .type glResetHistogram,#function
+ .globl glResetMinmax ; .type glResetMinmax,#function
+ .globl glTexImage3D ; .type glTexImage3D,#function
+ .globl glTexSubImage3D ; .type glTexSubImage3D,#function
+ .globl glCopyTexSubImage3D ; .type glCopyTexSubImage3D,#function
+ .globl glActiveTextureARB ; .type glActiveTextureARB,#function
+ .globl glClientActiveTextureARB ; .type glClientActiveTextureARB,#function
+ .globl glMultiTexCoord1dARB ; .type glMultiTexCoord1dARB,#function
+ .globl glMultiTexCoord1dvARB ; .type glMultiTexCoord1dvARB,#function
+ .globl glMultiTexCoord1fARB ; .type glMultiTexCoord1fARB,#function
+ .globl glMultiTexCoord1fvARB ; .type glMultiTexCoord1fvARB,#function
+ .globl glMultiTexCoord1iARB ; .type glMultiTexCoord1iARB,#function
+ .globl glMultiTexCoord1ivARB ; .type glMultiTexCoord1ivARB,#function
+ .globl glMultiTexCoord1sARB ; .type glMultiTexCoord1sARB,#function
+ .globl glMultiTexCoord1svARB ; .type glMultiTexCoord1svARB,#function
+ .globl glMultiTexCoord2dARB ; .type glMultiTexCoord2dARB,#function
+ .globl glMultiTexCoord2dvARB ; .type glMultiTexCoord2dvARB,#function
+ .globl glMultiTexCoord2fARB ; .type glMultiTexCoord2fARB,#function
+ .globl glMultiTexCoord2fvARB ; .type glMultiTexCoord2fvARB,#function
+ .globl glMultiTexCoord2iARB ; .type glMultiTexCoord2iARB,#function
+ .globl glMultiTexCoord2ivARB ; .type glMultiTexCoord2ivARB,#function
+ .globl glMultiTexCoord2sARB ; .type glMultiTexCoord2sARB,#function
+ .globl glMultiTexCoord2svARB ; .type glMultiTexCoord2svARB,#function
+ .globl glMultiTexCoord3dARB ; .type glMultiTexCoord3dARB,#function
+ .globl glMultiTexCoord3dvARB ; .type glMultiTexCoord3dvARB,#function
+ .globl glMultiTexCoord3fARB ; .type glMultiTexCoord3fARB,#function
+ .globl glMultiTexCoord3fvARB ; .type glMultiTexCoord3fvARB,#function
+ .globl glMultiTexCoord3iARB ; .type glMultiTexCoord3iARB,#function
+ .globl glMultiTexCoord3ivARB ; .type glMultiTexCoord3ivARB,#function
+ .globl glMultiTexCoord3sARB ; .type glMultiTexCoord3sARB,#function
+ .globl glMultiTexCoord3svARB ; .type glMultiTexCoord3svARB,#function
+ .globl glMultiTexCoord4dARB ; .type glMultiTexCoord4dARB,#function
+ .globl glMultiTexCoord4dvARB ; .type glMultiTexCoord4dvARB,#function
+ .globl glMultiTexCoord4fARB ; .type glMultiTexCoord4fARB,#function
+ .globl glMultiTexCoord4fvARB ; .type glMultiTexCoord4fvARB,#function
+ .globl glMultiTexCoord4iARB ; .type glMultiTexCoord4iARB,#function
+ .globl glMultiTexCoord4ivARB ; .type glMultiTexCoord4ivARB,#function
+ .globl glMultiTexCoord4sARB ; .type glMultiTexCoord4sARB,#function
+ .globl glMultiTexCoord4svARB ; .type glMultiTexCoord4svARB,#function
+ .globl glStencilFuncSeparate ; .type glStencilFuncSeparate,#function
+ .globl glStencilMaskSeparate ; .type glStencilMaskSeparate,#function
+ .globl glStencilOpSeparate ; .type glStencilOpSeparate,#function
+ .globl glLoadTransposeMatrixdARB ; .type glLoadTransposeMatrixdARB,#function
+ .globl glLoadTransposeMatrixfARB ; .type glLoadTransposeMatrixfARB,#function
+ .globl glMultTransposeMatrixdARB ; .type glMultTransposeMatrixdARB,#function
+ .globl glMultTransposeMatrixfARB ; .type glMultTransposeMatrixfARB,#function
+ .globl glSampleCoverageARB ; .type glSampleCoverageARB,#function
+ .globl glCompressedTexImage1DARB ; .type glCompressedTexImage1DARB,#function
+ .globl glCompressedTexImage2DARB ; .type glCompressedTexImage2DARB,#function
+ .globl glCompressedTexImage3DARB ; .type glCompressedTexImage3DARB,#function
+ .globl glCompressedTexSubImage1DARB ; .type glCompressedTexSubImage1DARB,#function
+ .globl glCompressedTexSubImage2DARB ; .type glCompressedTexSubImage2DARB,#function
+ .globl glCompressedTexSubImage3DARB ; .type glCompressedTexSubImage3DARB,#function
+ .globl glGetCompressedTexImageARB ; .type glGetCompressedTexImageARB,#function
+ .globl glDisableVertexAttribArrayARB ; .type glDisableVertexAttribArrayARB,#function
+ .globl glEnableVertexAttribArrayARB ; .type glEnableVertexAttribArrayARB,#function
+ .globl glGetProgramEnvParameterdvARB ; .type glGetProgramEnvParameterdvARB,#function
+ .globl glGetProgramEnvParameterfvARB ; .type glGetProgramEnvParameterfvARB,#function
+ .globl glGetProgramLocalParameterdvARB ; .type glGetProgramLocalParameterdvARB,#function
+ .globl glGetProgramLocalParameterfvARB ; .type glGetProgramLocalParameterfvARB,#function
+ .globl glGetProgramStringARB ; .type glGetProgramStringARB,#function
+ .globl glGetProgramivARB ; .type glGetProgramivARB,#function
+ .globl glGetVertexAttribdvARB ; .type glGetVertexAttribdvARB,#function
+ .globl glGetVertexAttribfvARB ; .type glGetVertexAttribfvARB,#function
+ .globl glGetVertexAttribivARB ; .type glGetVertexAttribivARB,#function
+ .globl glProgramEnvParameter4dARB ; .type glProgramEnvParameter4dARB,#function
+ .globl glProgramEnvParameter4dvARB ; .type glProgramEnvParameter4dvARB,#function
+ .globl glProgramEnvParameter4fARB ; .type glProgramEnvParameter4fARB,#function
+ .globl glProgramEnvParameter4fvARB ; .type glProgramEnvParameter4fvARB,#function
+ .globl glProgramLocalParameter4dARB ; .type glProgramLocalParameter4dARB,#function
+ .globl glProgramLocalParameter4dvARB ; .type glProgramLocalParameter4dvARB,#function
+ .globl glProgramLocalParameter4fARB ; .type glProgramLocalParameter4fARB,#function
+ .globl glProgramLocalParameter4fvARB ; .type glProgramLocalParameter4fvARB,#function
+ .globl glProgramStringARB ; .type glProgramStringARB,#function
+ .globl glVertexAttrib1dARB ; .type glVertexAttrib1dARB,#function
+ .globl glVertexAttrib1dvARB ; .type glVertexAttrib1dvARB,#function
+ .globl glVertexAttrib1fARB ; .type glVertexAttrib1fARB,#function
+ .globl glVertexAttrib1fvARB ; .type glVertexAttrib1fvARB,#function
+ .globl glVertexAttrib1sARB ; .type glVertexAttrib1sARB,#function
+ .globl glVertexAttrib1svARB ; .type glVertexAttrib1svARB,#function
+ .globl glVertexAttrib2dARB ; .type glVertexAttrib2dARB,#function
+ .globl glVertexAttrib2dvARB ; .type glVertexAttrib2dvARB,#function
+ .globl glVertexAttrib2fARB ; .type glVertexAttrib2fARB,#function
+ .globl glVertexAttrib2fvARB ; .type glVertexAttrib2fvARB,#function
+ .globl glVertexAttrib2sARB ; .type glVertexAttrib2sARB,#function
+ .globl glVertexAttrib2svARB ; .type glVertexAttrib2svARB,#function
+ .globl glVertexAttrib3dARB ; .type glVertexAttrib3dARB,#function
+ .globl glVertexAttrib3dvARB ; .type glVertexAttrib3dvARB,#function
+ .globl glVertexAttrib3fARB ; .type glVertexAttrib3fARB,#function
+ .globl glVertexAttrib3fvARB ; .type glVertexAttrib3fvARB,#function
+ .globl glVertexAttrib3sARB ; .type glVertexAttrib3sARB,#function
+ .globl glVertexAttrib3svARB ; .type glVertexAttrib3svARB,#function
+ .globl glVertexAttrib4NbvARB ; .type glVertexAttrib4NbvARB,#function
+ .globl glVertexAttrib4NivARB ; .type glVertexAttrib4NivARB,#function
+ .globl glVertexAttrib4NsvARB ; .type glVertexAttrib4NsvARB,#function
+ .globl glVertexAttrib4NubARB ; .type glVertexAttrib4NubARB,#function
+ .globl glVertexAttrib4NubvARB ; .type glVertexAttrib4NubvARB,#function
+ .globl glVertexAttrib4NuivARB ; .type glVertexAttrib4NuivARB,#function
+ .globl glVertexAttrib4NusvARB ; .type glVertexAttrib4NusvARB,#function
+ .globl glVertexAttrib4bvARB ; .type glVertexAttrib4bvARB,#function
+ .globl glVertexAttrib4dARB ; .type glVertexAttrib4dARB,#function
+ .globl glVertexAttrib4dvARB ; .type glVertexAttrib4dvARB,#function
+ .globl glVertexAttrib4fARB ; .type glVertexAttrib4fARB,#function
+ .globl glVertexAttrib4fvARB ; .type glVertexAttrib4fvARB,#function
+ .globl glVertexAttrib4ivARB ; .type glVertexAttrib4ivARB,#function
+ .globl glVertexAttrib4sARB ; .type glVertexAttrib4sARB,#function
+ .globl glVertexAttrib4svARB ; .type glVertexAttrib4svARB,#function
+ .globl glVertexAttrib4ubvARB ; .type glVertexAttrib4ubvARB,#function
+ .globl glVertexAttrib4uivARB ; .type glVertexAttrib4uivARB,#function
+ .globl glVertexAttrib4usvARB ; .type glVertexAttrib4usvARB,#function
+ .globl glVertexAttribPointerARB ; .type glVertexAttribPointerARB,#function
+ .globl glBindBufferARB ; .type glBindBufferARB,#function
+ .globl glBufferDataARB ; .type glBufferDataARB,#function
+ .globl glBufferSubDataARB ; .type glBufferSubDataARB,#function
+ .globl glDeleteBuffersARB ; .type glDeleteBuffersARB,#function
+ .globl glGenBuffersARB ; .type glGenBuffersARB,#function
+ .globl glGetBufferParameterivARB ; .type glGetBufferParameterivARB,#function
+ .globl glGetBufferPointervARB ; .type glGetBufferPointervARB,#function
+ .globl glGetBufferSubDataARB ; .type glGetBufferSubDataARB,#function
+ .globl glIsBufferARB ; .type glIsBufferARB,#function
+ .globl glMapBufferARB ; .type glMapBufferARB,#function
+ .globl glUnmapBufferARB ; .type glUnmapBufferARB,#function
+ .globl glBeginQueryARB ; .type glBeginQueryARB,#function
+ .globl glDeleteQueriesARB ; .type glDeleteQueriesARB,#function
+ .globl glEndQueryARB ; .type glEndQueryARB,#function
+ .globl glGenQueriesARB ; .type glGenQueriesARB,#function
+ .globl glGetQueryObjectivARB ; .type glGetQueryObjectivARB,#function
+ .globl glGetQueryObjectuivARB ; .type glGetQueryObjectuivARB,#function
+ .globl glGetQueryivARB ; .type glGetQueryivARB,#function
+ .globl glIsQueryARB ; .type glIsQueryARB,#function
+ .globl glAttachObjectARB ; .type glAttachObjectARB,#function
+ .globl glCompileShaderARB ; .type glCompileShaderARB,#function
+ .globl glCreateProgramObjectARB ; .type glCreateProgramObjectARB,#function
+ .globl glCreateShaderObjectARB ; .type glCreateShaderObjectARB,#function
+ .globl glDeleteObjectARB ; .type glDeleteObjectARB,#function
+ .globl glDetachObjectARB ; .type glDetachObjectARB,#function
+ .globl glGetActiveUniformARB ; .type glGetActiveUniformARB,#function
+ .globl glGetAttachedObjectsARB ; .type glGetAttachedObjectsARB,#function
+ .globl glGetHandleARB ; .type glGetHandleARB,#function
+ .globl glGetInfoLogARB ; .type glGetInfoLogARB,#function
+ .globl glGetObjectParameterfvARB ; .type glGetObjectParameterfvARB,#function
+ .globl glGetObjectParameterivARB ; .type glGetObjectParameterivARB,#function
+ .globl glGetShaderSourceARB ; .type glGetShaderSourceARB,#function
+ .globl glGetUniformLocationARB ; .type glGetUniformLocationARB,#function
+ .globl glGetUniformfvARB ; .type glGetUniformfvARB,#function
+ .globl glGetUniformivARB ; .type glGetUniformivARB,#function
+ .globl glLinkProgramARB ; .type glLinkProgramARB,#function
+ .globl glShaderSourceARB ; .type glShaderSourceARB,#function
+ .globl glUniform1fARB ; .type glUniform1fARB,#function
+ .globl glUniform1fvARB ; .type glUniform1fvARB,#function
+ .globl glUniform1iARB ; .type glUniform1iARB,#function
+ .globl glUniform1ivARB ; .type glUniform1ivARB,#function
+ .globl glUniform2fARB ; .type glUniform2fARB,#function
+ .globl glUniform2fvARB ; .type glUniform2fvARB,#function
+ .globl glUniform2iARB ; .type glUniform2iARB,#function
+ .globl glUniform2ivARB ; .type glUniform2ivARB,#function
+ .globl glUniform3fARB ; .type glUniform3fARB,#function
+ .globl glUniform3fvARB ; .type glUniform3fvARB,#function
+ .globl glUniform3iARB ; .type glUniform3iARB,#function
+ .globl glUniform3ivARB ; .type glUniform3ivARB,#function
+ .globl glUniform4fARB ; .type glUniform4fARB,#function
+ .globl glUniform4fvARB ; .type glUniform4fvARB,#function
+ .globl glUniform4iARB ; .type glUniform4iARB,#function
+ .globl glUniform4ivARB ; .type glUniform4ivARB,#function
+ .globl glUniformMatrix2fvARB ; .type glUniformMatrix2fvARB,#function
+ .globl glUniformMatrix3fvARB ; .type glUniformMatrix3fvARB,#function
+ .globl glUniformMatrix4fvARB ; .type glUniformMatrix4fvARB,#function
+ .globl glUseProgramObjectARB ; .type glUseProgramObjectARB,#function
+ .globl glValidateProgramARB ; .type glValidateProgramARB,#function
+ .globl glBindAttribLocationARB ; .type glBindAttribLocationARB,#function
+ .globl glGetActiveAttribARB ; .type glGetActiveAttribARB,#function
+ .globl glGetAttribLocationARB ; .type glGetAttribLocationARB,#function
+ .globl glDrawBuffersARB ; .type glDrawBuffersARB,#function
+ .globl glPolygonOffsetEXT ; .type glPolygonOffsetEXT,#function
+ .globl gl_dispatch_stub_543 ; .type gl_dispatch_stub_543,#function
+ .globl gl_dispatch_stub_544 ; .type gl_dispatch_stub_544,#function
+ .globl gl_dispatch_stub_545 ; .type gl_dispatch_stub_545,#function
+ .globl gl_dispatch_stub_546 ; .type gl_dispatch_stub_546,#function
+ .globl gl_dispatch_stub_547 ; .type gl_dispatch_stub_547,#function
+ .globl gl_dispatch_stub_548 ; .type gl_dispatch_stub_548,#function
+ .globl gl_dispatch_stub_549 ; .type gl_dispatch_stub_549,#function
+ .globl gl_dispatch_stub_550 ; .type gl_dispatch_stub_550,#function
+ .globl gl_dispatch_stub_551 ; .type gl_dispatch_stub_551,#function
+ .globl gl_dispatch_stub_552 ; .type gl_dispatch_stub_552,#function
+ .globl gl_dispatch_stub_553 ; .type gl_dispatch_stub_553,#function
+ .globl gl_dispatch_stub_554 ; .type gl_dispatch_stub_554,#function
+ .globl gl_dispatch_stub_555 ; .type gl_dispatch_stub_555,#function
+ .globl gl_dispatch_stub_556 ; .type gl_dispatch_stub_556,#function
+ .globl gl_dispatch_stub_557 ; .type gl_dispatch_stub_557,#function
+ .globl gl_dispatch_stub_558 ; .type gl_dispatch_stub_558,#function
+ .globl gl_dispatch_stub_559 ; .type gl_dispatch_stub_559,#function
+ .globl gl_dispatch_stub_560 ; .type gl_dispatch_stub_560,#function
+ .globl gl_dispatch_stub_561 ; .type gl_dispatch_stub_561,#function
+ .globl glAreTexturesResidentEXT ; .type glAreTexturesResidentEXT,#function
+ .globl glGenTexturesEXT ; .type glGenTexturesEXT,#function
+ .globl glIsTextureEXT ; .type glIsTextureEXT,#function
+ .globl gl_dispatch_stub_565 ; .type gl_dispatch_stub_565,#function
+ .globl gl_dispatch_stub_566 ; .type gl_dispatch_stub_566,#function
+ .globl glColorPointerEXT ; .type glColorPointerEXT,#function
+ .globl glEdgeFlagPointerEXT ; .type glEdgeFlagPointerEXT,#function
+ .globl glIndexPointerEXT ; .type glIndexPointerEXT,#function
+ .globl glNormalPointerEXT ; .type glNormalPointerEXT,#function
+ .globl glTexCoordPointerEXT ; .type glTexCoordPointerEXT,#function
+ .globl glVertexPointerEXT ; .type glVertexPointerEXT,#function
+ .globl glPointParameterfEXT ; .type glPointParameterfEXT,#function
+ .globl glPointParameterfvEXT ; .type glPointParameterfvEXT,#function
+ .globl glLockArraysEXT ; .type glLockArraysEXT,#function
+ .globl glUnlockArraysEXT ; .type glUnlockArraysEXT,#function
+ .globl gl_dispatch_stub_577 ; .type gl_dispatch_stub_577,#function
+ .globl gl_dispatch_stub_578 ; .type gl_dispatch_stub_578,#function
+ .globl glSecondaryColor3bEXT ; .type glSecondaryColor3bEXT,#function
+ .globl glSecondaryColor3bvEXT ; .type glSecondaryColor3bvEXT,#function
+ .globl glSecondaryColor3dEXT ; .type glSecondaryColor3dEXT,#function
+ .globl glSecondaryColor3dvEXT ; .type glSecondaryColor3dvEXT,#function
+ .globl glSecondaryColor3fEXT ; .type glSecondaryColor3fEXT,#function
+ .globl glSecondaryColor3fvEXT ; .type glSecondaryColor3fvEXT,#function
+ .globl glSecondaryColor3iEXT ; .type glSecondaryColor3iEXT,#function
+ .globl glSecondaryColor3ivEXT ; .type glSecondaryColor3ivEXT,#function
+ .globl glSecondaryColor3sEXT ; .type glSecondaryColor3sEXT,#function
+ .globl glSecondaryColor3svEXT ; .type glSecondaryColor3svEXT,#function
+ .globl glSecondaryColor3ubEXT ; .type glSecondaryColor3ubEXT,#function
+ .globl glSecondaryColor3ubvEXT ; .type glSecondaryColor3ubvEXT,#function
+ .globl glSecondaryColor3uiEXT ; .type glSecondaryColor3uiEXT,#function
+ .globl glSecondaryColor3uivEXT ; .type glSecondaryColor3uivEXT,#function
+ .globl glSecondaryColor3usEXT ; .type glSecondaryColor3usEXT,#function
+ .globl glSecondaryColor3usvEXT ; .type glSecondaryColor3usvEXT,#function
+ .globl glSecondaryColorPointerEXT ; .type glSecondaryColorPointerEXT,#function
+ .globl glMultiDrawArraysEXT ; .type glMultiDrawArraysEXT,#function
+ .globl glMultiDrawElementsEXT ; .type glMultiDrawElementsEXT,#function
+ .globl glFogCoordPointerEXT ; .type glFogCoordPointerEXT,#function
+ .globl glFogCoorddEXT ; .type glFogCoorddEXT,#function
+ .globl glFogCoorddvEXT ; .type glFogCoorddvEXT,#function
+ .globl glFogCoordfEXT ; .type glFogCoordfEXT,#function
+ .globl glFogCoordfvEXT ; .type glFogCoordfvEXT,#function
+ .globl gl_dispatch_stub_603 ; .type gl_dispatch_stub_603,#function
+ .globl glBlendFuncSeparateEXT ; .type glBlendFuncSeparateEXT,#function
+ .globl glFlushVertexArrayRangeNV ; .type glFlushVertexArrayRangeNV,#function
+ .globl glVertexArrayRangeNV ; .type glVertexArrayRangeNV,#function
+ .globl glCombinerInputNV ; .type glCombinerInputNV,#function
+ .globl glCombinerOutputNV ; .type glCombinerOutputNV,#function
+ .globl glCombinerParameterfNV ; .type glCombinerParameterfNV,#function
+ .globl glCombinerParameterfvNV ; .type glCombinerParameterfvNV,#function
+ .globl glCombinerParameteriNV ; .type glCombinerParameteriNV,#function
+ .globl glCombinerParameterivNV ; .type glCombinerParameterivNV,#function
+ .globl glFinalCombinerInputNV ; .type glFinalCombinerInputNV,#function
+ .globl glGetCombinerInputParameterfvNV ; .type glGetCombinerInputParameterfvNV,#function
+ .globl glGetCombinerInputParameterivNV ; .type glGetCombinerInputParameterivNV,#function
+ .globl glGetCombinerOutputParameterfvNV ; .type glGetCombinerOutputParameterfvNV,#function
+ .globl glGetCombinerOutputParameterivNV ; .type glGetCombinerOutputParameterivNV,#function
+ .globl glGetFinalCombinerInputParameterfvNV ; .type glGetFinalCombinerInputParameterfvNV,#function
+ .globl glGetFinalCombinerInputParameterivNV ; .type glGetFinalCombinerInputParameterivNV,#function
+ .globl glResizeBuffersMESA ; .type glResizeBuffersMESA,#function
+ .globl glWindowPos2dMESA ; .type glWindowPos2dMESA,#function
+ .globl glWindowPos2dvMESA ; .type glWindowPos2dvMESA,#function
+ .globl glWindowPos2fMESA ; .type glWindowPos2fMESA,#function
+ .globl glWindowPos2fvMESA ; .type glWindowPos2fvMESA,#function
+ .globl glWindowPos2iMESA ; .type glWindowPos2iMESA,#function
+ .globl glWindowPos2ivMESA ; .type glWindowPos2ivMESA,#function
+ .globl glWindowPos2sMESA ; .type glWindowPos2sMESA,#function
+ .globl glWindowPos2svMESA ; .type glWindowPos2svMESA,#function
+ .globl glWindowPos3dMESA ; .type glWindowPos3dMESA,#function
+ .globl glWindowPos3dvMESA ; .type glWindowPos3dvMESA,#function
+ .globl glWindowPos3fMESA ; .type glWindowPos3fMESA,#function
+ .globl glWindowPos3fvMESA ; .type glWindowPos3fvMESA,#function
+ .globl glWindowPos3iMESA ; .type glWindowPos3iMESA,#function
+ .globl glWindowPos3ivMESA ; .type glWindowPos3ivMESA,#function
+ .globl glWindowPos3sMESA ; .type glWindowPos3sMESA,#function
+ .globl glWindowPos3svMESA ; .type glWindowPos3svMESA,#function
+ .globl glWindowPos4dMESA ; .type glWindowPos4dMESA,#function
+ .globl glWindowPos4dvMESA ; .type glWindowPos4dvMESA,#function
+ .globl glWindowPos4fMESA ; .type glWindowPos4fMESA,#function
+ .globl glWindowPos4fvMESA ; .type glWindowPos4fvMESA,#function
+ .globl glWindowPos4iMESA ; .type glWindowPos4iMESA,#function
+ .globl glWindowPos4ivMESA ; .type glWindowPos4ivMESA,#function
+ .globl glWindowPos4sMESA ; .type glWindowPos4sMESA,#function
+ .globl glWindowPos4svMESA ; .type glWindowPos4svMESA,#function
+ .globl gl_dispatch_stub_645 ; .type gl_dispatch_stub_645,#function
+ .globl gl_dispatch_stub_646 ; .type gl_dispatch_stub_646,#function
+ .globl gl_dispatch_stub_647 ; .type gl_dispatch_stub_647,#function
+ .globl gl_dispatch_stub_648 ; .type gl_dispatch_stub_648,#function
+ .globl gl_dispatch_stub_649 ; .type gl_dispatch_stub_649,#function
+ .globl gl_dispatch_stub_650 ; .type gl_dispatch_stub_650,#function
+ .globl gl_dispatch_stub_651 ; .type gl_dispatch_stub_651,#function
+ .globl gl_dispatch_stub_652 ; .type gl_dispatch_stub_652,#function
+ .globl gl_dispatch_stub_653 ; .type gl_dispatch_stub_653,#function
+ .globl glAreProgramsResidentNV ; .type glAreProgramsResidentNV,#function
+ .globl glBindProgramNV ; .type glBindProgramNV,#function
+ .globl glDeleteProgramsNV ; .type glDeleteProgramsNV,#function
+ .globl glExecuteProgramNV ; .type glExecuteProgramNV,#function
+ .globl glGenProgramsNV ; .type glGenProgramsNV,#function
+ .globl glGetProgramParameterdvNV ; .type glGetProgramParameterdvNV,#function
+ .globl glGetProgramParameterfvNV ; .type glGetProgramParameterfvNV,#function
+ .globl glGetProgramStringNV ; .type glGetProgramStringNV,#function
+ .globl glGetProgramivNV ; .type glGetProgramivNV,#function
+ .globl glGetTrackMatrixivNV ; .type glGetTrackMatrixivNV,#function
+ .globl glGetVertexAttribPointervNV ; .type glGetVertexAttribPointervNV,#function
+ .globl glGetVertexAttribdvNV ; .type glGetVertexAttribdvNV,#function
+ .globl glGetVertexAttribfvNV ; .type glGetVertexAttribfvNV,#function
+ .globl glGetVertexAttribivNV ; .type glGetVertexAttribivNV,#function
+ .globl glIsProgramNV ; .type glIsProgramNV,#function
+ .globl glLoadProgramNV ; .type glLoadProgramNV,#function
+ .globl glProgramParameter4dNV ; .type glProgramParameter4dNV,#function
+ .globl glProgramParameter4dvNV ; .type glProgramParameter4dvNV,#function
+ .globl glProgramParameter4fNV ; .type glProgramParameter4fNV,#function
+ .globl glProgramParameter4fvNV ; .type glProgramParameter4fvNV,#function
+ .globl glProgramParameters4dvNV ; .type glProgramParameters4dvNV,#function
+ .globl glProgramParameters4fvNV ; .type glProgramParameters4fvNV,#function
+ .globl glRequestResidentProgramsNV ; .type glRequestResidentProgramsNV,#function
+ .globl glTrackMatrixNV ; .type glTrackMatrixNV,#function
+ .globl glVertexAttrib1dNV ; .type glVertexAttrib1dNV,#function
+ .globl glVertexAttrib1dvNV ; .type glVertexAttrib1dvNV,#function
+ .globl glVertexAttrib1fNV ; .type glVertexAttrib1fNV,#function
+ .globl glVertexAttrib1fvNV ; .type glVertexAttrib1fvNV,#function
+ .globl glVertexAttrib1sNV ; .type glVertexAttrib1sNV,#function
+ .globl glVertexAttrib1svNV ; .type glVertexAttrib1svNV,#function
+ .globl glVertexAttrib2dNV ; .type glVertexAttrib2dNV,#function
+ .globl glVertexAttrib2dvNV ; .type glVertexAttrib2dvNV,#function
+ .globl glVertexAttrib2fNV ; .type glVertexAttrib2fNV,#function
+ .globl glVertexAttrib2fvNV ; .type glVertexAttrib2fvNV,#function
+ .globl glVertexAttrib2sNV ; .type glVertexAttrib2sNV,#function
+ .globl glVertexAttrib2svNV ; .type glVertexAttrib2svNV,#function
+ .globl glVertexAttrib3dNV ; .type glVertexAttrib3dNV,#function
+ .globl glVertexAttrib3dvNV ; .type glVertexAttrib3dvNV,#function
+ .globl glVertexAttrib3fNV ; .type glVertexAttrib3fNV,#function
+ .globl glVertexAttrib3fvNV ; .type glVertexAttrib3fvNV,#function
+ .globl glVertexAttrib3sNV ; .type glVertexAttrib3sNV,#function
+ .globl glVertexAttrib3svNV ; .type glVertexAttrib3svNV,#function
+ .globl glVertexAttrib4dNV ; .type glVertexAttrib4dNV,#function
+ .globl glVertexAttrib4dvNV ; .type glVertexAttrib4dvNV,#function
+ .globl glVertexAttrib4fNV ; .type glVertexAttrib4fNV,#function
+ .globl glVertexAttrib4fvNV ; .type glVertexAttrib4fvNV,#function
+ .globl glVertexAttrib4sNV ; .type glVertexAttrib4sNV,#function
+ .globl glVertexAttrib4svNV ; .type glVertexAttrib4svNV,#function
+ .globl glVertexAttrib4ubNV ; .type glVertexAttrib4ubNV,#function
+ .globl glVertexAttrib4ubvNV ; .type glVertexAttrib4ubvNV,#function
+ .globl glVertexAttribPointerNV ; .type glVertexAttribPointerNV,#function
+ .globl glVertexAttribs1dvNV ; .type glVertexAttribs1dvNV,#function
+ .globl glVertexAttribs1fvNV ; .type glVertexAttribs1fvNV,#function
+ .globl glVertexAttribs1svNV ; .type glVertexAttribs1svNV,#function
+ .globl glVertexAttribs2dvNV ; .type glVertexAttribs2dvNV,#function
+ .globl glVertexAttribs2fvNV ; .type glVertexAttribs2fvNV,#function
+ .globl glVertexAttribs2svNV ; .type glVertexAttribs2svNV,#function
+ .globl glVertexAttribs3dvNV ; .type glVertexAttribs3dvNV,#function
+ .globl glVertexAttribs3fvNV ; .type glVertexAttribs3fvNV,#function
+ .globl glVertexAttribs3svNV ; .type glVertexAttribs3svNV,#function
+ .globl glVertexAttribs4dvNV ; .type glVertexAttribs4dvNV,#function
+ .globl glVertexAttribs4fvNV ; .type glVertexAttribs4fvNV,#function
+ .globl glVertexAttribs4svNV ; .type glVertexAttribs4svNV,#function
+ .globl glVertexAttribs4ubvNV ; .type glVertexAttribs4ubvNV,#function
+ .globl glAlphaFragmentOp1ATI ; .type glAlphaFragmentOp1ATI,#function
+ .globl glAlphaFragmentOp2ATI ; .type glAlphaFragmentOp2ATI,#function
+ .globl glAlphaFragmentOp3ATI ; .type glAlphaFragmentOp3ATI,#function
+ .globl glBeginFragmentShaderATI ; .type glBeginFragmentShaderATI,#function
+ .globl glBindFragmentShaderATI ; .type glBindFragmentShaderATI,#function
+ .globl glColorFragmentOp1ATI ; .type glColorFragmentOp1ATI,#function
+ .globl glColorFragmentOp2ATI ; .type glColorFragmentOp2ATI,#function
+ .globl glColorFragmentOp3ATI ; .type glColorFragmentOp3ATI,#function
+ .globl glDeleteFragmentShaderATI ; .type glDeleteFragmentShaderATI,#function
+ .globl glEndFragmentShaderATI ; .type glEndFragmentShaderATI,#function
+ .globl glGenFragmentShadersATI ; .type glGenFragmentShadersATI,#function
+ .globl glPassTexCoordATI ; .type glPassTexCoordATI,#function
+ .globl glSampleMapATI ; .type glSampleMapATI,#function
+ .globl glSetFragmentShaderConstantATI ; .type glSetFragmentShaderConstantATI,#function
+ .globl glPointParameteriNV ; .type glPointParameteriNV,#function
+ .globl glPointParameterivNV ; .type glPointParameterivNV,#function
+ .globl gl_dispatch_stub_734 ; .type gl_dispatch_stub_734,#function
+ .globl gl_dispatch_stub_735 ; .type gl_dispatch_stub_735,#function
+ .globl gl_dispatch_stub_736 ; .type gl_dispatch_stub_736,#function
+ .globl gl_dispatch_stub_737 ; .type gl_dispatch_stub_737,#function
+ .globl gl_dispatch_stub_738 ; .type gl_dispatch_stub_738,#function
+ .globl glGetProgramNamedParameterdvNV ; .type glGetProgramNamedParameterdvNV,#function
+ .globl glGetProgramNamedParameterfvNV ; .type glGetProgramNamedParameterfvNV,#function
+ .globl glProgramNamedParameter4dNV ; .type glProgramNamedParameter4dNV,#function
+ .globl glProgramNamedParameter4dvNV ; .type glProgramNamedParameter4dvNV,#function
+ .globl glProgramNamedParameter4fNV ; .type glProgramNamedParameter4fNV,#function
+ .globl glProgramNamedParameter4fvNV ; .type glProgramNamedParameter4fvNV,#function
+ .globl gl_dispatch_stub_745 ; .type gl_dispatch_stub_745,#function
+ .globl gl_dispatch_stub_746 ; .type gl_dispatch_stub_746,#function
+ .globl glBindFramebufferEXT ; .type glBindFramebufferEXT,#function
+ .globl glBindRenderbufferEXT ; .type glBindRenderbufferEXT,#function
+ .globl glCheckFramebufferStatusEXT ; .type glCheckFramebufferStatusEXT,#function
+ .globl glDeleteFramebuffersEXT ; .type glDeleteFramebuffersEXT,#function
+ .globl glDeleteRenderbuffersEXT ; .type glDeleteRenderbuffersEXT,#function
+ .globl glFramebufferRenderbufferEXT ; .type glFramebufferRenderbufferEXT,#function
+ .globl glFramebufferTexture1DEXT ; .type glFramebufferTexture1DEXT,#function
+ .globl glFramebufferTexture2DEXT ; .type glFramebufferTexture2DEXT,#function
+ .globl glFramebufferTexture3DEXT ; .type glFramebufferTexture3DEXT,#function
+ .globl glGenFramebuffersEXT ; .type glGenFramebuffersEXT,#function
+ .globl glGenRenderbuffersEXT ; .type glGenRenderbuffersEXT,#function
+ .globl glGenerateMipmapEXT ; .type glGenerateMipmapEXT,#function
+ .globl glGetFramebufferAttachmentParameterivEXT ; .type glGetFramebufferAttachmentParameterivEXT,#function
+ .globl gl_dispatch_stub_760 ; .type gl_dispatch_stub_760,#function
+ .globl gl_dispatch_stub_761 ; .type gl_dispatch_stub_761,#function
+ .globl glGetRenderbufferParameterivEXT ; .type glGetRenderbufferParameterivEXT,#function
+ .globl glIsFramebufferEXT ; .type glIsFramebufferEXT,#function
+ .globl glIsRenderbufferEXT ; .type glIsRenderbufferEXT,#function
+ .globl glRenderbufferStorageEXT ; .type glRenderbufferStorageEXT,#function
+ .globl gl_dispatch_stub_766 ; .type gl_dispatch_stub_766,#function
+ .globl gl_dispatch_stub_767 ; .type gl_dispatch_stub_767,#function
+ .globl gl_dispatch_stub_768 ; .type gl_dispatch_stub_768,#function
+ .globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function
+_mesa_sparc_glapi_begin:
+
+ GL_STUB(glNewList, _gloffset_NewList)
+ GL_STUB(glEndList, _gloffset_EndList)
+ GL_STUB(glCallList, _gloffset_CallList)
+ GL_STUB(glCallLists, _gloffset_CallLists)
+ GL_STUB(glDeleteLists, _gloffset_DeleteLists)
+ GL_STUB(glGenLists, _gloffset_GenLists)
+ GL_STUB(glListBase, _gloffset_ListBase)
+ GL_STUB(glBegin, _gloffset_Begin)
+ GL_STUB(glBitmap, _gloffset_Bitmap)
+ GL_STUB(glColor3b, _gloffset_Color3b)
+ GL_STUB(glColor3bv, _gloffset_Color3bv)
+ GL_STUB(glColor3d, _gloffset_Color3d)
+ GL_STUB(glColor3dv, _gloffset_Color3dv)
+ GL_STUB(glColor3f, _gloffset_Color3f)
+ GL_STUB(glColor3fv, _gloffset_Color3fv)
+ GL_STUB(glColor3i, _gloffset_Color3i)
+ GL_STUB(glColor3iv, _gloffset_Color3iv)
+ GL_STUB(glColor3s, _gloffset_Color3s)
+ GL_STUB(glColor3sv, _gloffset_Color3sv)
+ GL_STUB(glColor3ub, _gloffset_Color3ub)
+ GL_STUB(glColor3ubv, _gloffset_Color3ubv)
+ GL_STUB(glColor3ui, _gloffset_Color3ui)
+ GL_STUB(glColor3uiv, _gloffset_Color3uiv)
+ GL_STUB(glColor3us, _gloffset_Color3us)
+ GL_STUB(glColor3usv, _gloffset_Color3usv)
+ GL_STUB(glColor4b, _gloffset_Color4b)
+ GL_STUB(glColor4bv, _gloffset_Color4bv)
+ GL_STUB(glColor4d, _gloffset_Color4d)
+ GL_STUB(glColor4dv, _gloffset_Color4dv)
+ GL_STUB(glColor4f, _gloffset_Color4f)
+ GL_STUB(glColor4fv, _gloffset_Color4fv)
+ GL_STUB(glColor4i, _gloffset_Color4i)
+ GL_STUB(glColor4iv, _gloffset_Color4iv)
+ GL_STUB(glColor4s, _gloffset_Color4s)
+ GL_STUB(glColor4sv, _gloffset_Color4sv)
+ GL_STUB(glColor4ub, _gloffset_Color4ub)
+ GL_STUB(glColor4ubv, _gloffset_Color4ubv)
+ GL_STUB(glColor4ui, _gloffset_Color4ui)
+ GL_STUB(glColor4uiv, _gloffset_Color4uiv)
+ GL_STUB(glColor4us, _gloffset_Color4us)
+ GL_STUB(glColor4usv, _gloffset_Color4usv)
+ GL_STUB(glEdgeFlag, _gloffset_EdgeFlag)
+ GL_STUB(glEdgeFlagv, _gloffset_EdgeFlagv)
+ GL_STUB(glEnd, _gloffset_End)
+ GL_STUB(glIndexd, _gloffset_Indexd)
+ GL_STUB(glIndexdv, _gloffset_Indexdv)
+ GL_STUB(glIndexf, _gloffset_Indexf)
+ GL_STUB(glIndexfv, _gloffset_Indexfv)
+ GL_STUB(glIndexi, _gloffset_Indexi)
+ GL_STUB(glIndexiv, _gloffset_Indexiv)
+ GL_STUB(glIndexs, _gloffset_Indexs)
+ GL_STUB(glIndexsv, _gloffset_Indexsv)
+ GL_STUB(glNormal3b, _gloffset_Normal3b)
+ GL_STUB(glNormal3bv, _gloffset_Normal3bv)
+ GL_STUB(glNormal3d, _gloffset_Normal3d)
+ GL_STUB(glNormal3dv, _gloffset_Normal3dv)
+ GL_STUB(glNormal3f, _gloffset_Normal3f)
+ GL_STUB(glNormal3fv, _gloffset_Normal3fv)
+ GL_STUB(glNormal3i, _gloffset_Normal3i)
+ GL_STUB(glNormal3iv, _gloffset_Normal3iv)
+ GL_STUB(glNormal3s, _gloffset_Normal3s)
+ GL_STUB(glNormal3sv, _gloffset_Normal3sv)
+ GL_STUB(glRasterPos2d, _gloffset_RasterPos2d)
+ GL_STUB(glRasterPos2dv, _gloffset_RasterPos2dv)
+ GL_STUB(glRasterPos2f, _gloffset_RasterPos2f)
+ GL_STUB(glRasterPos2fv, _gloffset_RasterPos2fv)
+ GL_STUB(glRasterPos2i, _gloffset_RasterPos2i)
+ GL_STUB(glRasterPos2iv, _gloffset_RasterPos2iv)
+ GL_STUB(glRasterPos2s, _gloffset_RasterPos2s)
+ GL_STUB(glRasterPos2sv, _gloffset_RasterPos2sv)
+ GL_STUB(glRasterPos3d, _gloffset_RasterPos3d)
+ GL_STUB(glRasterPos3dv, _gloffset_RasterPos3dv)
+ GL_STUB(glRasterPos3f, _gloffset_RasterPos3f)
+ GL_STUB(glRasterPos3fv, _gloffset_RasterPos3fv)
+ GL_STUB(glRasterPos3i, _gloffset_RasterPos3i)
+ GL_STUB(glRasterPos3iv, _gloffset_RasterPos3iv)
+ GL_STUB(glRasterPos3s, _gloffset_RasterPos3s)
+ GL_STUB(glRasterPos3sv, _gloffset_RasterPos3sv)
+ GL_STUB(glRasterPos4d, _gloffset_RasterPos4d)
+ GL_STUB(glRasterPos4dv, _gloffset_RasterPos4dv)
+ GL_STUB(glRasterPos4f, _gloffset_RasterPos4f)
+ GL_STUB(glRasterPos4fv, _gloffset_RasterPos4fv)
+ GL_STUB(glRasterPos4i, _gloffset_RasterPos4i)
+ GL_STUB(glRasterPos4iv, _gloffset_RasterPos4iv)
+ GL_STUB(glRasterPos4s, _gloffset_RasterPos4s)
+ GL_STUB(glRasterPos4sv, _gloffset_RasterPos4sv)
+ GL_STUB(glRectd, _gloffset_Rectd)
+ GL_STUB(glRectdv, _gloffset_Rectdv)
+ GL_STUB(glRectf, _gloffset_Rectf)
+ GL_STUB(glRectfv, _gloffset_Rectfv)
+ GL_STUB(glRecti, _gloffset_Recti)
+ GL_STUB(glRectiv, _gloffset_Rectiv)
+ GL_STUB(glRects, _gloffset_Rects)
+ GL_STUB(glRectsv, _gloffset_Rectsv)
+ GL_STUB(glTexCoord1d, _gloffset_TexCoord1d)
+ GL_STUB(glTexCoord1dv, _gloffset_TexCoord1dv)
+ GL_STUB(glTexCoord1f, _gloffset_TexCoord1f)
+ GL_STUB(glTexCoord1fv, _gloffset_TexCoord1fv)
+ GL_STUB(glTexCoord1i, _gloffset_TexCoord1i)
+ GL_STUB(glTexCoord1iv, _gloffset_TexCoord1iv)
+ GL_STUB(glTexCoord1s, _gloffset_TexCoord1s)
+ GL_STUB(glTexCoord1sv, _gloffset_TexCoord1sv)
+ GL_STUB(glTexCoord2d, _gloffset_TexCoord2d)
+ GL_STUB(glTexCoord2dv, _gloffset_TexCoord2dv)
+ GL_STUB(glTexCoord2f, _gloffset_TexCoord2f)
+ GL_STUB(glTexCoord2fv, _gloffset_TexCoord2fv)
+ GL_STUB(glTexCoord2i, _gloffset_TexCoord2i)
+ GL_STUB(glTexCoord2iv, _gloffset_TexCoord2iv)
+ GL_STUB(glTexCoord2s, _gloffset_TexCoord2s)
+ GL_STUB(glTexCoord2sv, _gloffset_TexCoord2sv)
+ GL_STUB(glTexCoord3d, _gloffset_TexCoord3d)
+ GL_STUB(glTexCoord3dv, _gloffset_TexCoord3dv)
+ GL_STUB(glTexCoord3f, _gloffset_TexCoord3f)
+ GL_STUB(glTexCoord3fv, _gloffset_TexCoord3fv)
+ GL_STUB(glTexCoord3i, _gloffset_TexCoord3i)
+ GL_STUB(glTexCoord3iv, _gloffset_TexCoord3iv)
+ GL_STUB(glTexCoord3s, _gloffset_TexCoord3s)
+ GL_STUB(glTexCoord3sv, _gloffset_TexCoord3sv)
+ GL_STUB(glTexCoord4d, _gloffset_TexCoord4d)
+ GL_STUB(glTexCoord4dv, _gloffset_TexCoord4dv)
+ GL_STUB(glTexCoord4f, _gloffset_TexCoord4f)
+ GL_STUB(glTexCoord4fv, _gloffset_TexCoord4fv)
+ GL_STUB(glTexCoord4i, _gloffset_TexCoord4i)
+ GL_STUB(glTexCoord4iv, _gloffset_TexCoord4iv)
+ GL_STUB(glTexCoord4s, _gloffset_TexCoord4s)
+ GL_STUB(glTexCoord4sv, _gloffset_TexCoord4sv)
+ GL_STUB(glVertex2d, _gloffset_Vertex2d)
+ GL_STUB(glVertex2dv, _gloffset_Vertex2dv)
+ GL_STUB(glVertex2f, _gloffset_Vertex2f)
+ GL_STUB(glVertex2fv, _gloffset_Vertex2fv)
+ GL_STUB(glVertex2i, _gloffset_Vertex2i)
+ GL_STUB(glVertex2iv, _gloffset_Vertex2iv)
+ GL_STUB(glVertex2s, _gloffset_Vertex2s)
+ GL_STUB(glVertex2sv, _gloffset_Vertex2sv)
+ GL_STUB(glVertex3d, _gloffset_Vertex3d)
+ GL_STUB(glVertex3dv, _gloffset_Vertex3dv)
+ GL_STUB(glVertex3f, _gloffset_Vertex3f)
+ GL_STUB(glVertex3fv, _gloffset_Vertex3fv)
+ GL_STUB(glVertex3i, _gloffset_Vertex3i)
+ GL_STUB(glVertex3iv, _gloffset_Vertex3iv)
+ GL_STUB(glVertex3s, _gloffset_Vertex3s)
+ GL_STUB(glVertex3sv, _gloffset_Vertex3sv)
+ GL_STUB(glVertex4d, _gloffset_Vertex4d)
+ GL_STUB(glVertex4dv, _gloffset_Vertex4dv)
+ GL_STUB(glVertex4f, _gloffset_Vertex4f)
+ GL_STUB(glVertex4fv, _gloffset_Vertex4fv)
+ GL_STUB(glVertex4i, _gloffset_Vertex4i)
+ GL_STUB(glVertex4iv, _gloffset_Vertex4iv)
+ GL_STUB(glVertex4s, _gloffset_Vertex4s)
+ GL_STUB(glVertex4sv, _gloffset_Vertex4sv)
+ GL_STUB(glClipPlane, _gloffset_ClipPlane)
+ GL_STUB(glColorMaterial, _gloffset_ColorMaterial)
+ GL_STUB(glCullFace, _gloffset_CullFace)
+ GL_STUB(glFogf, _gloffset_Fogf)
+ GL_STUB(glFogfv, _gloffset_Fogfv)
+ GL_STUB(glFogi, _gloffset_Fogi)
+ GL_STUB(glFogiv, _gloffset_Fogiv)
+ GL_STUB(glFrontFace, _gloffset_FrontFace)
+ GL_STUB(glHint, _gloffset_Hint)
+ GL_STUB(glLightf, _gloffset_Lightf)
+ GL_STUB(glLightfv, _gloffset_Lightfv)
+ GL_STUB(glLighti, _gloffset_Lighti)
+ GL_STUB(glLightiv, _gloffset_Lightiv)
+ GL_STUB(glLightModelf, _gloffset_LightModelf)
+ GL_STUB(glLightModelfv, _gloffset_LightModelfv)
+ GL_STUB(glLightModeli, _gloffset_LightModeli)
+ GL_STUB(glLightModeliv, _gloffset_LightModeliv)
+ GL_STUB(glLineStipple, _gloffset_LineStipple)
+ GL_STUB(glLineWidth, _gloffset_LineWidth)
+ GL_STUB(glMaterialf, _gloffset_Materialf)
+ GL_STUB(glMaterialfv, _gloffset_Materialfv)
+ GL_STUB(glMateriali, _gloffset_Materiali)
+ GL_STUB(glMaterialiv, _gloffset_Materialiv)
+ GL_STUB(glPointSize, _gloffset_PointSize)
+ GL_STUB(glPolygonMode, _gloffset_PolygonMode)
+ GL_STUB(glPolygonStipple, _gloffset_PolygonStipple)
+ GL_STUB(glScissor, _gloffset_Scissor)
+ GL_STUB(glShadeModel, _gloffset_ShadeModel)
+ GL_STUB(glTexParameterf, _gloffset_TexParameterf)
+ GL_STUB(glTexParameterfv, _gloffset_TexParameterfv)
+ GL_STUB(glTexParameteri, _gloffset_TexParameteri)
+ GL_STUB(glTexParameteriv, _gloffset_TexParameteriv)
+ GL_STUB(glTexImage1D, _gloffset_TexImage1D)
+ GL_STUB(glTexImage2D, _gloffset_TexImage2D)
+ GL_STUB(glTexEnvf, _gloffset_TexEnvf)
+ GL_STUB(glTexEnvfv, _gloffset_TexEnvfv)
+ GL_STUB(glTexEnvi, _gloffset_TexEnvi)
+ GL_STUB(glTexEnviv, _gloffset_TexEnviv)
+ GL_STUB(glTexGend, _gloffset_TexGend)
+ GL_STUB(glTexGendv, _gloffset_TexGendv)
+ GL_STUB(glTexGenf, _gloffset_TexGenf)
+ GL_STUB(glTexGenfv, _gloffset_TexGenfv)
+ GL_STUB(glTexGeni, _gloffset_TexGeni)
+ GL_STUB(glTexGeniv, _gloffset_TexGeniv)
+ GL_STUB(glFeedbackBuffer, _gloffset_FeedbackBuffer)
+ GL_STUB(glSelectBuffer, _gloffset_SelectBuffer)
+ GL_STUB(glRenderMode, _gloffset_RenderMode)
+ GL_STUB(glInitNames, _gloffset_InitNames)
+ GL_STUB(glLoadName, _gloffset_LoadName)
+ GL_STUB(glPassThrough, _gloffset_PassThrough)
+ GL_STUB(glPopName, _gloffset_PopName)
+ GL_STUB(glPushName, _gloffset_PushName)
+ GL_STUB(glDrawBuffer, _gloffset_DrawBuffer)
+ GL_STUB(glClear, _gloffset_Clear)
+ GL_STUB(glClearAccum, _gloffset_ClearAccum)
+ GL_STUB(glClearIndex, _gloffset_ClearIndex)
+ GL_STUB(glClearColor, _gloffset_ClearColor)
+ GL_STUB(glClearStencil, _gloffset_ClearStencil)
+ GL_STUB(glClearDepth, _gloffset_ClearDepth)
+ GL_STUB(glStencilMask, _gloffset_StencilMask)
+ GL_STUB(glColorMask, _gloffset_ColorMask)
+ GL_STUB(glDepthMask, _gloffset_DepthMask)
+ GL_STUB(glIndexMask, _gloffset_IndexMask)
+ GL_STUB(glAccum, _gloffset_Accum)
+ GL_STUB(glDisable, _gloffset_Disable)
+ GL_STUB(glEnable, _gloffset_Enable)
+ GL_STUB(glFinish, _gloffset_Finish)
+ GL_STUB(glFlush, _gloffset_Flush)
+ GL_STUB(glPopAttrib, _gloffset_PopAttrib)
+ GL_STUB(glPushAttrib, _gloffset_PushAttrib)
+ GL_STUB(glMap1d, _gloffset_Map1d)
+ GL_STUB(glMap1f, _gloffset_Map1f)
+ GL_STUB(glMap2d, _gloffset_Map2d)
+ GL_STUB(glMap2f, _gloffset_Map2f)
+ GL_STUB(glMapGrid1d, _gloffset_MapGrid1d)
+ GL_STUB(glMapGrid1f, _gloffset_MapGrid1f)
+ GL_STUB(glMapGrid2d, _gloffset_MapGrid2d)
+ GL_STUB(glMapGrid2f, _gloffset_MapGrid2f)
+ GL_STUB(glEvalCoord1d, _gloffset_EvalCoord1d)
+ GL_STUB(glEvalCoord1dv, _gloffset_EvalCoord1dv)
+ GL_STUB(glEvalCoord1f, _gloffset_EvalCoord1f)
+ GL_STUB(glEvalCoord1fv, _gloffset_EvalCoord1fv)
+ GL_STUB(glEvalCoord2d, _gloffset_EvalCoord2d)
+ GL_STUB(glEvalCoord2dv, _gloffset_EvalCoord2dv)
+ GL_STUB(glEvalCoord2f, _gloffset_EvalCoord2f)
+ GL_STUB(glEvalCoord2fv, _gloffset_EvalCoord2fv)
+ GL_STUB(glEvalMesh1, _gloffset_EvalMesh1)
+ GL_STUB(glEvalPoint1, _gloffset_EvalPoint1)
+ GL_STUB(glEvalMesh2, _gloffset_EvalMesh2)
+ GL_STUB(glEvalPoint2, _gloffset_EvalPoint2)
+ GL_STUB(glAlphaFunc, _gloffset_AlphaFunc)
+ GL_STUB(glBlendFunc, _gloffset_BlendFunc)
+ GL_STUB(glLogicOp, _gloffset_LogicOp)
+ GL_STUB(glStencilFunc, _gloffset_StencilFunc)
+ GL_STUB(glStencilOp, _gloffset_StencilOp)
+ GL_STUB(glDepthFunc, _gloffset_DepthFunc)
+ GL_STUB(glPixelZoom, _gloffset_PixelZoom)
+ GL_STUB(glPixelTransferf, _gloffset_PixelTransferf)
+ GL_STUB(glPixelTransferi, _gloffset_PixelTransferi)
+ GL_STUB(glPixelStoref, _gloffset_PixelStoref)
+ GL_STUB(glPixelStorei, _gloffset_PixelStorei)
+ GL_STUB(glPixelMapfv, _gloffset_PixelMapfv)
+ GL_STUB(glPixelMapuiv, _gloffset_PixelMapuiv)
+ GL_STUB(glPixelMapusv, _gloffset_PixelMapusv)
+ GL_STUB(glReadBuffer, _gloffset_ReadBuffer)
+ GL_STUB(glCopyPixels, _gloffset_CopyPixels)
+ GL_STUB(glReadPixels, _gloffset_ReadPixels)
+ GL_STUB(glDrawPixels, _gloffset_DrawPixels)
+ GL_STUB(glGetBooleanv, _gloffset_GetBooleanv)
+ GL_STUB(glGetClipPlane, _gloffset_GetClipPlane)
+ GL_STUB(glGetDoublev, _gloffset_GetDoublev)
+ GL_STUB(glGetError, _gloffset_GetError)
+ GL_STUB(glGetFloatv, _gloffset_GetFloatv)
+ GL_STUB(glGetIntegerv, _gloffset_GetIntegerv)
+ GL_STUB(glGetLightfv, _gloffset_GetLightfv)
+ GL_STUB(glGetLightiv, _gloffset_GetLightiv)
+ GL_STUB(glGetMapdv, _gloffset_GetMapdv)
+ GL_STUB(glGetMapfv, _gloffset_GetMapfv)
+ GL_STUB(glGetMapiv, _gloffset_GetMapiv)
+ GL_STUB(glGetMaterialfv, _gloffset_GetMaterialfv)
+ GL_STUB(glGetMaterialiv, _gloffset_GetMaterialiv)
+ GL_STUB(glGetPixelMapfv, _gloffset_GetPixelMapfv)
+ GL_STUB(glGetPixelMapuiv, _gloffset_GetPixelMapuiv)
+ GL_STUB(glGetPixelMapusv, _gloffset_GetPixelMapusv)
+ GL_STUB(glGetPolygonStipple, _gloffset_GetPolygonStipple)
+ GL_STUB(glGetString, _gloffset_GetString)
+ GL_STUB(glGetTexEnvfv, _gloffset_GetTexEnvfv)
+ GL_STUB(glGetTexEnviv, _gloffset_GetTexEnviv)
+ GL_STUB(glGetTexGendv, _gloffset_GetTexGendv)
+ GL_STUB(glGetTexGenfv, _gloffset_GetTexGenfv)
+ GL_STUB(glGetTexGeniv, _gloffset_GetTexGeniv)
+ GL_STUB(glGetTexImage, _gloffset_GetTexImage)
+ GL_STUB(glGetTexParameterfv, _gloffset_GetTexParameterfv)
+ GL_STUB(glGetTexParameteriv, _gloffset_GetTexParameteriv)
+ GL_STUB(glGetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv)
+ GL_STUB(glGetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv)
+ GL_STUB(glIsEnabled, _gloffset_IsEnabled)
+ GL_STUB(glIsList, _gloffset_IsList)
+ GL_STUB(glDepthRange, _gloffset_DepthRange)
+ GL_STUB(glFrustum, _gloffset_Frustum)
+ GL_STUB(glLoadIdentity, _gloffset_LoadIdentity)
+ GL_STUB(glLoadMatrixf, _gloffset_LoadMatrixf)
+ GL_STUB(glLoadMatrixd, _gloffset_LoadMatrixd)
+ GL_STUB(glMatrixMode, _gloffset_MatrixMode)
+ GL_STUB(glMultMatrixf, _gloffset_MultMatrixf)
+ GL_STUB(glMultMatrixd, _gloffset_MultMatrixd)
+ GL_STUB(glOrtho, _gloffset_Ortho)
+ GL_STUB(glPopMatrix, _gloffset_PopMatrix)
+ GL_STUB(glPushMatrix, _gloffset_PushMatrix)
+ GL_STUB(glRotated, _gloffset_Rotated)
+ GL_STUB(glRotatef, _gloffset_Rotatef)
+ GL_STUB(glScaled, _gloffset_Scaled)
+ GL_STUB(glScalef, _gloffset_Scalef)
+ GL_STUB(glTranslated, _gloffset_Translated)
+ GL_STUB(glTranslatef, _gloffset_Translatef)
+ GL_STUB(glViewport, _gloffset_Viewport)
+ GL_STUB(glArrayElement, _gloffset_ArrayElement)
+ GL_STUB(glBindTexture, _gloffset_BindTexture)
+ GL_STUB(glColorPointer, _gloffset_ColorPointer)
+ GL_STUB(glDisableClientState, _gloffset_DisableClientState)
+ GL_STUB(glDrawArrays, _gloffset_DrawArrays)
+ GL_STUB(glDrawElements, _gloffset_DrawElements)
+ GL_STUB(glEdgeFlagPointer, _gloffset_EdgeFlagPointer)
+ GL_STUB(glEnableClientState, _gloffset_EnableClientState)
+ GL_STUB(glIndexPointer, _gloffset_IndexPointer)
+ GL_STUB(glIndexub, _gloffset_Indexub)
+ GL_STUB(glIndexubv, _gloffset_Indexubv)
+ GL_STUB(glInterleavedArrays, _gloffset_InterleavedArrays)
+ GL_STUB(glNormalPointer, _gloffset_NormalPointer)
+ GL_STUB(glPolygonOffset, _gloffset_PolygonOffset)
+ GL_STUB(glTexCoordPointer, _gloffset_TexCoordPointer)
+ GL_STUB(glVertexPointer, _gloffset_VertexPointer)
+ GL_STUB(glAreTexturesResident, _gloffset_AreTexturesResident)
+ GL_STUB(glCopyTexImage1D, _gloffset_CopyTexImage1D)
+ GL_STUB(glCopyTexImage2D, _gloffset_CopyTexImage2D)
+ GL_STUB(glCopyTexSubImage1D, _gloffset_CopyTexSubImage1D)
+ GL_STUB(glCopyTexSubImage2D, _gloffset_CopyTexSubImage2D)
+ GL_STUB(glDeleteTextures, _gloffset_DeleteTextures)
+ GL_STUB(glGenTextures, _gloffset_GenTextures)
+ GL_STUB(glGetPointerv, _gloffset_GetPointerv)
+ GL_STUB(glIsTexture, _gloffset_IsTexture)
+ GL_STUB(glPrioritizeTextures, _gloffset_PrioritizeTextures)
+ GL_STUB(glTexSubImage1D, _gloffset_TexSubImage1D)
+ GL_STUB(glTexSubImage2D, _gloffset_TexSubImage2D)
+ GL_STUB(glPopClientAttrib, _gloffset_PopClientAttrib)
+ GL_STUB(glPushClientAttrib, _gloffset_PushClientAttrib)
+ GL_STUB(glBlendColor, _gloffset_BlendColor)
+ GL_STUB(glBlendEquation, _gloffset_BlendEquation)
+ GL_STUB(glDrawRangeElements, _gloffset_DrawRangeElements)
+ GL_STUB(glColorTable, _gloffset_ColorTable)
+ GL_STUB(glColorTableParameterfv, _gloffset_ColorTableParameterfv)
+ GL_STUB(glColorTableParameteriv, _gloffset_ColorTableParameteriv)
+ GL_STUB(glCopyColorTable, _gloffset_CopyColorTable)
+ GL_STUB(glGetColorTable, _gloffset_GetColorTable)
+ GL_STUB(glGetColorTableParameterfv, _gloffset_GetColorTableParameterfv)
+ GL_STUB(glGetColorTableParameteriv, _gloffset_GetColorTableParameteriv)
+ GL_STUB(glColorSubTable, _gloffset_ColorSubTable)
+ GL_STUB(glCopyColorSubTable, _gloffset_CopyColorSubTable)
+ GL_STUB(glConvolutionFilter1D, _gloffset_ConvolutionFilter1D)
+ GL_STUB(glConvolutionFilter2D, _gloffset_ConvolutionFilter2D)
+ GL_STUB(glConvolutionParameterf, _gloffset_ConvolutionParameterf)
+ GL_STUB(glConvolutionParameterfv, _gloffset_ConvolutionParameterfv)
+ GL_STUB(glConvolutionParameteri, _gloffset_ConvolutionParameteri)
+ GL_STUB(glConvolutionParameteriv, _gloffset_ConvolutionParameteriv)
+ GL_STUB(glCopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D)
+ GL_STUB(glCopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D)
+ GL_STUB(glGetConvolutionFilter, _gloffset_GetConvolutionFilter)
+ GL_STUB(glGetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv)
+ GL_STUB(glGetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv)
+ GL_STUB(glGetSeparableFilter, _gloffset_GetSeparableFilter)
+ GL_STUB(glSeparableFilter2D, _gloffset_SeparableFilter2D)
+ GL_STUB(glGetHistogram, _gloffset_GetHistogram)
+ GL_STUB(glGetHistogramParameterfv, _gloffset_GetHistogramParameterfv)
+ GL_STUB(glGetHistogramParameteriv, _gloffset_GetHistogramParameteriv)
+ GL_STUB(glGetMinmax, _gloffset_GetMinmax)
+ GL_STUB(glGetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv)
+ GL_STUB(glGetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv)
+ GL_STUB(glHistogram, _gloffset_Histogram)
+ GL_STUB(glMinmax, _gloffset_Minmax)
+ GL_STUB(glResetHistogram, _gloffset_ResetHistogram)
+ GL_STUB(glResetMinmax, _gloffset_ResetMinmax)
+ GL_STUB(glTexImage3D, _gloffset_TexImage3D)
+ GL_STUB(glTexSubImage3D, _gloffset_TexSubImage3D)
+ GL_STUB(glCopyTexSubImage3D, _gloffset_CopyTexSubImage3D)
+ GL_STUB(glActiveTextureARB, _gloffset_ActiveTextureARB)
+ GL_STUB(glClientActiveTextureARB, _gloffset_ClientActiveTextureARB)
+ GL_STUB(glMultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB)
+ GL_STUB(glMultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB)
+ GL_STUB(glMultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB)
+ GL_STUB(glMultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB)
+ GL_STUB(glMultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB)
+ GL_STUB(glMultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB)
+ GL_STUB(glMultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB)
+ GL_STUB(glMultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB)
+ GL_STUB(glMultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB)
+ GL_STUB(glMultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB)
+ GL_STUB(glMultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB)
+ GL_STUB(glMultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB)
+ GL_STUB(glMultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB)
+ GL_STUB(glMultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB)
+ GL_STUB(glMultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB)
+ GL_STUB(glMultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB)
+ GL_STUB(glMultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB)
+ GL_STUB(glMultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB)
+ GL_STUB(glMultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB)
+ GL_STUB(glMultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB)
+ GL_STUB(glMultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB)
+ GL_STUB(glMultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB)
+ GL_STUB(glMultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB)
+ GL_STUB(glMultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB)
+ GL_STUB(glMultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB)
+ GL_STUB(glMultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB)
+ GL_STUB(glMultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB)
+ GL_STUB(glMultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB)
+ GL_STUB(glMultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB)
+ GL_STUB(glMultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB)
+ GL_STUB(glMultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB)
+ GL_STUB(glMultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB)
+ GL_STUB(glStencilFuncSeparate, _gloffset_StencilFuncSeparate)
+ GL_STUB(glStencilMaskSeparate, _gloffset_StencilMaskSeparate)
+ GL_STUB(glStencilOpSeparate, _gloffset_StencilOpSeparate)
+ GL_STUB(glLoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB)
+ GL_STUB(glLoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB)
+ GL_STUB(glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB)
+ GL_STUB(glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB)
+ GL_STUB(glSampleCoverageARB, _gloffset_SampleCoverageARB)
+ GL_STUB(glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB)
+ GL_STUB(glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB)
+ GL_STUB(glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB)
+ GL_STUB(glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB)
+ GL_STUB(glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB)
+ GL_STUB(glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB)
+ GL_STUB(glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB)
+ GL_STUB(glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB)
+ GL_STUB(glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB)
+ GL_STUB(glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB)
+ GL_STUB(glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB)
+ GL_STUB(glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB)
+ GL_STUB(glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB)
+ GL_STUB(glGetProgramStringARB, _gloffset_GetProgramStringARB)
+ GL_STUB(glGetProgramivARB, _gloffset_GetProgramivARB)
+ GL_STUB(glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB)
+ GL_STUB(glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB)
+ GL_STUB(glGetVertexAttribivARB, _gloffset_GetVertexAttribivARB)
+ GL_STUB(glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB)
+ GL_STUB(glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB)
+ GL_STUB(glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB)
+ GL_STUB(glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB)
+ GL_STUB(glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB)
+ GL_STUB(glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB)
+ GL_STUB(glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB)
+ GL_STUB(glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB)
+ GL_STUB(glProgramStringARB, _gloffset_ProgramStringARB)
+ GL_STUB(glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB)
+ GL_STUB(glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB)
+ GL_STUB(glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB)
+ GL_STUB(glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB)
+ GL_STUB(glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB)
+ GL_STUB(glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB)
+ GL_STUB(glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB)
+ GL_STUB(glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB)
+ GL_STUB(glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB)
+ GL_STUB(glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB)
+ GL_STUB(glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB)
+ GL_STUB(glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB)
+ GL_STUB(glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB)
+ GL_STUB(glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB)
+ GL_STUB(glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB)
+ GL_STUB(glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB)
+ GL_STUB(glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB)
+ GL_STUB(glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB)
+ GL_STUB(glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB)
+ GL_STUB(glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB)
+ GL_STUB(glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB)
+ GL_STUB(glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB)
+ GL_STUB(glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB)
+ GL_STUB(glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB)
+ GL_STUB(glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB)
+ GL_STUB(glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB)
+ GL_STUB(glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB)
+ GL_STUB(glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB)
+ GL_STUB(glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB)
+ GL_STUB(glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB)
+ GL_STUB(glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB)
+ GL_STUB(glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB)
+ GL_STUB(glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB)
+ GL_STUB(glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB)
+ GL_STUB(glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB)
+ GL_STUB(glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB)
+ GL_STUB(glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB)
+ GL_STUB(glBindBufferARB, _gloffset_BindBufferARB)
+ GL_STUB(glBufferDataARB, _gloffset_BufferDataARB)
+ GL_STUB(glBufferSubDataARB, _gloffset_BufferSubDataARB)
+ GL_STUB(glDeleteBuffersARB, _gloffset_DeleteBuffersARB)
+ GL_STUB(glGenBuffersARB, _gloffset_GenBuffersARB)
+ GL_STUB(glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB)
+ GL_STUB(glGetBufferPointervARB, _gloffset_GetBufferPointervARB)
+ GL_STUB(glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB)
+ GL_STUB(glIsBufferARB, _gloffset_IsBufferARB)
+ GL_STUB(glMapBufferARB, _gloffset_MapBufferARB)
+ GL_STUB(glUnmapBufferARB, _gloffset_UnmapBufferARB)
+ GL_STUB(glBeginQueryARB, _gloffset_BeginQueryARB)
+ GL_STUB(glDeleteQueriesARB, _gloffset_DeleteQueriesARB)
+ GL_STUB(glEndQueryARB, _gloffset_EndQueryARB)
+ GL_STUB(glGenQueriesARB, _gloffset_GenQueriesARB)
+ GL_STUB(glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB)
+ GL_STUB(glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB)
+ GL_STUB(glGetQueryivARB, _gloffset_GetQueryivARB)
+ GL_STUB(glIsQueryARB, _gloffset_IsQueryARB)
+ GL_STUB(glAttachObjectARB, _gloffset_AttachObjectARB)
+ GL_STUB(glCompileShaderARB, _gloffset_CompileShaderARB)
+ GL_STUB(glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB)
+ GL_STUB(glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB)
+ GL_STUB(glDeleteObjectARB, _gloffset_DeleteObjectARB)
+ GL_STUB(glDetachObjectARB, _gloffset_DetachObjectARB)
+ GL_STUB(glGetActiveUniformARB, _gloffset_GetActiveUniformARB)
+ GL_STUB(glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB)
+ GL_STUB(glGetHandleARB, _gloffset_GetHandleARB)
+ GL_STUB(glGetInfoLogARB, _gloffset_GetInfoLogARB)
+ GL_STUB(glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB)
+ GL_STUB(glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB)
+ GL_STUB(glGetShaderSourceARB, _gloffset_GetShaderSourceARB)
+ GL_STUB(glGetUniformLocationARB, _gloffset_GetUniformLocationARB)
+ GL_STUB(glGetUniformfvARB, _gloffset_GetUniformfvARB)
+ GL_STUB(glGetUniformivARB, _gloffset_GetUniformivARB)
+ GL_STUB(glLinkProgramARB, _gloffset_LinkProgramARB)
+ GL_STUB(glShaderSourceARB, _gloffset_ShaderSourceARB)
+ GL_STUB(glUniform1fARB, _gloffset_Uniform1fARB)
+ GL_STUB(glUniform1fvARB, _gloffset_Uniform1fvARB)
+ GL_STUB(glUniform1iARB, _gloffset_Uniform1iARB)
+ GL_STUB(glUniform1ivARB, _gloffset_Uniform1ivARB)
+ GL_STUB(glUniform2fARB, _gloffset_Uniform2fARB)
+ GL_STUB(glUniform2fvARB, _gloffset_Uniform2fvARB)
+ GL_STUB(glUniform2iARB, _gloffset_Uniform2iARB)
+ GL_STUB(glUniform2ivARB, _gloffset_Uniform2ivARB)
+ GL_STUB(glUniform3fARB, _gloffset_Uniform3fARB)
+ GL_STUB(glUniform3fvARB, _gloffset_Uniform3fvARB)
+ GL_STUB(glUniform3iARB, _gloffset_Uniform3iARB)
+ GL_STUB(glUniform3ivARB, _gloffset_Uniform3ivARB)
+ GL_STUB(glUniform4fARB, _gloffset_Uniform4fARB)
+ GL_STUB(glUniform4fvARB, _gloffset_Uniform4fvARB)
+ GL_STUB(glUniform4iARB, _gloffset_Uniform4iARB)
+ GL_STUB(glUniform4ivARB, _gloffset_Uniform4ivARB)
+ GL_STUB(glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB)
+ GL_STUB(glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB)
+ GL_STUB(glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB)
+ GL_STUB(glUseProgramObjectARB, _gloffset_UseProgramObjectARB)
+ GL_STUB(glValidateProgramARB, _gloffset_ValidateProgramARB)
+ GL_STUB(glBindAttribLocationARB, _gloffset_BindAttribLocationARB)
+ GL_STUB(glGetActiveAttribARB, _gloffset_GetActiveAttribARB)
+ GL_STUB(glGetAttribLocationARB, _gloffset_GetAttribLocationARB)
+ GL_STUB(glDrawBuffersARB, _gloffset_DrawBuffersARB)
+ GL_STUB(glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT)
+ GL_STUB(gl_dispatch_stub_543, _gloffset__dispatch_stub_543)
+ GL_STUB(gl_dispatch_stub_544, _gloffset__dispatch_stub_544)
+ GL_STUB(gl_dispatch_stub_545, _gloffset__dispatch_stub_545)
+ GL_STUB(gl_dispatch_stub_546, _gloffset__dispatch_stub_546)
+ GL_STUB(gl_dispatch_stub_547, _gloffset__dispatch_stub_547)
+ GL_STUB(gl_dispatch_stub_548, _gloffset__dispatch_stub_548)
+ GL_STUB(gl_dispatch_stub_549, _gloffset__dispatch_stub_549)
+ GL_STUB(gl_dispatch_stub_550, _gloffset__dispatch_stub_550)
+ GL_STUB(gl_dispatch_stub_551, _gloffset__dispatch_stub_551)
+ GL_STUB(gl_dispatch_stub_552, _gloffset__dispatch_stub_552)
+ GL_STUB(gl_dispatch_stub_553, _gloffset__dispatch_stub_553)
+ GL_STUB(gl_dispatch_stub_554, _gloffset__dispatch_stub_554)
+ GL_STUB(gl_dispatch_stub_555, _gloffset__dispatch_stub_555)
+ GL_STUB(gl_dispatch_stub_556, _gloffset__dispatch_stub_556)
+ GL_STUB(gl_dispatch_stub_557, _gloffset__dispatch_stub_557)
+ GL_STUB(gl_dispatch_stub_558, _gloffset__dispatch_stub_558)
+ GL_STUB(gl_dispatch_stub_559, _gloffset__dispatch_stub_559)
+ GL_STUB(gl_dispatch_stub_560, _gloffset__dispatch_stub_560)
+ GL_STUB(gl_dispatch_stub_561, _gloffset__dispatch_stub_561)
+ GL_STUB(glAreTexturesResidentEXT, _gloffset_AreTexturesResidentEXT)
+ GL_STUB(glGenTexturesEXT, _gloffset_GenTexturesEXT)
+ GL_STUB(glIsTextureEXT, _gloffset_IsTextureEXT)
+ GL_STUB(gl_dispatch_stub_565, _gloffset__dispatch_stub_565)
+ GL_STUB(gl_dispatch_stub_566, _gloffset__dispatch_stub_566)
+ GL_STUB(glColorPointerEXT, _gloffset_ColorPointerEXT)
+ GL_STUB(glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT)
+ GL_STUB(glIndexPointerEXT, _gloffset_IndexPointerEXT)
+ GL_STUB(glNormalPointerEXT, _gloffset_NormalPointerEXT)
+ GL_STUB(glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT)
+ GL_STUB(glVertexPointerEXT, _gloffset_VertexPointerEXT)
+ GL_STUB(glPointParameterfEXT, _gloffset_PointParameterfEXT)
+ GL_STUB(glPointParameterfvEXT, _gloffset_PointParameterfvEXT)
+ GL_STUB(glLockArraysEXT, _gloffset_LockArraysEXT)
+ GL_STUB(glUnlockArraysEXT, _gloffset_UnlockArraysEXT)
+ GL_STUB(gl_dispatch_stub_577, _gloffset__dispatch_stub_577)
+ GL_STUB(gl_dispatch_stub_578, _gloffset__dispatch_stub_578)
+ GL_STUB(glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT)
+ GL_STUB(glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT)
+ GL_STUB(glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT)
+ GL_STUB(glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT)
+ GL_STUB(glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT)
+ GL_STUB(glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT)
+ GL_STUB(glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT)
+ GL_STUB(glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT)
+ GL_STUB(glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT)
+ GL_STUB(glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT)
+ GL_STUB(glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT)
+ GL_STUB(glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT)
+ GL_STUB(glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT)
+ GL_STUB(glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT)
+ GL_STUB(glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT)
+ GL_STUB(glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT)
+ GL_STUB(glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT)
+ GL_STUB(glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT)
+ GL_STUB(glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT)
+ GL_STUB(glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT)
+ GL_STUB(glFogCoorddEXT, _gloffset_FogCoorddEXT)
+ GL_STUB(glFogCoorddvEXT, _gloffset_FogCoorddvEXT)
+ GL_STUB(glFogCoordfEXT, _gloffset_FogCoordfEXT)
+ GL_STUB(glFogCoordfvEXT, _gloffset_FogCoordfvEXT)
+ GL_STUB(gl_dispatch_stub_603, _gloffset__dispatch_stub_603)
+ GL_STUB(glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT)
+ GL_STUB(glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV)
+ GL_STUB(glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV)
+ GL_STUB(glCombinerInputNV, _gloffset_CombinerInputNV)
+ GL_STUB(glCombinerOutputNV, _gloffset_CombinerOutputNV)
+ GL_STUB(glCombinerParameterfNV, _gloffset_CombinerParameterfNV)
+ GL_STUB(glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV)
+ GL_STUB(glCombinerParameteriNV, _gloffset_CombinerParameteriNV)
+ GL_STUB(glCombinerParameterivNV, _gloffset_CombinerParameterivNV)
+ GL_STUB(glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV)
+ GL_STUB(glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV)
+ GL_STUB(glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV)
+ GL_STUB(glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV)
+ GL_STUB(glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV)
+ GL_STUB(glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV)
+ GL_STUB(glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV)
+ GL_STUB(glResizeBuffersMESA, _gloffset_ResizeBuffersMESA)
+ GL_STUB(glWindowPos2dMESA, _gloffset_WindowPos2dMESA)
+ GL_STUB(glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA)
+ GL_STUB(glWindowPos2fMESA, _gloffset_WindowPos2fMESA)
+ GL_STUB(glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA)
+ GL_STUB(glWindowPos2iMESA, _gloffset_WindowPos2iMESA)
+ GL_STUB(glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA)
+ GL_STUB(glWindowPos2sMESA, _gloffset_WindowPos2sMESA)
+ GL_STUB(glWindowPos2svMESA, _gloffset_WindowPos2svMESA)
+ GL_STUB(glWindowPos3dMESA, _gloffset_WindowPos3dMESA)
+ GL_STUB(glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA)
+ GL_STUB(glWindowPos3fMESA, _gloffset_WindowPos3fMESA)
+ GL_STUB(glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA)
+ GL_STUB(glWindowPos3iMESA, _gloffset_WindowPos3iMESA)
+ GL_STUB(glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA)
+ GL_STUB(glWindowPos3sMESA, _gloffset_WindowPos3sMESA)
+ GL_STUB(glWindowPos3svMESA, _gloffset_WindowPos3svMESA)
+ GL_STUB(glWindowPos4dMESA, _gloffset_WindowPos4dMESA)
+ GL_STUB(glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA)
+ GL_STUB(glWindowPos4fMESA, _gloffset_WindowPos4fMESA)
+ GL_STUB(glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA)
+ GL_STUB(glWindowPos4iMESA, _gloffset_WindowPos4iMESA)
+ GL_STUB(glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA)
+ GL_STUB(glWindowPos4sMESA, _gloffset_WindowPos4sMESA)
+ GL_STUB(glWindowPos4svMESA, _gloffset_WindowPos4svMESA)
+ GL_STUB(gl_dispatch_stub_645, _gloffset__dispatch_stub_645)
+ GL_STUB(gl_dispatch_stub_646, _gloffset__dispatch_stub_646)
+ GL_STUB(gl_dispatch_stub_647, _gloffset__dispatch_stub_647)
+ GL_STUB(gl_dispatch_stub_648, _gloffset__dispatch_stub_648)
+ GL_STUB(gl_dispatch_stub_649, _gloffset__dispatch_stub_649)
+ GL_STUB(gl_dispatch_stub_650, _gloffset__dispatch_stub_650)
+ GL_STUB(gl_dispatch_stub_651, _gloffset__dispatch_stub_651)
+ GL_STUB(gl_dispatch_stub_652, _gloffset__dispatch_stub_652)
+ GL_STUB(gl_dispatch_stub_653, _gloffset__dispatch_stub_653)
+ GL_STUB(glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV)
+ GL_STUB(glBindProgramNV, _gloffset_BindProgramNV)
+ GL_STUB(glDeleteProgramsNV, _gloffset_DeleteProgramsNV)
+ GL_STUB(glExecuteProgramNV, _gloffset_ExecuteProgramNV)
+ GL_STUB(glGenProgramsNV, _gloffset_GenProgramsNV)
+ GL_STUB(glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV)
+ GL_STUB(glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV)
+ GL_STUB(glGetProgramStringNV, _gloffset_GetProgramStringNV)
+ GL_STUB(glGetProgramivNV, _gloffset_GetProgramivNV)
+ GL_STUB(glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV)
+ GL_STUB(glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV)
+ GL_STUB(glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV)
+ GL_STUB(glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV)
+ GL_STUB(glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV)
+ GL_STUB(glIsProgramNV, _gloffset_IsProgramNV)
+ GL_STUB(glLoadProgramNV, _gloffset_LoadProgramNV)
+ GL_STUB(glProgramParameter4dNV, _gloffset_ProgramParameter4dNV)
+ GL_STUB(glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV)
+ GL_STUB(glProgramParameter4fNV, _gloffset_ProgramParameter4fNV)
+ GL_STUB(glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV)
+ GL_STUB(glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV)
+ GL_STUB(glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV)
+ GL_STUB(glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV)
+ GL_STUB(glTrackMatrixNV, _gloffset_TrackMatrixNV)
+ GL_STUB(glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV)
+ GL_STUB(glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV)
+ GL_STUB(glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV)
+ GL_STUB(glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV)
+ GL_STUB(glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV)
+ GL_STUB(glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV)
+ GL_STUB(glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV)
+ GL_STUB(glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV)
+ GL_STUB(glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV)
+ GL_STUB(glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV)
+ GL_STUB(glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV)
+ GL_STUB(glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV)
+ GL_STUB(glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV)
+ GL_STUB(glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV)
+ GL_STUB(glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV)
+ GL_STUB(glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV)
+ GL_STUB(glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV)
+ GL_STUB(glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV)
+ GL_STUB(glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV)
+ GL_STUB(glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV)
+ GL_STUB(glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV)
+ GL_STUB(glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV)
+ GL_STUB(glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV)
+ GL_STUB(glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV)
+ GL_STUB(glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV)
+ GL_STUB(glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV)
+ GL_STUB(glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV)
+ GL_STUB(glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV)
+ GL_STUB(glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV)
+ GL_STUB(glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV)
+ GL_STUB(glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV)
+ GL_STUB(glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV)
+ GL_STUB(glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV)
+ GL_STUB(glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV)
+ GL_STUB(glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV)
+ GL_STUB(glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV)
+ GL_STUB(glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV)
+ GL_STUB(glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV)
+ GL_STUB(glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV)
+ GL_STUB(glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV)
+ GL_STUB(glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI)
+ GL_STUB(glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI)
+ GL_STUB(glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI)
+ GL_STUB(glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI)
+ GL_STUB(glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI)
+ GL_STUB(glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI)
+ GL_STUB(glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI)
+ GL_STUB(glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI)
+ GL_STUB(glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI)
+ GL_STUB(glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI)
+ GL_STUB(glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI)
+ GL_STUB(glPassTexCoordATI, _gloffset_PassTexCoordATI)
+ GL_STUB(glSampleMapATI, _gloffset_SampleMapATI)
+ GL_STUB(glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI)
+ GL_STUB(glPointParameteriNV, _gloffset_PointParameteriNV)
+ GL_STUB(glPointParameterivNV, _gloffset_PointParameterivNV)
+ GL_STUB(gl_dispatch_stub_734, _gloffset__dispatch_stub_734)
+ GL_STUB(gl_dispatch_stub_735, _gloffset__dispatch_stub_735)
+ GL_STUB(gl_dispatch_stub_736, _gloffset__dispatch_stub_736)
+ GL_STUB(gl_dispatch_stub_737, _gloffset__dispatch_stub_737)
+ GL_STUB(gl_dispatch_stub_738, _gloffset__dispatch_stub_738)
+ GL_STUB(glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV)
+ GL_STUB(glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV)
+ GL_STUB(glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV)
+ GL_STUB(glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV)
+ GL_STUB(glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV)
+ GL_STUB(glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV)
+ GL_STUB(gl_dispatch_stub_745, _gloffset__dispatch_stub_745)
+ GL_STUB(gl_dispatch_stub_746, _gloffset__dispatch_stub_746)
+ GL_STUB(glBindFramebufferEXT, _gloffset_BindFramebufferEXT)
+ GL_STUB(glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT)
+ GL_STUB(glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT)
+ GL_STUB(glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT)
+ GL_STUB(glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT)
+ GL_STUB(glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT)
+ GL_STUB(glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT)
+ GL_STUB(glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT)
+ GL_STUB(glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT)
+ GL_STUB(glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT)
+ GL_STUB(glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT)
+ GL_STUB(glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT)
+ GL_STUB(glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT)
+ GL_STUB(gl_dispatch_stub_760, _gloffset__dispatch_stub_760)
+ GL_STUB(gl_dispatch_stub_761, _gloffset__dispatch_stub_761)
+ GL_STUB(glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT)
+ GL_STUB(glIsFramebufferEXT, _gloffset_IsFramebufferEXT)
+ GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT)
+ GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT)
+ GL_STUB(gl_dispatch_stub_766, _gloffset__dispatch_stub_766)
+ GL_STUB(gl_dispatch_stub_767, _gloffset__dispatch_stub_767)
+ GL_STUB(gl_dispatch_stub_768, _gloffset__dispatch_stub_768)
+
+ .globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function
+_mesa_sparc_glapi_end:
+
+ .globl glArrayElementEXT ; .type glArrayElementEXT,#function ; glArrayElementEXT = glArrayElement
+ .globl glBindTextureEXT ; .type glBindTextureEXT,#function ; glBindTextureEXT = glBindTexture
+ .globl glDrawArraysEXT ; .type glDrawArraysEXT,#function ; glDrawArraysEXT = glDrawArrays
+ .globl glCopyTexImage1DEXT ; .type glCopyTexImage1DEXT,#function ; glCopyTexImage1DEXT = glCopyTexImage1D
+ .globl glCopyTexImage2DEXT ; .type glCopyTexImage2DEXT,#function ; glCopyTexImage2DEXT = glCopyTexImage2D
+ .globl glCopyTexSubImage1DEXT ; .type glCopyTexSubImage1DEXT,#function ; glCopyTexSubImage1DEXT = glCopyTexSubImage1D
+ .globl glCopyTexSubImage2DEXT ; .type glCopyTexSubImage2DEXT,#function ; glCopyTexSubImage2DEXT = glCopyTexSubImage2D
+ .globl glDeleteTexturesEXT ; .type glDeleteTexturesEXT,#function ; glDeleteTexturesEXT = glDeleteTextures
+ .globl glGetPointervEXT ; .type glGetPointervEXT,#function ; glGetPointervEXT = glGetPointerv
+ .globl glPrioritizeTexturesEXT ; .type glPrioritizeTexturesEXT,#function ; glPrioritizeTexturesEXT = glPrioritizeTextures
+ .globl glTexSubImage1DEXT ; .type glTexSubImage1DEXT,#function ; glTexSubImage1DEXT = glTexSubImage1D
+ .globl glTexSubImage2DEXT ; .type glTexSubImage2DEXT,#function ; glTexSubImage2DEXT = glTexSubImage2D
+ .globl glBlendColorEXT ; .type glBlendColorEXT,#function ; glBlendColorEXT = glBlendColor
+ .globl glBlendEquationEXT ; .type glBlendEquationEXT,#function ; glBlendEquationEXT = glBlendEquation
+ .globl glDrawRangeElementsEXT ; .type glDrawRangeElementsEXT,#function ; glDrawRangeElementsEXT = glDrawRangeElements
+ .globl glColorTableEXT ; .type glColorTableEXT,#function ; glColorTableEXT = glColorTable
+ .globl glTexImage3DEXT ; .type glTexImage3DEXT,#function ; glTexImage3DEXT = glTexImage3D
+ .globl glTexSubImage3DEXT ; .type glTexSubImage3DEXT,#function ; glTexSubImage3DEXT = glTexSubImage3D
+ .globl glCopyTexSubImage3DEXT ; .type glCopyTexSubImage3DEXT,#function ; glCopyTexSubImage3DEXT = glCopyTexSubImage3D
+ .globl glActiveTexture ; .type glActiveTexture,#function ; glActiveTexture = glActiveTextureARB
+ .globl glClientActiveTexture ; .type glClientActiveTexture,#function ; glClientActiveTexture = glClientActiveTextureARB
+ .globl glMultiTexCoord1d ; .type glMultiTexCoord1d,#function ; glMultiTexCoord1d = glMultiTexCoord1dARB
+ .globl glMultiTexCoord1dv ; .type glMultiTexCoord1dv,#function ; glMultiTexCoord1dv = glMultiTexCoord1dvARB
+ .globl glMultiTexCoord1f ; .type glMultiTexCoord1f,#function ; glMultiTexCoord1f = glMultiTexCoord1fARB
+ .globl glMultiTexCoord1fv ; .type glMultiTexCoord1fv,#function ; glMultiTexCoord1fv = glMultiTexCoord1fvARB
+ .globl glMultiTexCoord1i ; .type glMultiTexCoord1i,#function ; glMultiTexCoord1i = glMultiTexCoord1iARB
+ .globl glMultiTexCoord1iv ; .type glMultiTexCoord1iv,#function ; glMultiTexCoord1iv = glMultiTexCoord1ivARB
+ .globl glMultiTexCoord1s ; .type glMultiTexCoord1s,#function ; glMultiTexCoord1s = glMultiTexCoord1sARB
+ .globl glMultiTexCoord1sv ; .type glMultiTexCoord1sv,#function ; glMultiTexCoord1sv = glMultiTexCoord1svARB
+ .globl glMultiTexCoord2d ; .type glMultiTexCoord2d,#function ; glMultiTexCoord2d = glMultiTexCoord2dARB
+ .globl glMultiTexCoord2dv ; .type glMultiTexCoord2dv,#function ; glMultiTexCoord2dv = glMultiTexCoord2dvARB
+ .globl glMultiTexCoord2f ; .type glMultiTexCoord2f,#function ; glMultiTexCoord2f = glMultiTexCoord2fARB
+ .globl glMultiTexCoord2fv ; .type glMultiTexCoord2fv,#function ; glMultiTexCoord2fv = glMultiTexCoord2fvARB
+ .globl glMultiTexCoord2i ; .type glMultiTexCoord2i,#function ; glMultiTexCoord2i = glMultiTexCoord2iARB
+ .globl glMultiTexCoord2iv ; .type glMultiTexCoord2iv,#function ; glMultiTexCoord2iv = glMultiTexCoord2ivARB
+ .globl glMultiTexCoord2s ; .type glMultiTexCoord2s,#function ; glMultiTexCoord2s = glMultiTexCoord2sARB
+ .globl glMultiTexCoord2sv ; .type glMultiTexCoord2sv,#function ; glMultiTexCoord2sv = glMultiTexCoord2svARB
+ .globl glMultiTexCoord3d ; .type glMultiTexCoord3d,#function ; glMultiTexCoord3d = glMultiTexCoord3dARB
+ .globl glMultiTexCoord3dv ; .type glMultiTexCoord3dv,#function ; glMultiTexCoord3dv = glMultiTexCoord3dvARB
+ .globl glMultiTexCoord3f ; .type glMultiTexCoord3f,#function ; glMultiTexCoord3f = glMultiTexCoord3fARB
+ .globl glMultiTexCoord3fv ; .type glMultiTexCoord3fv,#function ; glMultiTexCoord3fv = glMultiTexCoord3fvARB
+ .globl glMultiTexCoord3i ; .type glMultiTexCoord3i,#function ; glMultiTexCoord3i = glMultiTexCoord3iARB
+ .globl glMultiTexCoord3iv ; .type glMultiTexCoord3iv,#function ; glMultiTexCoord3iv = glMultiTexCoord3ivARB
+ .globl glMultiTexCoord3s ; .type glMultiTexCoord3s,#function ; glMultiTexCoord3s = glMultiTexCoord3sARB
+ .globl glMultiTexCoord3sv ; .type glMultiTexCoord3sv,#function ; glMultiTexCoord3sv = glMultiTexCoord3svARB
+ .globl glMultiTexCoord4d ; .type glMultiTexCoord4d,#function ; glMultiTexCoord4d = glMultiTexCoord4dARB
+ .globl glMultiTexCoord4dv ; .type glMultiTexCoord4dv,#function ; glMultiTexCoord4dv = glMultiTexCoord4dvARB
+ .globl glMultiTexCoord4f ; .type glMultiTexCoord4f,#function ; glMultiTexCoord4f = glMultiTexCoord4fARB
+ .globl glMultiTexCoord4fv ; .type glMultiTexCoord4fv,#function ; glMultiTexCoord4fv = glMultiTexCoord4fvARB
+ .globl glMultiTexCoord4i ; .type glMultiTexCoord4i,#function ; glMultiTexCoord4i = glMultiTexCoord4iARB
+ .globl glMultiTexCoord4iv ; .type glMultiTexCoord4iv,#function ; glMultiTexCoord4iv = glMultiTexCoord4ivARB
+ .globl glMultiTexCoord4s ; .type glMultiTexCoord4s,#function ; glMultiTexCoord4s = glMultiTexCoord4sARB
+ .globl glMultiTexCoord4sv ; .type glMultiTexCoord4sv,#function ; glMultiTexCoord4sv = glMultiTexCoord4svARB
+ .globl glLoadTransposeMatrixd ; .type glLoadTransposeMatrixd,#function ; glLoadTransposeMatrixd = glLoadTransposeMatrixdARB
+ .globl glLoadTransposeMatrixf ; .type glLoadTransposeMatrixf,#function ; glLoadTransposeMatrixf = glLoadTransposeMatrixfARB
+ .globl glMultTransposeMatrixd ; .type glMultTransposeMatrixd,#function ; glMultTransposeMatrixd = glMultTransposeMatrixdARB
+ .globl glMultTransposeMatrixf ; .type glMultTransposeMatrixf,#function ; glMultTransposeMatrixf = glMultTransposeMatrixfARB
+ .globl glSampleCoverage ; .type glSampleCoverage,#function ; glSampleCoverage = glSampleCoverageARB
+ .globl glCompressedTexImage1D ; .type glCompressedTexImage1D,#function ; glCompressedTexImage1D = glCompressedTexImage1DARB
+ .globl glCompressedTexImage2D ; .type glCompressedTexImage2D,#function ; glCompressedTexImage2D = glCompressedTexImage2DARB
+ .globl glCompressedTexImage3D ; .type glCompressedTexImage3D,#function ; glCompressedTexImage3D = glCompressedTexImage3DARB
+ .globl glCompressedTexSubImage1D ; .type glCompressedTexSubImage1D,#function ; glCompressedTexSubImage1D = glCompressedTexSubImage1DARB
+ .globl glCompressedTexSubImage2D ; .type glCompressedTexSubImage2D,#function ; glCompressedTexSubImage2D = glCompressedTexSubImage2DARB
+ .globl glCompressedTexSubImage3D ; .type glCompressedTexSubImage3D,#function ; glCompressedTexSubImage3D = glCompressedTexSubImage3DARB
+ .globl glGetCompressedTexImage ; .type glGetCompressedTexImage,#function ; glGetCompressedTexImage = glGetCompressedTexImageARB
+ .globl glBindBuffer ; .type glBindBuffer,#function ; glBindBuffer = glBindBufferARB
+ .globl glBufferData ; .type glBufferData,#function ; glBufferData = glBufferDataARB
+ .globl glBufferSubData ; .type glBufferSubData,#function ; glBufferSubData = glBufferSubDataARB
+ .globl glDeleteBuffers ; .type glDeleteBuffers,#function ; glDeleteBuffers = glDeleteBuffersARB
+ .globl glGenBuffers ; .type glGenBuffers,#function ; glGenBuffers = glGenBuffersARB
+ .globl glGetBufferParameteriv ; .type glGetBufferParameteriv,#function ; glGetBufferParameteriv = glGetBufferParameterivARB
+ .globl glGetBufferPointerv ; .type glGetBufferPointerv,#function ; glGetBufferPointerv = glGetBufferPointervARB
+ .globl glGetBufferSubData ; .type glGetBufferSubData,#function ; glGetBufferSubData = glGetBufferSubDataARB
+ .globl glIsBuffer ; .type glIsBuffer,#function ; glIsBuffer = glIsBufferARB
+ .globl glMapBuffer ; .type glMapBuffer,#function ; glMapBuffer = glMapBufferARB
+ .globl glUnmapBuffer ; .type glUnmapBuffer,#function ; glUnmapBuffer = glUnmapBufferARB
+ .globl glBeginQuery ; .type glBeginQuery,#function ; glBeginQuery = glBeginQueryARB
+ .globl glDeleteQueries ; .type glDeleteQueries,#function ; glDeleteQueries = glDeleteQueriesARB
+ .globl glEndQuery ; .type glEndQuery,#function ; glEndQuery = glEndQueryARB
+ .globl glGenQueries ; .type glGenQueries,#function ; glGenQueries = glGenQueriesARB
+ .globl glGetQueryObjectiv ; .type glGetQueryObjectiv,#function ; glGetQueryObjectiv = glGetQueryObjectivARB
+ .globl glGetQueryObjectuiv ; .type glGetQueryObjectuiv,#function ; glGetQueryObjectuiv = glGetQueryObjectuivARB
+ .globl glGetQueryiv ; .type glGetQueryiv,#function ; glGetQueryiv = glGetQueryivARB
+ .globl glIsQuery ; .type glIsQuery,#function ; glIsQuery = glIsQueryARB
+ .globl glDrawBuffers ; .type glDrawBuffers,#function ; glDrawBuffers = glDrawBuffersARB
+ .globl glDrawBuffersATI ; .type glDrawBuffersATI,#function ; glDrawBuffersATI = glDrawBuffersARB
+ .globl glGetColorTableParameterfvEXT ; .type glGetColorTableParameterfvEXT,#function ; glGetColorTableParameterfvEXT = glGetColorTableParameterfvSGI
+ .globl glGetColorTableParameterivEXT ; .type glGetColorTableParameterivEXT,#function ; glGetColorTableParameterivEXT = glGetColorTableParameterivSGI
+ .globl glGetColorTableEXT ; .type glGetColorTableEXT,#function ; glGetColorTableEXT = glGetColorTableSGI
+ .globl glPointParameterf ; .type glPointParameterf,#function ; glPointParameterf = glPointParameterfEXT
+ .globl glPointParameterfARB ; .type glPointParameterfARB,#function ; glPointParameterfARB = glPointParameterfEXT
+ .globl glPointParameterfv ; .type glPointParameterfv,#function ; glPointParameterfv = glPointParameterfvEXT
+ .globl glPointParameterfvARB ; .type glPointParameterfvARB,#function ; glPointParameterfvARB = glPointParameterfvEXT
+ .globl glSecondaryColor3b ; .type glSecondaryColor3b,#function ; glSecondaryColor3b = glSecondaryColor3bEXT
+ .globl glSecondaryColor3bv ; .type glSecondaryColor3bv,#function ; glSecondaryColor3bv = glSecondaryColor3bvEXT
+ .globl glSecondaryColor3d ; .type glSecondaryColor3d,#function ; glSecondaryColor3d = glSecondaryColor3dEXT
+ .globl glSecondaryColor3dv ; .type glSecondaryColor3dv,#function ; glSecondaryColor3dv = glSecondaryColor3dvEXT
+ .globl glSecondaryColor3f ; .type glSecondaryColor3f,#function ; glSecondaryColor3f = glSecondaryColor3fEXT
+ .globl glSecondaryColor3fv ; .type glSecondaryColor3fv,#function ; glSecondaryColor3fv = glSecondaryColor3fvEXT
+ .globl glSecondaryColor3i ; .type glSecondaryColor3i,#function ; glSecondaryColor3i = glSecondaryColor3iEXT
+ .globl glSecondaryColor3iv ; .type glSecondaryColor3iv,#function ; glSecondaryColor3iv = glSecondaryColor3ivEXT
+ .globl glSecondaryColor3s ; .type glSecondaryColor3s,#function ; glSecondaryColor3s = glSecondaryColor3sEXT
+ .globl glSecondaryColor3sv ; .type glSecondaryColor3sv,#function ; glSecondaryColor3sv = glSecondaryColor3svEXT
+ .globl glSecondaryColor3ub ; .type glSecondaryColor3ub,#function ; glSecondaryColor3ub = glSecondaryColor3ubEXT
+ .globl glSecondaryColor3ubv ; .type glSecondaryColor3ubv,#function ; glSecondaryColor3ubv = glSecondaryColor3ubvEXT
+ .globl glSecondaryColor3ui ; .type glSecondaryColor3ui,#function ; glSecondaryColor3ui = glSecondaryColor3uiEXT
+ .globl glSecondaryColor3uiv ; .type glSecondaryColor3uiv,#function ; glSecondaryColor3uiv = glSecondaryColor3uivEXT
+ .globl glSecondaryColor3us ; .type glSecondaryColor3us,#function ; glSecondaryColor3us = glSecondaryColor3usEXT
+ .globl glSecondaryColor3usv ; .type glSecondaryColor3usv,#function ; glSecondaryColor3usv = glSecondaryColor3usvEXT
+ .globl glSecondaryColorPointer ; .type glSecondaryColorPointer,#function ; glSecondaryColorPointer = glSecondaryColorPointerEXT
+ .globl glMultiDrawArrays ; .type glMultiDrawArrays,#function ; glMultiDrawArrays = glMultiDrawArraysEXT
+ .globl glMultiDrawElements ; .type glMultiDrawElements,#function ; glMultiDrawElements = glMultiDrawElementsEXT
+ .globl glFogCoordPointer ; .type glFogCoordPointer,#function ; glFogCoordPointer = glFogCoordPointerEXT
+ .globl glFogCoordd ; .type glFogCoordd,#function ; glFogCoordd = glFogCoorddEXT
+ .globl glFogCoorddv ; .type glFogCoorddv,#function ; glFogCoorddv = glFogCoorddvEXT
+ .globl glFogCoordf ; .type glFogCoordf,#function ; glFogCoordf = glFogCoordfEXT
+ .globl glFogCoordfv ; .type glFogCoordfv,#function ; glFogCoordfv = glFogCoordfvEXT
+ .globl glBlendFuncSeparate ; .type glBlendFuncSeparate,#function ; glBlendFuncSeparate = glBlendFuncSeparateEXT
+ .globl glWindowPos2d ; .type glWindowPos2d,#function ; glWindowPos2d = glWindowPos2dMESA
+ .globl glWindowPos2dARB ; .type glWindowPos2dARB,#function ; glWindowPos2dARB = glWindowPos2dMESA
+ .globl glWindowPos2dv ; .type glWindowPos2dv,#function ; glWindowPos2dv = glWindowPos2dvMESA
+ .globl glWindowPos2dvARB ; .type glWindowPos2dvARB,#function ; glWindowPos2dvARB = glWindowPos2dvMESA
+ .globl glWindowPos2f ; .type glWindowPos2f,#function ; glWindowPos2f = glWindowPos2fMESA
+ .globl glWindowPos2fARB ; .type glWindowPos2fARB,#function ; glWindowPos2fARB = glWindowPos2fMESA
+ .globl glWindowPos2fv ; .type glWindowPos2fv,#function ; glWindowPos2fv = glWindowPos2fvMESA
+ .globl glWindowPos2fvARB ; .type glWindowPos2fvARB,#function ; glWindowPos2fvARB = glWindowPos2fvMESA
+ .globl glWindowPos2i ; .type glWindowPos2i,#function ; glWindowPos2i = glWindowPos2iMESA
+ .globl glWindowPos2iARB ; .type glWindowPos2iARB,#function ; glWindowPos2iARB = glWindowPos2iMESA
+ .globl glWindowPos2iv ; .type glWindowPos2iv,#function ; glWindowPos2iv = glWindowPos2ivMESA
+ .globl glWindowPos2ivARB ; .type glWindowPos2ivARB,#function ; glWindowPos2ivARB = glWindowPos2ivMESA
+ .globl glWindowPos2s ; .type glWindowPos2s,#function ; glWindowPos2s = glWindowPos2sMESA
+ .globl glWindowPos2sARB ; .type glWindowPos2sARB,#function ; glWindowPos2sARB = glWindowPos2sMESA
+ .globl glWindowPos2sv ; .type glWindowPos2sv,#function ; glWindowPos2sv = glWindowPos2svMESA
+ .globl glWindowPos2svARB ; .type glWindowPos2svARB,#function ; glWindowPos2svARB = glWindowPos2svMESA
+ .globl glWindowPos3d ; .type glWindowPos3d,#function ; glWindowPos3d = glWindowPos3dMESA
+ .globl glWindowPos3dARB ; .type glWindowPos3dARB,#function ; glWindowPos3dARB = glWindowPos3dMESA
+ .globl glWindowPos3dv ; .type glWindowPos3dv,#function ; glWindowPos3dv = glWindowPos3dvMESA
+ .globl glWindowPos3dvARB ; .type glWindowPos3dvARB,#function ; glWindowPos3dvARB = glWindowPos3dvMESA
+ .globl glWindowPos3f ; .type glWindowPos3f,#function ; glWindowPos3f = glWindowPos3fMESA
+ .globl glWindowPos3fARB ; .type glWindowPos3fARB,#function ; glWindowPos3fARB = glWindowPos3fMESA
+ .globl glWindowPos3fv ; .type glWindowPos3fv,#function ; glWindowPos3fv = glWindowPos3fvMESA
+ .globl glWindowPos3fvARB ; .type glWindowPos3fvARB,#function ; glWindowPos3fvARB = glWindowPos3fvMESA
+ .globl glWindowPos3i ; .type glWindowPos3i,#function ; glWindowPos3i = glWindowPos3iMESA
+ .globl glWindowPos3iARB ; .type glWindowPos3iARB,#function ; glWindowPos3iARB = glWindowPos3iMESA
+ .globl glWindowPos3iv ; .type glWindowPos3iv,#function ; glWindowPos3iv = glWindowPos3ivMESA
+ .globl glWindowPos3ivARB ; .type glWindowPos3ivARB,#function ; glWindowPos3ivARB = glWindowPos3ivMESA
+ .globl glWindowPos3s ; .type glWindowPos3s,#function ; glWindowPos3s = glWindowPos3sMESA
+ .globl glWindowPos3sARB ; .type glWindowPos3sARB,#function ; glWindowPos3sARB = glWindowPos3sMESA
+ .globl glWindowPos3sv ; .type glWindowPos3sv,#function ; glWindowPos3sv = glWindowPos3svMESA
+ .globl glWindowPos3svARB ; .type glWindowPos3svARB,#function ; glWindowPos3svARB = glWindowPos3svMESA
+ .globl glBindProgramARB ; .type glBindProgramARB,#function ; glBindProgramARB = glBindProgramNV
+ .globl glDeleteProgramsARB ; .type glDeleteProgramsARB,#function ; glDeleteProgramsARB = glDeleteProgramsNV
+ .globl glGenProgramsARB ; .type glGenProgramsARB,#function ; glGenProgramsARB = glGenProgramsNV
+ .globl glGetVertexAttribPointervARB ; .type glGetVertexAttribPointervARB,#function ; glGetVertexAttribPointervARB = glGetVertexAttribPointervNV
+ .globl glIsProgramARB ; .type glIsProgramARB,#function ; glIsProgramARB = glIsProgramNV
+ .globl glPointParameteri ; .type glPointParameteri,#function ; glPointParameteri = glPointParameteriNV
+ .globl glPointParameteriv ; .type glPointParameteriv,#function ; glPointParameteriv = glPointParameterivNV
+ .globl glBlendEquationSeparate ; .type glBlendEquationSeparate,#function ; glBlendEquationSeparate = glBlendEquationSeparateEXT
diff --git a/src/mesa/sparc/norm.S b/src/mesa/sparc/norm.S
new file mode 100644
index 00000000000..713cd5b3754
--- /dev/null
+++ b/src/mesa/sparc/norm.S
@@ -0,0 +1,609 @@
+/* $Id: norm.S,v 1.5 2005/07/28 00:11:11 idr Exp $ */
+
+#include "sparc_matrix.h"
+
+#if defined(SVR4) || defined(__SVR4) || defined(__svr4__)
+ /* Solaris requires this for 64-bit. */
+ .register %g2, #scratch
+ .register %g3, #scratch
+#endif
+
+ .text
+
+#ifdef __arch64__
+#define STACK_VAR_OFF (2047 + (8 * 16))
+#else
+#define STACK_VAR_OFF (4 * 16)
+#endif
+
+ /* Newton-Raphson approximation turns out to be slower
+ * (and less accurate) than direct fsqrts/fdivs.
+ */
+#define ONE_DOT_ZERO 0x3f800000
+
+ .globl _mesa_sparc_transform_normalize_normals
+_mesa_sparc_transform_normalize_normals:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+
+ sethi %hi(ONE_DOT_ZERO), %g2
+ sub %sp, 16, %sp
+ st %g2, [%sp + STACK_VAR_OFF+0x0]
+ st %o1, [%sp + STACK_VAR_OFF+0x4]
+ ld [%sp + STACK_VAR_OFF+0x0], %f12 ! f12 = 1.0f
+ ld [%sp + STACK_VAR_OFF+0x4], %f15 ! f15 = scale
+ add %sp, 16, %sp
+
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_1_2_4_5_6_8_9_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ cmp %o3, 0
+ bne 4f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1: /* LENGTHS == NULL */
+ ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0) + (uy * m1) + (uz * m2)
+ * ty (f5) = (ux * m4) + (uy * m5) + (uz * m6)
+ * tz (f7) = (ux * m8) + (uy * m9) + (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ fmuls %f1, M1, %f4 ! FGM Group
+ fmuls %f0, M4, %f5 ! FGM Group
+ fmuls %f1, M5, %f6 ! FGM Group
+ fmuls %f0, M8, %f7 ! FGM Group f3 available
+ fmuls %f1, M9, %f8 ! FGM Group f4 available
+ fadds %f3, %f4, %f3 ! FGA
+ fmuls %f2, M2, %f10 ! FGM Group f5 available
+ fmuls %f2, M6, %f0 ! FGM Group f6 available
+ fadds %f5, %f6, %f5 ! FGA
+ fmuls %f2, M10, %f4 ! FGM Group f7 available
+ fadds %f7, %f8, %f7 ! FGA Group f8,f3 available
+ fadds %f3, %f10, %f3 ! FGA Group f10 available
+ fadds %f5, %f0, %f5 ! FGA Group stall f0,f5 available
+ fadds %f7, %f4, %f7 ! FGA Group stall f4,f7 available
+
+ /* f3=tx, f5=ty, f7=tz */
+
+ /* len (f6) = (tx * tx) + (ty * ty) + (tz * tz) */
+ fmuls %f3, %f3, %f6 ! FGM Group f3 available
+ fmuls %f5, %f5, %f8 ! FGM Group f5 available
+ fmuls %f7, %f7, %f10 ! FGM Group f7 available
+ fadds %f6, %f8, %f6 ! FGA Group 2cyc stall f6,f8 available
+ fadds %f6, %f10, %f6 ! FGA Group 4cyc stall f6,f10 available
+
+ /* scale (f6) = 1.0 / sqrt(len) */
+ fsqrts %f6, %f6 ! FDIV 20 cycles
+ fdivs %f12, %f6, %f6 ! FDIV 14 cycles
+
+ fmuls %f3, %f6, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * scale
+ fmuls %f5, %f6, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * scale
+ fmuls %f7, %f6, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * scale
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+ ba 7f
+ nop
+
+4: /* LENGTHS != NULL */
+ fmuls M0, %f15, M0
+ fmuls M1, %f15, M1
+ fmuls M2, %f15, M2
+ fmuls M4, %f15, M4
+ fmuls M5, %f15, M5
+ fmuls M6, %f15, M6
+ fmuls M8, %f15, M8
+ fmuls M9, %f15, M9
+ fmuls M10, %f15, M10
+
+5:
+ ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0) + (uy * m1) + (uz * m2)
+ * ty (f5) = (ux * m4) + (uy * m5) + (uz * m6)
+ * tz (f7) = (ux * m8) + (uy * m9) + (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ fmuls %f1, M1, %f4 ! FGM Group
+ fmuls %f0, M4, %f5 ! FGM Group
+ fmuls %f1, M5, %f6 ! FGM Group
+ fmuls %f0, M8, %f7 ! FGM Group f3 available
+ fmuls %f1, M9, %f8 ! FGM Group f4 available
+ fadds %f3, %f4, %f3 ! FGA
+ fmuls %f2, M2, %f10 ! FGM Group f5 available
+ fmuls %f2, M6, %f0 ! FGM Group f6 available
+ fadds %f5, %f6, %f5 ! FGA
+ fmuls %f2, M10, %f4 ! FGM Group f7 available
+ fadds %f7, %f8, %f7 ! FGA Group f8,f3 available
+ fadds %f3, %f10, %f3 ! FGA Group f10 available
+ ld [%o3], %f13 ! LSU
+ fadds %f5, %f0, %f5 ! FGA Group stall f0,f5 available
+ add %o3, 4, %o3 ! IEU0
+ fadds %f7, %f4, %f7 ! FGA Group stall f4,f7 available
+
+ /* f3=tx, f5=ty, f7=tz, f13=lengths[i] */
+
+ fmuls %f3, %f13, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * len
+ fmuls %f5, %f13, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * len
+ fmuls %f7, %f13, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * len
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 5b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_transform_normalize_normals_no_rot
+_mesa_sparc_transform_normalize_normals_no_rot:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+
+ sethi %hi(ONE_DOT_ZERO), %g2
+ sub %sp, 16, %sp
+ st %g2, [%sp + STACK_VAR_OFF+0x0]
+ st %o1, [%sp + STACK_VAR_OFF+0x4]
+ ld [%sp + STACK_VAR_OFF+0x0], %f12 ! f12 = 1.0f
+ ld [%sp + STACK_VAR_OFF+0x4], %f15 ! f15 = scale
+ add %sp, 16, %sp
+
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_5_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ cmp %o3, 0
+ bne 4f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1: /* LENGTHS == NULL */
+ ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0)
+ * ty (f5) = (uy * m5)
+ * tz (f7) = (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ fmuls %f1, M5, %f5 ! FGM Group
+ fmuls %f2, M10, %f7 ! FGM Group
+
+ /* f3=tx, f5=ty, f7=tz */
+
+ /* len (f6) = (tx * tx) + (ty * ty) + (tz * tz) */
+ fmuls %f3, %f3, %f6 ! FGM Group stall, f3 available
+ fmuls %f5, %f5, %f8 ! FGM Group f5 available
+ fmuls %f7, %f7, %f10 ! FGM Group f7 available
+ fadds %f6, %f8, %f6 ! FGA Group 2cyc stall f6,f8 available
+ fadds %f6, %f10, %f6 ! FGA Group 4cyc stall f6,f10 available
+
+ /* scale (f6) = 1.0 / sqrt(len) */
+ fsqrts %f6, %f6 ! FDIV 20 cycles
+ fdivs %f12, %f6, %f6 ! FDIV 14 cycles
+
+ fmuls %f3, %f6, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * scale
+ fmuls %f5, %f6, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * scale
+ fmuls %f7, %f6, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * scale
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+ ba 7f
+ nop
+
+4: /* LENGTHS != NULL */
+ fmuls M0, %f15, M0
+ fmuls M5, %f15, M5
+ fmuls M10, %f15, M10
+
+5:
+ ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0)
+ * ty (f5) = (uy * m5)
+ * tz (f7) = (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ ld [%o3], %f13 ! LSU
+ fmuls %f1, M5, %f5 ! FGM Group
+ add %o3, 4, %o3 ! IEU0
+ fmuls %f2, M10, %f7 ! FGM Group
+
+ /* f3=tx, f5=ty, f7=tz, f13=lengths[i] */
+
+ fmuls %f3, %f13, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * len
+ fmuls %f5, %f13, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * len
+ fmuls %f7, %f13, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * len
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 5b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_transform_rescale_normals_no_rot
+_mesa_sparc_transform_rescale_normals_no_rot:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+ sub %sp, 16, %sp
+ st %o1, [%sp + STACK_VAR_OFF+0x0]
+ ld [%sp + STACK_VAR_OFF+0x0], %f15 ! f15 = scale
+ add %sp, 16, %sp
+
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_5_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+ fmuls M0, %f15, M0
+ fmuls M5, %f15, M5
+ fmuls M10, %f15, M10
+
+1: ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0)
+ * ty (f5) = (uy * m5)
+ * tz (f7) = (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ st %f3, [%g3 + 0x00] ! LSU
+ fmuls %f1, M5, %f5 ! FGM Group
+ st %f5, [%g3 + 0x04] ! LSU
+ fmuls %f2, M10, %f7 ! FGM Group
+ st %f7, [%g3 + 0x08] ! LSU
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_transform_rescale_normals
+_mesa_sparc_transform_rescale_normals:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+ sub %sp, 16, %sp
+ st %o1, [%sp + STACK_VAR_OFF+0x0]
+ ld [%sp + STACK_VAR_OFF+0x0], %f15 ! f15 = scale
+ add %sp, 16, %sp
+
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_1_2_4_5_6_8_9_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+ fmuls M0, %f15, M0
+ fmuls M1, %f15, M1
+ fmuls M2, %f15, M2
+ fmuls M4, %f15, M4
+ fmuls M5, %f15, M5
+ fmuls M6, %f15, M6
+ fmuls M8, %f15, M8
+ fmuls M9, %f15, M9
+ fmuls M10, %f15, M10
+
+1: ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ fmuls %f0, M0, %f3 ! FGM Group
+ fmuls %f1, M1, %f4 ! FGM Group
+ fmuls %f0, M4, %f5 ! FGM Group
+ fmuls %f1, M5, %f6 ! FGM Group
+ fmuls %f0, M8, %f7 ! FGM Group f3 available
+ fmuls %f1, M9, %f8 ! FGM Group f4 available
+ fadds %f3, %f4, %f3 ! FGA
+ fmuls %f2, M2, %f10 ! FGM Group f5 available
+ fmuls %f2, M6, %f0 ! FGM Group f6 available
+ fadds %f5, %f6, %f5 ! FGA
+ fmuls %f2, M10, %f4 ! FGM Group f7 available
+ fadds %f7, %f8, %f7 ! FGA Group f8,f3 available
+ fadds %f3, %f10, %f3 ! FGA Group f10 available
+ st %f3, [%g3 + 0x00] ! LSU
+ fadds %f5, %f0, %f5 ! FGA Group stall f0,f5 available
+ st %f5, [%g3 + 0x04] ! LSU
+ fadds %f7, %f4, %f7 ! FGA Group stall f4,f7 available
+ st %f7, [%g3 + 0x08] ! LSU
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_transform_normals_no_rot
+_mesa_sparc_transform_normals_no_rot:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_5_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1: ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* tx (f3) = (ux * m0)
+ * ty (f5) = (uy * m5)
+ * tz (f7) = (uz * m10)
+ */
+ fmuls %f0, M0, %f3 ! FGM Group
+ st %f3, [%g3 + 0x00] ! LSU
+ fmuls %f1, M5, %f5 ! FGM Group
+ st %f5, [%g3 + 0x04] ! LSU
+ fmuls %f2, M10, %f7 ! FGM Group
+ st %f7, [%g3 + 0x08] ! LSU
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_transform_normals
+_mesa_sparc_transform_normals:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+ LDPTR [%o0 + MAT_INV], %o0 ! o0 = mat->inv
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ LDMATRIX_0_1_2_4_5_6_8_9_10(%o0)
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1: ld [%o5 + 0x00], %f0 ! ux = from[0]
+ ld [%o5 + 0x04], %f1 ! uy = from[1]
+ ld [%o5 + 0x08], %f2 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ fmuls %f0, M0, %f3 ! FGM Group
+ fmuls %f1, M1, %f4 ! FGM Group
+ fmuls %f0, M4, %f5 ! FGM Group
+ fmuls %f1, M5, %f6 ! FGM Group
+ fmuls %f0, M8, %f7 ! FGM Group f3 available
+ fmuls %f1, M9, %f8 ! FGM Group f4 available
+ fadds %f3, %f4, %f3 ! FGA
+ fmuls %f2, M2, %f10 ! FGM Group f5 available
+ fmuls %f2, M6, %f0 ! FGM Group f6 available
+ fadds %f5, %f6, %f5 ! FGA
+ fmuls %f2, M10, %f4 ! FGM Group f7 available
+ fadds %f7, %f8, %f7 ! FGA Group f8,f3 available
+ fadds %f3, %f10, %f3 ! FGA Group f10 available
+ st %f3, [%g3 + 0x00] ! LSU
+ fadds %f5, %f0, %f5 ! FGA Group stall f0,f5 available
+ st %f5, [%g3 + 0x04] ! LSU
+ fadds %f7, %f4, %f7 ! FGA Group stall f4,f7 available
+ st %f7, [%g3 + 0x08] ! LSU
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_normalize_normals
+_mesa_sparc_normalize_normals:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+
+ sethi %hi(ONE_DOT_ZERO), %g2
+ sub %sp, 16, %sp
+ st %g2, [%sp + STACK_VAR_OFF+0x0]
+ ld [%sp + STACK_VAR_OFF+0x0], %f12 ! f12 = 1.0f
+ add %sp, 16, %sp
+
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ cmp %o3, 0
+ bne 4f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1: /* LENGTHS == NULL */
+ ld [%o5 + 0x00], %f3 ! ux = from[0]
+ ld [%o5 + 0x04], %f5 ! uy = from[1]
+ ld [%o5 + 0x08], %f7 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* f3=tx, f5=ty, f7=tz */
+
+ /* len (f6) = (tx * tx) + (ty * ty) + (tz * tz) */
+ fmuls %f3, %f3, %f6 ! FGM Group f3 available
+ fmuls %f5, %f5, %f8 ! FGM Group f5 available
+ fmuls %f7, %f7, %f10 ! FGM Group f7 available
+ fadds %f6, %f8, %f6 ! FGA Group 2cyc stall f6,f8 available
+ fadds %f6, %f10, %f6 ! FGA Group 4cyc stall f6,f10 available
+
+ /* scale (f6) = 1.0 / sqrt(len) */
+ fsqrts %f6, %f6 ! FDIV 20 cycles
+ fdivs %f12, %f6, %f6 ! FDIV 14 cycles
+
+ fmuls %f3, %f6, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * scale
+ fmuls %f5, %f6, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * scale
+ fmuls %f7, %f6, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * scale
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+ ba 7f
+ nop
+
+4: /* LENGTHS != NULL */
+
+5:
+ ld [%o5 + 0x00], %f3 ! ux = from[0]
+ ld [%o5 + 0x04], %f5 ! uy = from[1]
+ ld [%o5 + 0x08], %f7 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ ld [%o3], %f13 ! LSU
+ add %o3, 4, %o3 ! IEU0
+
+ /* f3=tx, f5=ty, f7=tz, f13=lengths[i] */
+
+ fmuls %f3, %f13, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * len
+ fmuls %f5, %f13, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * len
+ fmuls %f7, %f13, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * len
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 5b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
+
+ .globl _mesa_sparc_rescale_normals
+_mesa_sparc_rescale_normals:
+ /* o0=mat o1=scale o2=in o3=lengths o4=dest */
+
+ sethi %hi(ONE_DOT_ZERO), %g2
+ sub %sp, 16, %sp
+ st %o1, [%sp + STACK_VAR_OFF+0x0]
+ ld [%sp + STACK_VAR_OFF+0x0], %f15 ! f15 = scale
+ add %sp, 16, %sp
+
+ LDPTR [%o2 + V4F_START], %o5 ! o5 = 'from' in->start
+ ld [%o2 + V4F_COUNT], %g1 ! g1 = in->count
+ ld [%o2 + V4F_STRIDE], %g2 ! g2 = in->stride
+ LDPTR [%o4 + V4F_START], %g3 ! g3 = 'out' dest->start
+
+ /* dest->count = in->count */
+ st %g1, [%o4 + V4F_COUNT]
+
+ cmp %g1, 1
+ bl 7f
+ clr %o4 ! 'i' for STRIDE_LOOP
+
+1:
+ ld [%o5 + 0x00], %f3 ! ux = from[0]
+ ld [%o5 + 0x04], %f5 ! uy = from[1]
+ ld [%o5 + 0x08], %f7 ! uz = from[2]
+ add %o5, %g2, %o5 ! STRIDE_F(from, stride)
+ add %o4, 1, %o4 ! i++
+
+ /* f3=tx, f5=ty, f7=tz */
+
+ fmuls %f3, %f15, %f3
+ st %f3, [%g3 + 0x00] ! out[i][0] = tx * scale
+ fmuls %f5, %f15, %f5
+ st %f5, [%g3 + 0x04] ! out[i][1] = ty * scale
+ fmuls %f7, %f15, %f7
+ st %f7, [%g3 + 0x08] ! out[i][2] = tz * scale
+
+ cmp %o4, %g1 ! continue if (i < count)
+ bl 1b
+ add %g3, 0x0c, %g3 ! advance out vector pointer
+
+7: retl
+ nop
diff --git a/src/mesa/sparc/sparc.c b/src/mesa/sparc/sparc.c
new file mode 100644
index 00000000000..b7fe360d2c6
--- /dev/null
+++ b/src/mesa/sparc/sparc.c
@@ -0,0 +1,177 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Sparc assembly code by David S. Miller
+ */
+
+
+#include "sparc.h"
+
+#ifdef USE_SPARC_ASM
+
+#include "context.h"
+#include "math/m_xform.h"
+#include "tnl/t_context.h"
+
+#ifdef DEBUG
+#include "math/m_debug.h"
+#endif
+
+#define XFORM_ARGS GLvector4f *to_vec, \
+ const GLfloat m[16], \
+ const GLvector4f *from_vec
+
+#define DECLARE_XFORM_GROUP(pfx, sz) \
+ extern void _mesa_##pfx##_transform_points##sz##_general(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_identity(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_3d_no_rot(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_perspective(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_2d(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_2d_no_rot(XFORM_ARGS); \
+ extern void _mesa_##pfx##_transform_points##sz##_3d(XFORM_ARGS);
+
+#define ASSIGN_XFORM_GROUP(pfx, sz) \
+ _mesa_transform_tab[sz][MATRIX_GENERAL] = \
+ _mesa_##pfx##_transform_points##sz##_general; \
+ _mesa_transform_tab[sz][MATRIX_IDENTITY] = \
+ _mesa_##pfx##_transform_points##sz##_identity; \
+ _mesa_transform_tab[sz][MATRIX_3D_NO_ROT] = \
+ _mesa_##pfx##_transform_points##sz##_3d_no_rot; \
+ _mesa_transform_tab[sz][MATRIX_PERSPECTIVE] = \
+ _mesa_##pfx##_transform_points##sz##_perspective; \
+ _mesa_transform_tab[sz][MATRIX_2D] = \
+ _mesa_##pfx##_transform_points##sz##_2d; \
+ _mesa_transform_tab[sz][MATRIX_2D_NO_ROT] = \
+ _mesa_##pfx##_transform_points##sz##_2d_no_rot; \
+ _mesa_transform_tab[sz][MATRIX_3D] = \
+ _mesa_##pfx##_transform_points##sz##_3d;
+
+
+DECLARE_XFORM_GROUP(sparc, 1)
+DECLARE_XFORM_GROUP(sparc, 2)
+DECLARE_XFORM_GROUP(sparc, 3)
+DECLARE_XFORM_GROUP(sparc, 4)
+
+extern GLvector4f *_mesa_sparc_cliptest_points4(GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask);
+
+extern GLvector4f *_mesa_sparc_cliptest_points4_np(GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask);
+
+#define NORM_ARGS const GLmatrix *mat, \
+ GLfloat scale, \
+ const GLvector4f *in, \
+ const GLfloat *lengths, \
+ GLvector4f *dest
+
+extern void _mesa_sparc_transform_normalize_normals(NORM_ARGS);
+extern void _mesa_sparc_transform_normalize_normals_no_rot(NORM_ARGS);
+extern void _mesa_sparc_transform_rescale_normals_no_rot(NORM_ARGS);
+extern void _mesa_sparc_transform_rescale_normals(NORM_ARGS);
+extern void _mesa_sparc_transform_normals_no_rot(NORM_ARGS);
+extern void _mesa_sparc_transform_normals(NORM_ARGS);
+extern void _mesa_sparc_normalize_normals(NORM_ARGS);
+extern void _mesa_sparc_rescale_normals(NORM_ARGS);
+
+
+
+void _mesa_init_all_sparc_transform_asm(void)
+{
+ ASSIGN_XFORM_GROUP(sparc, 1)
+ ASSIGN_XFORM_GROUP(sparc, 2)
+ ASSIGN_XFORM_GROUP(sparc, 3)
+ ASSIGN_XFORM_GROUP(sparc, 4)
+
+ _mesa_clip_tab[4] = _mesa_sparc_cliptest_points4;
+ _mesa_clip_np_tab[4] = _mesa_sparc_cliptest_points4_np;
+
+#if 0
+ /* disable these too. See bug 673938 */
+ _mesa_normal_tab[NORM_TRANSFORM | NORM_NORMALIZE] =
+ _mesa_sparc_transform_normalize_normals;
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE] =
+ _mesa_sparc_transform_normalize_normals_no_rot;
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE] =
+ _mesa_sparc_transform_rescale_normals_no_rot;
+ _mesa_normal_tab[NORM_TRANSFORM | NORM_RESCALE] =
+ _mesa_sparc_transform_rescale_normals;
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT] =
+ _mesa_sparc_transform_normals_no_rot;
+ _mesa_normal_tab[NORM_TRANSFORM] =
+ _mesa_sparc_transform_normals;
+ _mesa_normal_tab[NORM_NORMALIZE] =
+ _mesa_sparc_normalize_normals;
+ _mesa_normal_tab[NORM_RESCALE] =
+ _mesa_sparc_rescale_normals;
+#endif
+
+#ifdef DEBUG
+ _math_test_all_transform_functions("sparc");
+ _math_test_all_cliptest_functions("sparc");
+ _math_test_all_normal_transform_functions("sparc");
+#endif
+}
+
+extern unsigned int _mesa_sparc_glapi_begin;
+extern unsigned int _mesa_sparc_glapi_end;
+extern void __glapi_sparc_icache_flush(unsigned int *);
+
+#endif /* USE_SPARC_ASM */
+
+
+void _mesa_init_sparc_glapi_relocs(void)
+{
+#ifdef USE_SPARC_ASM
+ 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 __arch64__
+ insn_ptr[0] |= (disp_addr >> (32 + 10));
+ insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10);
+ __glapi_sparc_icache_flush(&insn_ptr[0]);
+ insn_ptr[2] |= ((disp_addr >> 32) & ((1 << 10) - 1));
+ insn_ptr[3] |= (disp_addr & ((1 << 10) - 1));
+ __glapi_sparc_icache_flush(&insn_ptr[2]);
+ insn_ptr += 11;
+#else
+ insn_ptr[0] |= (disp_addr >> 10);
+ insn_ptr[1] |= (disp_addr & ((1 << 10) - 1));
+ __glapi_sparc_icache_flush(&insn_ptr[0]);
+ insn_ptr += 5;
+#endif
+ }
+#endif /* USE_SPARC_ASM */
+}
diff --git a/src/mesa/sparc/sparc.h b/src/mesa/sparc/sparc.h
new file mode 100644
index 00000000000..55ab12122d8
--- /dev/null
+++ b/src/mesa/sparc/sparc.h
@@ -0,0 +1,38 @@
+/* $Id: sparc.h,v 1.3 2001/06/06 22:55:28 davem69 Exp $ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.1
+ *
+ * Copyright (C) 1999 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Sparc assembly code by David S. Miller
+ */
+
+
+#ifndef SPARC_H
+#define SPARC_H
+
+extern void _mesa_init_all_sparc_transform_asm(void);
+extern void _mesa_init_sparc_glapi_relocs(void);
+
+#endif /* !(SPARC_H) */
diff --git a/src/mesa/sparc/sparc_matrix.h b/src/mesa/sparc/sparc_matrix.h
new file mode 100644
index 00000000000..f677d9bda13
--- /dev/null
+++ b/src/mesa/sparc/sparc_matrix.h
@@ -0,0 +1,170 @@
+/*
+ * SPARC assembly matrix code.
+ */
+
+#ifndef _SPARC_MATRIX_H
+#define _SPARC_MATRIX_H
+
+#ifdef __arch64__
+#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 M1 %f17
+#define M2 %f18
+#define M3 %f19
+#define M4 %f20
+#define M5 %f21
+#define M6 %f22
+#define M7 %f23
+#define M8 %f24
+#define M9 %f25
+#define M10 %f26
+#define M11 %f27
+#define M12 %f28
+#define M13 %f29
+#define M14 %f30
+#define M15 %f31
+
+#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + ( 2 * 0x4)], M2; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ldd [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_1_12_13(BASE) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + (12 * 0x4)], M12
+
+#define LDMATRIX_0_12_13(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + (12 * 0x4)], M12
+
+#define LDMATRIX_0_1_2_12_13_14(BASE) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 2 * 0x4)], M2; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ld [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_12_13_14(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ 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) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + ( 2 * 0x4)], M2; \
+ ldd [BASE + ( 4 * 0x4)], M4; \
+ ldd [BASE + ( 6 * 0x4)], M6; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ldd [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_5_12_13(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ ldd [BASE + (12 * 0x4)], M12
+
+#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + ( 2 * 0x4)], M2; \
+ ldd [BASE + ( 4 * 0x4)], M4; \
+ ld [BASE + ( 6 * 0x4)], M6; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ld [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_5_12_13_14(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ 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) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + ( 2 * 0x4)], M2; \
+ ldd [BASE + ( 4 * 0x4)], M4; \
+ ldd [BASE + ( 6 * 0x4)], M6; \
+ ldd [BASE + ( 8 * 0x4)], M8; \
+ ldd [BASE + (10 * 0x4)], M10; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ldd [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_1_4_5_12_13(BASE) \
+ ldd [BASE + ( 0 * 0x4)], M0; \
+ ldd [BASE + ( 4 * 0x4)], M4; \
+ ldd [BASE + (12 * 0x4)], M12
+
+#define LDMATRIX_0_5_12_13(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ 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) \
+ 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; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ld [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_5_10(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ ld [BASE + (10 * 0x4)], M10; \
+
+#define LDMATRIX_0_5_10_12_13_14(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ ld [BASE + (10 * 0x4)], M10; \
+ ldd [BASE + (12 * 0x4)], M12; \
+ ld [BASE + (14 * 0x4)], M14
+
+#define LDMATRIX_0_5_8_9_10_14(BASE) \
+ ld [BASE + ( 0 * 0x4)], M0; \
+ ld [BASE + ( 5 * 0x4)], M5; \
+ ldd [BASE + ( 8 * 0x4)], M8; \
+ ld [BASE + (10 * 0x4)], M10; \
+ ld [BASE + (14 * 0x4)], M14
+
+#endif /* !(_SPARC_MATRIX_H) */
diff --git a/src/mesa/sparc/xform.S b/src/mesa/sparc/xform.S
new file mode 100644
index 00000000000..f44ec794e94
--- /dev/null
+++ b/src/mesa/sparc/xform.S
@@ -0,0 +1,1393 @@
+/* $Id: xform.S,v 1.4 2005/07/28 00:11:11 idr Exp $ */
+
+ /* TODO
+ *
+ * 1) It would be nice if load/store double could be used
+ * at least for the matrix parts. I think for the matrices
+ * it is safe, but for the vertices it probably is not due to
+ * things like glInterleavedArrays etc.
+ *
+ * UPDATE: Trying this now in sparc_matrix.h -DaveM_990624
+ *
+ * 2) One extremely slick trick would be if we could enclose
+ * groups of xform calls on the same vertices such that
+ * we just load the matrix into f16-->f31 before the calls
+ * and then we would not have to do them here. This may be
+ * tricky and not much of a gain though.
+ */
+
+#include "sparc_matrix.h"
+
+#if defined(SVR4) || defined(__SVR4) || defined(__svr4__)
+ /* Solaris requires this for 64-bit. */
+ .register %g2, #scratch
+ .register %g3, #scratch
+#endif
+
+ .text
+ .align 64
+
+__set_v4f_1:
+ ld [%o0 + V4F_FLAGS], %g2
+ mov 1, %g1
+ st %g1, [%o0 + V4F_SIZE]
+ or %g2, VEC_SIZE_1, %g2
+ retl
+ st %g2, [%o0 + V4F_FLAGS]
+__set_v4f_2:
+ ld [%o0 + V4F_FLAGS], %g2
+ mov 2, %g1
+ st %g1, [%o0 + V4F_SIZE]
+ or %g2, VEC_SIZE_2, %g2
+ retl
+ st %g2, [%o0 + V4F_FLAGS]
+__set_v4f_3:
+ ld [%o0 + V4F_FLAGS], %g2
+ mov 3, %g1
+ st %g1, [%o0 + V4F_SIZE]
+ or %g2, VEC_SIZE_3, %g2
+ retl
+ st %g2, [%o0 + V4F_FLAGS]
+__set_v4f_4:
+ ld [%o0 + V4F_FLAGS], %g2
+ mov 4, %g1
+ st %g1, [%o0 + V4F_SIZE]
+ or %g2, VEC_SIZE_4, %g2
+ retl
+ st %g2, [%o0 + V4F_FLAGS]
+
+ /* First the raw versions. */
+
+ .globl _mesa_sparc_transform_points1_general
+_mesa_sparc_transform_points1_general:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_3_12_13_14_15(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f8 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
+ fmuls %f0, M1, %f2 ! FGM Group
+ fmuls %f0, M2, %f3 ! FGM Group
+ fmuls %f0, M3, %f4 ! FGM Group
+ fmuls %f8, M0, %f9 ! FGM Group f1 available
+ fadds %f1, M12, %f1 ! FGA
+ st %f1, [%g2 + 0x00] ! LSU
+ fmuls %f8, M1, %f10 ! FGM Group f2 available
+ fadds %f2, M13, %f2 ! FGA
+ st %f2, [%g2 + 0x04] ! LSU
+ fmuls %f8, M2, %f11 ! FGM Group f3 available
+ fadds %f3, M14, %f3 ! FGA
+ st %f3, [%g2 + 0x08] ! LSU
+ fmuls %f8, M3, %f12 ! FGM Group f4 available
+ fadds %f4, M15, %f4 ! FGA
+ st %f4, [%g2 + 0x0c] ! LSU
+ fadds %f9, M12, %f9 ! FGA Group f9 available
+ st %f9, [%g2 + 0x10] ! LSU
+ fadds %f10, M13, %f10 ! FGA Group f10 available
+ st %f10, [%g2 + 0x14] ! LSU
+ fadds %f11, M14, %f11 ! FGA Group f11 available
+ st %f11, [%g2 + 0x18] ! LSU
+ fadds %f12, M15, %f12 ! FGA Group f12 available
+ st %f12, [%g2 + 0x1c] ! LSU
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0 ! LSU Group
+ fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
+ fmuls %f0, M1, %f2 ! FGM Group
+ fmuls %f0, M2, %f3 ! FGM Group
+ fmuls %f0, M3, %f4 ! FGM Group
+ fadds %f1, M12, %f1 ! FGA Group
+ st %f1, [%g2 + 0x00] ! LSU
+ fadds %f2, M13, %f2 ! FGA Group
+ st %f2, [%g2 + 0x04] ! LSU
+ fadds %f3, M14, %f3 ! FGA Group
+ st %f3, [%g2 + 0x08] ! LSU
+ fadds %f4, M15, %f4 ! FGA Group
+ st %f4, [%g2 + 0x0c] ! LSU
+
+3:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points1_identity
+_mesa_sparc_transform_points1_identity:
+ cmp %o0, %o2
+ be 4f
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f1 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ st %f0, [%g2 + 0x00] ! LSU Group
+ cmp %o1, %o2 ! IEU1
+ st %f1, [%g2 + 0x10] ! LSU Group
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ addx %g0, %g0, %g0
+ st %f0, [%g2 + 0x00]
+
+3:
+ ba __set_v4f_1
+ nop
+
+4: retl
+ nop
+
+ .globl _mesa_sparc_transform_points1_2d
+_mesa_sparc_transform_points1_2d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_12_13(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f8 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group
+ fmuls %f0, M1, %f2 ! FGM Group
+ fmuls %f8, M0, %f9 ! FGM Group
+ fmuls %f8, M1, %f10 ! FGM Group
+ fadds %f1, M12, %f3 ! FGA Group f1 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f2, M13, %f4 ! FGA Group f2 available
+ st %f4, [%g2 + 0x04] ! LSU
+ fadds %f9, M12, %f11 ! FGA Group f9 available
+ st %f11, [%g2 + 0x10] ! LSU
+ fadds %f10, M13, %f12 ! FGA Group f10 available
+ st %f12, [%g2 + 0x14] ! LSU
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ fmuls %f0, M0, %f1
+ fmuls %f0, M1, %f2
+ fadds %f1, M12, %f3
+ st %f3, [%g2 + 0x00]
+ fadds %f2, M13, %f4
+ st %f4, [%g2 + 0x04]
+
+3:
+ ba __set_v4f_2
+ nop
+
+ .globl _mesa_sparc_transform_points1_2d_no_rot
+_mesa_sparc_transform_points1_2d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_12_13(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f4 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group
+ fmuls %f4, M0, %f5 ! FGM Group
+ fadds %f1, M12, %f3 ! FGA Group, 2 cycle stall, f1 available
+ st %f3, [%g2 + 0x00] ! LSU
+ st M13, [%g2 + 0x04] ! LSU Group, f5 available
+ fadds %f5, M12, %f6 ! FGA
+ st %f6, [%g2 + 0x10] ! LSU Group
+ st M13, [%g2 + 0x14] ! LSU Group
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ fmuls %f0, M0, %f1
+ fadds %f1, M12, %f3
+ st %f3, [%g2 + 0x00]
+ st M13, [%g2 + 0x04]
+
+3:
+ ba __set_v4f_2
+ nop
+
+ .globl _mesa_sparc_transform_points1_3d
+_mesa_sparc_transform_points1_3d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_12_13_14(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f4 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group
+ fmuls %f0, M1, %f2 ! FGM Group
+ fmuls %f0, M2, %f3 ! FGM Group
+ fmuls %f4, M0, %f5 ! FGM Group
+ fadds %f1, M12, %f1 ! FGA Group, f1 available
+ st %f1, [%g2 + 0x00] ! LSU
+ fmuls %f4, M1, %f6 ! FGM
+ fadds %f2, M13, %f2 ! FGA Group, f2 available
+ st %f2, [%g2 + 0x04] ! LSU
+ fmuls %f4, M2, %f7 ! FGM
+ fadds %f3, M14, %f3 ! FGA Group, f3 available
+ st %f3, [%g2 + 0x08] ! LSU
+ fadds %f5, M12, %f5 ! FGA Group, f5 available
+ st %f5, [%g2 + 0x10] ! LSU
+ fadds %f6, M13, %f6 ! FGA Group, f6 available
+ st %f6, [%g2 + 0x14] ! LSU
+ fadds %f7, M14, %f7 ! FGA Group, f7 available
+ st %f7, [%g2 + 0x18] ! LSU
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ fmuls %f0, M0, %f1
+ fmuls %f0, M1, %f2
+ fmuls %f0, M2, %f3
+ fadds %f1, M12, %f1
+ st %f1, [%g2 + 0x00]
+ fadds %f2, M13, %f2
+ st %f2, [%g2 + 0x04]
+ fadds %f3, M14, %f3
+ st %f3, [%g2 + 0x08]
+
+3:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points1_3d_no_rot
+_mesa_sparc_transform_points1_3d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_12_13_14(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f2 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group
+ fmuls %f2, M0, %f3 ! FGM Group
+ fadds %f1, M12, %f1 ! FGA Group, 2 cycle stall, f1 available
+ st %f1, [%g2 + 0x00] ! LSU
+ fadds %f3, M12, %f3 ! FGA Group, f3 available
+ st M13, [%g2 + 0x04] ! LSU
+ st M14, [%g2 + 0x08] ! LSU Group
+ st %f3, [%g2 + 0x10] ! LSU Group
+ st M13, [%g2 + 0x14] ! LSU Group
+ st M14, [%g2 + 0x18] ! LSU Group
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ fmuls %f0, M0, %f1
+ fadds %f1, M12, %f1
+ st %f1, [%g2 + 0x00]
+ st M13, [%g2 + 0x04]
+ st M14, [%g2 + 0x08]
+
+3:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points1_perspective
+_mesa_sparc_transform_points1_perspective:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_14(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ ld [%g1 + 0x00], %f2 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f1 ! FGM Group
+ st %f1, [%g2 + 0x00] ! LSU
+ fmuls %f2, M0, %f3 ! FGM Group
+ st %g0, [%g2 + 0x04] ! LSU
+ st M14, [%g2 + 0x08] ! LSU Group
+ st %g0, [%g2 + 0x0c] ! LSU Group
+ st %f3, [%g2 + 0x10] ! LSU Group
+ st %g0, [%g2 + 0x14] ! LSU Group
+ st M14, [%g2 + 0x18] ! LSU Group
+ st %g0, [%g2 + 0x1c] ! LSU Group
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0
+ fmuls %f0, M0, %f1
+ st %f1, [%g2 + 0x00]
+ st %g0, [%g2 + 0x04]
+ st M14, [%g2 + 0x08]
+ st %g0, [%g2 + 0x0c]
+
+3:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points2_general
+_mesa_sparc_transform_points2_general:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f2 ! FGM Group
+ fmuls %f0, M1, %f3 ! FGM Group
+ fmuls %f0, M2, %f4 ! FGM Group
+ fmuls %f0, M3, %f5 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group f2 available
+ fmuls %f1, M4, %f6 ! FGM
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ fmuls %f1, M5, %f7 ! FGM
+ fadds %f4, M14, %f4 ! FGA Group f4 available
+ fmuls %f1, M6, %f8 ! FGM
+ fadds %f5, M15, %f5 ! FGA Group f5 available
+ fmuls %f1, M7, %f9 ! FGM
+ fadds %f2, %f6, %f2 ! FGA Group f6 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, %f7, %f3 ! FGA Group f7 available
+ st %f3, [%g2 + 0x04] ! LSU
+ fadds %f4, %f8, %f4 ! FGA Group f8 available
+ st %f4, [%g2 + 0x08] ! LSU
+ fadds %f5, %f9, %f5 ! FGA Group f9 available
+ st %f5, [%g2 + 0x0c] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points2_identity
+_mesa_sparc_transform_points2_identity:
+ cmp %o2, %o0
+ be 3f
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %g1, %o5, %g1 ! IEU0
+ cmp %o1, %g3 ! IEU1
+ st %f0, [%g2 + 0x00] ! LSU Group
+ st %f1, [%g2 + 0x04] ! LSU Group
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0
+2:
+ ba __set_v4f_2
+ nop
+
+3: retl
+ nop
+
+ .globl _mesa_sparc_transform_points2_2d
+_mesa_sparc_transform_points2_2d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_4_5_12_13(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f2 ! FGM
+ ld [%g1 + 0x00], %f8 ! LSU Group
+ fmuls %f0, M1, %f3 ! FGM
+ ld [%g1 + 0x04], %f9 ! LSU Group
+ fmuls %f1, M4, %f6 ! FGM
+ fmuls %f1, M5, %f7 ! FGM Group
+ add %g1, %o5, %g1 ! IEU0
+ fmuls %f8, M0, %f10 ! FGM Group f2 available
+ fadds %f2, M12, %f2 ! FGA
+ fmuls %f8, M1, %f11 ! FGM Group f3 available
+ fadds %f3, M13, %f3 ! FGA
+ fmuls %f9, M4, %f12 ! FGM Group
+ fmuls %f9, M5, %f13 ! FGM Group
+ fadds %f10, M12, %f10 ! FGA Group f2, f10 available
+ fadds %f2, %f6, %f2 ! FGA Group f3, f11 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f11, M13, %f11 ! FGA Group f12 available
+ fadds %f3, %f7, %f3 ! FGA Group f13 available
+ st %f3, [%g2 + 0x04] ! LSU
+ fadds %f10, %f12, %f10 ! FGA Group f10 available
+ st %f10, [%g2 + 0x10] ! LSU
+ fadds %f11, %f13, %f11 ! FGA Group f11 available
+ st %f11, [%g2 + 0x14] ! LSU
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM Group
+ fmuls %f0, M1, %f3 ! FGM Group
+ fmuls %f1, M4, %f6 ! FGM Group
+ fmuls %f1, M5, %f7 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group f2 available
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ fadds %f2, %f6, %f2 ! FGA Group 2 cycle stall, f2 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, %f7, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x04] ! LSU
+
+3:
+ ba __set_v4f_2
+ nop
+
+ .globl _mesa_sparc_transform_points2_2d_no_rot
+_mesa_sparc_transform_points2_2d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_12_13(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ ld [%g1 + 0x00], %f4 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM
+ ld [%g1 + 0x04], %f5 ! LSU Group
+ fmuls %f1, M5, %f3 ! FGM
+ fmuls %f4, M0, %f6 ! FGM Group
+ add %g1, %o5, %g1 ! IEU0
+ fmuls %f5, M5, %f7 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group f2 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x04] ! LSU
+ fadds %f6, M12, %f6 ! FGA Group f6 available
+ st %f6, [%g2 + 0x10] ! LSU
+ fadds %f7, M13, %f7 ! FGA Group f7 available
+ st %f7, [%g2 + 0x14] ! LSU
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM Group
+ fmuls %f1, M5, %f3 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x04] ! LSU
+
+3:
+ ba __set_v4f_2
+ nop
+
+ /* orig: 12 cycles */
+ .globl _mesa_sparc_transform_points2_3d
+_mesa_sparc_transform_points2_3d:
+ ld [%o2 + V4F_STRIDE], %o5
+ ld [%o2 + V4F_START], %g1
+ ld [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o1
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %o1, 2, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ ld [%g1 + 0x00], %f9 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM
+ ld [%g1 + 0x04], %f10 ! LSU Group
+ fmuls %f0, M1, %f3 ! FGM
+ fmuls %f0, M2, %f4 ! FGM Group
+ add %g1, %o5, %g1 ! IEU0
+ fmuls %f1, M4, %f6 ! FGM Group
+ fmuls %f1, M5, %f7 ! FGM Group f2 available
+ fadds %f2, M12, %f2 ! FGA
+ fmuls %f1, M6, %f8 ! FGM Group f3 available
+ fadds %f3, M13, %f3 ! FGA
+ fmuls %f9, M0, %f11 ! FGM Group f4 available
+ fadds %f4, M14, %f4 ! FGA
+ fmuls %f9, M1, %f12 ! FGM Group f6 available
+ fmuls %f9, M2, %f13 ! FGM Group f2, f7 available
+ fadds %f2, %f6, %f2 ! FGA
+ st %f2, [%g2 + 0x00] ! LSU
+ fmuls %f10, M4, %f14 ! FGM Group f3, f8 available
+ fadds %f3, %f7, %f3 ! FGA
+ st %f3, [%g2 + 0x04] ! LSU
+ fmuls %f10, M5, %f15 ! FGM Group f4, f11 available
+ fadds %f11, M12, %f11 ! FGA
+ fmuls %f10, M6, %f0 ! FGM Group f12 available
+ fadds %f12, M13, %f12 ! FGA
+ fadds %f13, M14, %f13 ! FGA Group f13 available
+ fadds %f4, %f8, %f4 ! FGA Group f14 available
+ st %f4, [%g2 + 0x08] ! LSU
+ fadds %f11, %f14, %f11 ! FGA Group f15, f11 available
+ st %f11, [%g2 + 0x10] ! LSU
+ fadds %f12, %f15, %f12 ! FGA Group f0, f12 available
+ st %f12, [%g2 + 0x14] ! LSU
+ fadds %f13, %f0, %f13 ! FGA Group f13 available
+ st %f13, [%g2 + 0x18] ! LSU
+
+ cmp %o1, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o1, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM Group
+ fmuls %f0, M1, %f3 ! FGM Group
+ fmuls %f0, M2, %f4 ! FGM Group
+ fmuls %f1, M4, %f6 ! FGM Group
+ fmuls %f1, M5, %f7 ! FGM Group f2 available
+ fadds %f2, M12, %f2 ! FGA
+ fmuls %f1, M6, %f8 ! FGM Group f3 available
+ fadds %f3, M13, %f3 ! FGA
+ fadds %f4, M14, %f4 ! FGA Group f4 available
+ fadds %f2, %f6, %f2 ! FGA Group stall, f2, f6, f7 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, %f7, %f3 ! FGA Group f3, f8 available
+ st %f3, [%g2 + 0x04] ! LSU
+ fadds %f4, %f8, %f4 ! FGA Group f4 available
+ st %f4, [%g2 + 0x08] ! LSU
+
+3:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points2_3d_no_rot
+_mesa_sparc_transform_points2_3d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_12_13_14(%o1)
+
+ cmp %g3, 1
+ st %g3, [%o0 + V4F_COUNT]
+ bl 3f
+ clr %o3
+
+ be 2f
+ andn %g3, 1, %o2
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ add %o3, 2, %o3 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ ld [%g1 + 0x00], %f4 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM
+ ld [%g1 + 0x04], %f5 ! LSU Group
+ fmuls %f1, M5, %f3 ! FGM
+ fmuls %f4, M0, %f6 ! FGM Group
+ add %g1, %o5, %g1 ! IEU0
+ fmuls %f5, M5, %f7 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group f2 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x04] ! LSU
+ fadds %f6, M12, %f6 ! FGA Group f6 available
+ st M14, [%g2 + 0x08] ! LSU
+ fadds %f7, M13, %f7 ! FGA Group f7 available
+ st %f6, [%g2 + 0x10] ! LSU
+ st %f7, [%g2 + 0x14] ! LSU Group
+ st M14, [%g2 + 0x18] ! LSU Group
+ cmp %o3, %o2 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x20, %g2 ! IEU0 Group
+
+ cmp %o3, %g3
+ be 3f
+ nop
+
+2: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ fmuls %f0, M0, %f2 ! FGM Group
+ fmuls %f1, M5, %f3 ! FGM Group
+ fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
+ st %f2, [%g2 + 0x00] ! LSU
+ fadds %f3, M13, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x04] ! LSU
+ st M14, [%g2 + 0x08] ! LSU Group
+
+3: ld [%o1 + (14 * 0x4)], %g3
+ cmp %g3, 0
+ bne __set_v4f_3
+ nop
+ ba __set_v4f_2
+ nop
+
+ .globl _mesa_sparc_transform_points2_perspective
+_mesa_sparc_transform_points2_perspective:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0
+ ld [%g1 + 0x04], %f1
+ add %o1, 1, %o1
+ add %g1, %o5, %g1
+ fmuls %f0, M0, %f2
+ st %f2, [%g2 + 0x00]
+ fmuls %f1, M5, %f3
+ st %f3, [%g2 + 0x04]
+ st M14, [%g2 + 0x08]
+ st %g0, [%g2 + 0x0c]
+ cmp %o1, %g3
+ bne 1b
+ add %g2, 0x10, %g2
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points3_general
+_mesa_sparc_transform_points3_general:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f1, M4, %f7 ! FGM Group
+ fmuls %f0, M1, %f4 ! FGM Group
+ fmuls %f1, M5, %f8 ! FGM Group
+ fmuls %f0, M2, %f5 ! FGM Group f3 available
+ fmuls %f1, M6, %f9 ! FGM Group f7 available
+ fadds %f3, %f7, %f3 ! FGA
+ fmuls %f0, M3, %f6 ! FGM Group f4 available
+ fmuls %f1, M7, %f10 ! FGM Group f8 available
+ fadds %f4, %f8, %f4 ! FGA
+ fmuls %f2, M8, %f7 ! FGM Group f5 available
+ fmuls %f2, M9, %f8 ! FGM Group f9,f3 available
+ fadds %f5, %f9, %f5 ! FGA
+ fmuls %f2, M10, %f9 ! FGM Group f6 available
+ fadds %f6, %f10, %f6 ! FGA Group f10,f4 available
+ fmuls %f2, M11, %f10 ! FGM
+ fadds %f3, M12, %f3 ! FGA Group f7 available
+ fadds %f4, M13, %f4 ! FGA Group f8,f5 available
+ fadds %f5, M14, %f5 ! FGA Group f9 available
+ fadds %f6, M15, %f6 ! FGA Group f10,f6 available
+ fadds %f3, %f7, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, %f8, %f4 ! FGA Group f4 available
+ st %f4, [%g2 + 0x04] ! LSU
+ fadds %f5, %f9, %f5 ! FGA Group f5 available
+ st %f5, [%g2 + 0x08] ! LSU
+ fadds %f6, %f10, %f6 ! FGA Group f6 available
+ st %f6, [%g2 + 0x0c] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points3_identity
+_mesa_sparc_transform_points3_identity:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0
+ ld [%g1 + 0x04], %f1
+ ld [%g1 + 0x08], %f2
+ add %o1, 1, %o1
+ add %g1, %o5, %g1
+ cmp %o1, %g3
+ st %f0, [%g2 + 0x00]
+ st %f1, [%g2 + 0x04]
+ st %f2, [%g2 + 0x08]
+ bne 1b
+ add %g2, 0x10, %g2
+2:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points3_2d
+_mesa_sparc_transform_points3_2d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_4_5_12_13(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f0, M1, %f4 ! FGM Group
+ fmuls %f1, M4, %f6 ! FGM Group
+ fmuls %f1, M5, %f7 ! FGM Group
+ fadds %f3, M12, %f3 ! FGA Group f3 available
+ fadds %f4, M13, %f4 ! FGA Group f4 available
+ fadds %f3, %f6, %f3 ! FGA Group f6 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, %f7, %f4 ! FGA Group f7 available
+ st %f4, [%g2 + 0x04] ! LSU
+ st %f2, [%g2 + 0x08] ! LSU Group
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points3_2d_no_rot
+_mesa_sparc_transform_points3_2d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_12_13(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f1, M5, %f4 ! FGM Group
+ st %f2, [%g2 + 0x08] ! LSU
+ fadds %f3, M12, %f3 ! FGA Group
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, M13, %f4 ! FGA Group
+ st %f4, [%g2 + 0x04] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points3_3d
+_mesa_sparc_transform_points3_3d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f1, M4, %f6 ! FGM Group
+ fmuls %f0, M1, %f4 ! FGM Group
+ fmuls %f1, M5, %f7 ! FGM Group
+ fmuls %f0, M2, %f5 ! FGM Group f3 available
+ fmuls %f1, M6, %f8 ! FGM Group f6 available
+ fadds %f3, %f6, %f3 ! FGA
+ fmuls %f2, M8, %f9 ! FGM Group f4 available
+ fmuls %f2, M9, %f10 ! FGM Group f7 available
+ fadds %f4, %f7, %f4 ! FGA
+ fmuls %f2, M10, %f11 ! FGM Group f5 available
+ fadds %f5, %f8, %f5 ! FGA Group f8, f3 available
+ fadds %f3, %f9, %f3 ! FGA Group f9 available
+ fadds %f4, %f10, %f4 ! FGA Group f10, f4 available
+ fadds %f5, %f11, %f5 ! FGA Group stall, f11, f5 available
+ fadds %f3, M12, %f3 ! FGA Group f3 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, M13, %f4 ! FGA Group f4 available
+ st %f4, [%g2 + 0x04] ! LSU
+ fadds %f5, M14, %f5 ! FGA Group f5 available
+ st %f5, [%g2 + 0x08] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points3_3d_no_rot
+_mesa_sparc_transform_points3_3d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_10_12_13_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ cmp %o1, %g3 ! IEU1 Group
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f1, M5, %f4 ! FGM Group
+ fmuls %f2, M10, %f5 ! FGM Group
+ fadds %f3, M12, %f3 ! FGA Group, stall, f3 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, M13, %f4 ! FGA Group, f4 available
+ st %f4, [%g2 + 0x04] ! LSU
+ fadds %f5, M14, %f5 ! FGA Group, f5 available
+ st %f5, [%g2 + 0x08] ! LEU
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_3
+ nop
+
+ .globl _mesa_sparc_transform_points3_perspective
+_mesa_sparc_transform_points3_perspective:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_8_9_10_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f3 ! FGM
+ fmuls %f2, M8, %f6 ! FGM Group
+ fmuls %f1, M5, %f4 ! FGM Group
+ fmuls %f2, M9, %f7 ! FGM Group
+ fmuls %f2, M10, %f5 ! FGM Group f3 available
+ fadds %f3, %f6, %f3 ! FGA Group f6 available
+ st %f3, [%g2 + 0x00] ! LSU
+ fadds %f4, %f7, %f4 ! FGA Group stall, f4, f7 available
+ st %f4, [%g2 + 0x04] ! LSU
+ fadds %f5, M14, %f5 ! FGA Group
+ st %f5, [%g2 + 0x08] ! LSU
+ fnegs %f2, %f6 ! FGA Group
+ st %f6, [%g2 + 0x0c] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_general
+_mesa_sparc_transform_points4_general:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ ld [%g1 + 0x0c], %f3 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f4 ! FGM Group
+ fmuls %f1, M4, %f8 ! FGM Group
+ fmuls %f0, M1, %f5 ! FGM Group
+ fmuls %f1, M5, %f9 ! FGM Group
+ fmuls %f0, M2, %f6 ! FGM Group f4 available
+ fmuls %f1, M6, %f10 ! FGM Group f8 available
+ fadds %f4, %f8, %f4 ! FGA
+ fmuls %f0, M3, %f7 ! FGM Group f5 available
+ fmuls %f1, M7, %f11 ! FGM Group f9 available
+ fadds %f5, %f9, %f5 ! FGA
+ fmuls %f2, M8, %f12 ! FGM Group f6 available
+ fmuls %f2, M9, %f13 ! FGM Group f10, f4 available
+ fadds %f6, %f10, %f6 ! FGA
+ fmuls %f2, M10, %f14 ! FGM Group f7 available
+ fmuls %f2, M11, %f15 ! FGM Group f11, f5 available
+ fadds %f7, %f11, %f7 ! FGA
+ fmuls %f3, M12, %f8 ! FGM Group f12 available
+ fadds %f4, %f12, %f4 ! FGA
+ fmuls %f3, M13, %f9 ! FGM Group f13, f6 available
+ fadds %f5, %f13, %f5 ! FGA
+ fmuls %f3, M14, %f10 ! FGM Group f14 available
+ fadds %f6, %f14, %f6 ! FGA
+ fmuls %f3, M15, %f11 ! FGM Group f15, f7 available
+ fadds %f7, %f15, %f7 ! FGA
+ fadds %f4, %f8, %f4 ! FGA Group f8, f4 available
+ st %f4, [%g2 + 0x00] ! LSU
+ fadds %f5, %f9, %f5 ! FGA Group f9, f5 available
+ st %f5, [%g2 + 0x04] ! LSU
+ fadds %f6, %f10, %f6 ! FGA Group f10, f6 available
+ st %f6, [%g2 + 0x08] ! LSU
+ fadds %f7, %f11, %f7 ! FGA Group f11, f7 available
+ st %f7, [%g2 + 0x0c] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_identity
+_mesa_sparc_transform_points4_identity:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0
+ ld [%g1 + 0x04], %f1
+ ld [%g1 + 0x08], %f2
+ add %o1, 1, %o1
+ ld [%g1 + 0x0c], %f3
+ add %g1, %o5, %g1
+ st %f0, [%g2 + 0x00]
+ st %f1, [%g2 + 0x04]
+ st %f2, [%g2 + 0x08]
+ cmp %o1, %g3
+ st %f3, [%g2 + 0x0c]
+ bne 1b
+ add %g2, 0x10, %g2
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_2d
+_mesa_sparc_transform_points4_2d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_4_5_12_13(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ ld [%g1 + 0x0c], %f3 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f4 ! FGM
+ fmuls %f1, M4, %f8 ! FGM Group
+ fmuls %f0, M1, %f5 ! FGM Group
+ fmuls %f1, M5, %f9 ! FGM Group f4 available
+ fmuls %f3, M12, %f12 ! FGM Group
+ fmuls %f3, M13, %f13 ! FGM Group f8 available
+ fadds %f4, %f8, %f4 ! FGA
+ fadds %f5, %f9, %f5 ! FGA Group stall, f5, f9 available
+ fadds %f4, %f12, %f4 ! FGA Group 2 cycle stall, f4, f12, f13 avail
+ st %f4, [%g2 + 0x00] ! LSU
+ fadds %f5, %f13, %f5 ! FGA Group f5 available
+ st %f5, [%g2 + 0x04] ! LSU
+ st %f2, [%g2 + 0x08] ! LSU Group
+ st %f3, [%g2 + 0x0c] ! LSU Group
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_2d_no_rot
+_mesa_sparc_transform_points4_2d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_4_5_12_13(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0
+ ld [%g1 + 0x04], %f1
+ ld [%g1 + 0x08], %f2
+ ld [%g1 + 0x0c], %f3
+ add %o1, 1, %o1
+ add %g1, %o5, %g1
+ fmuls %f0, M0, %f4
+ fmuls %f3, M12, %f8
+ fmuls %f1, M5, %f5
+ fmuls %f3, M13, %f9
+ fadds %f4, %f8, %f4
+ st %f4, [%g2 + 0x00]
+ fadds %f5, %f9, %f5
+ st %f5, [%g2 + 0x04]
+ st %f2, [%g2 + 0x08]
+ st %f3, [%g2 + 0x0c]
+ cmp %o1, %g3
+ bne 1b
+ add %g2, 0x10, %g2
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_3d
+_mesa_sparc_transform_points4_3d:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ ld [%g1 + 0x0c], %f3 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f4 ! FGM
+ fmuls %f1, M4, %f7 ! FGM Group
+ fmuls %f0, M1, %f5 ! FGM Group
+ fmuls %f1, M5, %f8 ! FGM Group
+ fmuls %f0, M2, %f6 ! FGM Group f4 available
+ fmuls %f1, M6, %f9 ! FGM Group f7 available
+ fadds %f4, %f7, %f4 ! FGA
+ fmuls %f2, M8, %f10 ! FGM Group f5 available
+ fmuls %f2, M9, %f11 ! FGM Group f8 available
+ fadds %f5, %f8, %f5 ! FGA
+ fmuls %f2, M10, %f12 ! FGM Group f6 available
+ fmuls %f3, M12, %f13 ! FGM Group f9, f4 available
+ fadds %f6, %f9, %f6 ! FGA
+ fmuls %f3, M13, %f14 ! FGM Group f10 available
+ fadds %f4, %f10, %f4 ! FGA
+ fmuls %f3, M14, %f15 ! FGM Group f11, f5 available
+ fadds %f5, %f11, %f5 ! FGA
+ fadds %f6, %f12, %f6 ! FGA Group stall, f12, f13, f6 available
+ fadds %f4, %f13, %f4 ! FGA Group f14, f4 available
+ st %f4, [%g2 + 0x00] ! LSU
+ fadds %f5, %f14, %f5 ! FGA Group f15, f5 available
+ st %f5, [%g2 + 0x04] ! LSU
+ fadds %f6, %f15, %f6 ! FGA Group f6 available
+ st %f6, [%g2 + 0x08] ! LSU
+ st %f3, [%g2 + 0x0c] ! LSU Group
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_3d_no_rot
+_mesa_sparc_transform_points4_3d_no_rot:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_10_12_13_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ ld [%g1 + 0x0c], %f3 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f4 ! FGM
+ fmuls %f3, M12, %f7 ! FGM Group
+ fmuls %f1, M5, %f5 ! FGM Group
+ fmuls %f3, M13, %f8 ! FGM Group
+ fmuls %f2, M10, %f6 ! FGM Group f4 available
+ fmuls %f3, M14, %f9 ! FGM Group f7 available
+ fadds %f4, %f7, %f4 ! FGA
+ st %f4, [%g2 + 0x00] ! LSU
+ fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
+ st %f5, [%g2 + 0x04] ! LSU
+ fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
+ st %f6, [%g2 + 0x08] ! LSU
+ st %f3, [%g2 + 0x0c] ! LSU Group
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop
+
+ .globl _mesa_sparc_transform_points4_perspective
+_mesa_sparc_transform_points4_perspective:
+ ld [%o2 + V4F_STRIDE], %o5
+ LDPTR [%o2 + V4F_START], %g1
+ LDPTR [%o0 + V4F_START], %g2
+ ld [%o2 + V4F_COUNT], %g3
+
+ LDMATRIX_0_5_8_9_10_14(%o1)
+
+ cmp %g3, 0
+ st %g3, [%o0 + V4F_COUNT]
+ be 2f
+ clr %o1
+
+1: ld [%g1 + 0x00], %f0 ! LSU Group
+ ld [%g1 + 0x04], %f1 ! LSU Group
+ ld [%g1 + 0x08], %f2 ! LSU Group
+ ld [%g1 + 0x0c], %f3 ! LSU Group
+ add %o1, 1, %o1 ! IEU0
+ add %g1, %o5, %g1 ! IEU1
+ fmuls %f0, M0, %f4 ! FGM
+ fmuls %f2, M8, %f7 ! FGM Group
+ fmuls %f1, M5, %f5 ! FGM Group
+ fmuls %f2, M9, %f8 ! FGM Group
+ fmuls %f2, M10, %f6 ! FGM Group f4 available
+ fmuls %f3, M14, %f9 ! FGM Group f7 available
+ fadds %f4, %f7, %f4 ! FGA
+ st %f4, [%g2 + 0x00] ! LSU
+ fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
+ st %f5, [%g2 + 0x04] ! LSU
+ fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
+ st %f6, [%g2 + 0x08] ! LSU
+ fnegs %f2, %f7 ! FGA Group
+ st %f7, [%g2 + 0x0c] ! LSU
+ cmp %o1, %g3 ! IEU1
+ bne 1b ! CTI
+ add %g2, 0x10, %g2 ! IEU0 Group
+2:
+ ba __set_v4f_4
+ nop