mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 15:10:10 +01:00
Add missing assembly file from radeon build
This commit is contained in:
parent
e28a4c147c
commit
a3a10e6dfc
1 changed files with 492 additions and 0 deletions
492
src/mesa/drivers/dri/radeon/radeon_vtxtmp_x86.S
Normal file
492
src/mesa/drivers/dri/radeon/radeon_vtxtmp_x86.S
Normal file
|
|
@ -0,0 +1,492 @@
|
|||
/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_vtxtmp_x86.S,v 1.1 2002/10/30 12:51:58 alanh Exp $ */
|
||||
/**************************************************************************
|
||||
|
||||
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
|
||||
|
||||
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
|
||||
on 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
|
||||
ATI, TUNGSTEN GRAPHICS 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.
|
||||
|
||||
**************************************************************************/
|
||||
|
||||
#define GLOBL( x ) \
|
||||
.globl x; \
|
||||
x:
|
||||
|
||||
.data
|
||||
.align 4
|
||||
|
||||
/*
|
||||
vertex 3f vertex size 4
|
||||
*/
|
||||
|
||||
GLOBL ( _x86_Vertex3f_4 )
|
||||
movl (0), %ecx
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %edx
|
||||
movl %eax, (%ecx)
|
||||
movl %edx, 4(%ecx)
|
||||
movl 12(%esp), %eax
|
||||
movl (0), %edx
|
||||
movl %eax, 8(%ecx)
|
||||
movl %edx, 12(%ecx)
|
||||
movl (0), %eax
|
||||
addl $16, %ecx
|
||||
dec %eax
|
||||
movl %ecx, (0)
|
||||
movl %eax, (0)
|
||||
je .1
|
||||
ret
|
||||
.1: jmp *0
|
||||
|
||||
GLOBL ( _x86_Vertex3f_4_end )
|
||||
|
||||
/*
|
||||
vertex 3f vertex size 6
|
||||
*/
|
||||
GLOBL ( _x86_Vertex3f_6 )
|
||||
push %edi
|
||||
movl (0), %edi
|
||||
movl 8(%esp), %eax
|
||||
movl 12(%esp), %edx
|
||||
movl 16(%esp), %ecx
|
||||
movl %eax, (%edi)
|
||||
movl %edx, 4(%edi)
|
||||
movl %ecx, 8(%edi)
|
||||
movl (0), %eax
|
||||
movl (0), %edx
|
||||
movl (0), %ecx
|
||||
movl %eax, 12(%edi)
|
||||
movl %edx, 16(%edi)
|
||||
movl %ecx, 20(%edi)
|
||||
addl $24, %edi
|
||||
movl (0), %eax
|
||||
movl %edi, (0)
|
||||
dec %eax
|
||||
pop %edi
|
||||
movl %eax, (0)
|
||||
je .2
|
||||
ret
|
||||
.2: jmp *0
|
||||
GLOBL ( _x86_Vertex3f_6_end )
|
||||
/*
|
||||
vertex 3f generic size
|
||||
*/
|
||||
GLOBL ( _x86_Vertex3f )
|
||||
push %edi
|
||||
push %esi
|
||||
movl $0, %esi
|
||||
movl (0), %edi
|
||||
movl 12(%esp), %eax
|
||||
movl 16(%esp), %edx
|
||||
movl 20(%esp), %ecx
|
||||
movl %eax, (%edi)
|
||||
movl %edx, 4(%edi)
|
||||
movl %ecx, 8(%edi)
|
||||
addl $12, %edi
|
||||
movl $0, %ecx
|
||||
repz
|
||||
movsl %ds:(%esi), %es:(%edi)
|
||||
movl (0), %eax
|
||||
movl %edi, (0)
|
||||
dec %eax
|
||||
movl %eax, (0)
|
||||
pop %esi
|
||||
pop %edi
|
||||
je .3
|
||||
ret
|
||||
.3: jmp *0
|
||||
|
||||
GLOBL ( _x86_Vertex3f_end )
|
||||
|
||||
/*
|
||||
Vertex 3fv vertex size 6
|
||||
*/
|
||||
GLOBL ( _x86_Vertex3fv_6 )
|
||||
movl (0), %eax
|
||||
movl 4(%esp), %ecx
|
||||
movl (%ecx), %edx
|
||||
movl %edx, (%eax)
|
||||
movl 4(%ecx), %edx
|
||||
movl 8(%ecx), %ecx
|
||||
movl %edx, 4(%eax)
|
||||
movl %ecx, 8(%eax)
|
||||
movl (28), %edx
|
||||
movl (32), %ecx
|
||||
movl %edx, 12(%eax)
|
||||
movl %ecx, 16(%eax)
|
||||
movl (36), %edx
|
||||
movl %edx, 20(%eax)
|
||||
addl $24, %eax
|
||||
movl %eax, 0
|
||||
movl 4, %eax
|
||||
dec %eax
|
||||
movl %eax, 4
|
||||
je .4
|
||||
ret
|
||||
.4: jmp *8
|
||||
|
||||
GLOBL ( _x86_Vertex3fv_6_end )
|
||||
|
||||
/*
|
||||
Vertex 3fv vertex size 8
|
||||
*/
|
||||
GLOBL ( _x86_Vertex3fv_8 )
|
||||
movl (0), %eax
|
||||
movl 4(%esp), %ecx
|
||||
movl (%ecx), %edx
|
||||
movl %edx ,(%eax)
|
||||
movl 4(%ecx) ,%edx
|
||||
movl 8(%ecx) ,%ecx
|
||||
movl %edx, 4(%eax)
|
||||
movl %ecx, 8(%eax)
|
||||
movl (28), %edx
|
||||
movl (32), %ecx
|
||||
movl %edx, 12(%eax)
|
||||
movl %ecx, 16(%eax)
|
||||
movl (28), %edx
|
||||
movl (32), %ecx
|
||||
movl %edx, 20(%eax)
|
||||
movl %ecx, 24(%eax)
|
||||
movl (36), %edx
|
||||
movl %edx, 28(%eax)
|
||||
addl $32, %eax
|
||||
movl %eax, (0)
|
||||
movl 4, %eax
|
||||
dec %eax
|
||||
movl %eax, (4)
|
||||
je .5
|
||||
ret
|
||||
.5: jmp *8
|
||||
|
||||
GLOBL ( _x86_Vertex3fv_8_end )
|
||||
|
||||
/*
|
||||
Vertex 3fv generic vertex size
|
||||
*/
|
||||
GLOBL ( _x86_Vertex3fv )
|
||||
movl 4(%esp), %edx
|
||||
push %edi
|
||||
push %esi
|
||||
movl (0x1010101), %edi
|
||||
movl (%edx), %eax
|
||||
movl 4(%edx), %ecx
|
||||
movl 8(%edx), %esi
|
||||
movl %eax, (%edi)
|
||||
movl %ecx, 4(%edi)
|
||||
movl %esi, 8(%edi)
|
||||
addl $12, %edi
|
||||
movl $6, %ecx
|
||||
movl $0x58, %esi
|
||||
repz
|
||||
movsl %ds:(%esi), %es:(%edi)
|
||||
movl %edi, (0x1010101)
|
||||
movl (0x2020202), %eax
|
||||
pop %esi
|
||||
pop %edi
|
||||
dec %eax
|
||||
movl %eax, (0x2020202)
|
||||
je .6
|
||||
ret
|
||||
.6: jmp *0
|
||||
GLOBL ( _x86_Vertex3fv_end )
|
||||
|
||||
|
||||
/**
|
||||
* Generic handler for 2 float format data. This can be used for
|
||||
* TexCoord2f and possibly other functions.
|
||||
*/
|
||||
|
||||
GLOBL ( _x86_Attribute2f )
|
||||
movl $0x0, %edx
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %ecx
|
||||
movl %eax, (%edx)
|
||||
movl %ecx, 4(%edx)
|
||||
ret
|
||||
GLOBL ( _x86_Attribute2f_end )
|
||||
|
||||
|
||||
/**
|
||||
* Generic handler for 2 float vector format data. This can be used for
|
||||
* TexCoord2fv and possibly other functions.
|
||||
*/
|
||||
|
||||
GLOBL( _x86_Attribute2fv)
|
||||
movl 4(%esp), %eax /* load 'v' off stack */
|
||||
movl (%eax), %ecx /* load v[0] */
|
||||
movl 4(%eax), %eax /* load v[1] */
|
||||
movl %ecx, 0 /* store v[0] to current vertex */
|
||||
movl %eax, 4 /* store v[1] to current vertex */
|
||||
ret
|
||||
GLOBL ( _x86_Attribute2fv_end )
|
||||
|
||||
|
||||
/**
|
||||
* Generic handler for 3 float format data. This can be used for
|
||||
* Normal3f, Color3f (when the color target is also float), or
|
||||
* TexCoord3f.
|
||||
*/
|
||||
|
||||
GLOBL ( _x86_Attribute3f )
|
||||
movl 4(%esp), %ecx
|
||||
movl 8(%esp), %edx
|
||||
movl 12(%esp), %eax
|
||||
movl %ecx, 0
|
||||
movl %edx, 4
|
||||
movl %eax, 8
|
||||
ret
|
||||
GLOBL ( _x86_Attribute3f_end )
|
||||
|
||||
/**
|
||||
* Generic handler for 3 float vector format data. This can be used for
|
||||
* Normal3f, Color3f (when the color target is also float), or
|
||||
* TexCoord3f.
|
||||
*/
|
||||
|
||||
GLOBL( _x86_Attribute3fv)
|
||||
movl 4(%esp), %eax /* load 'v' off stack */
|
||||
movl (%eax), %ecx /* load v[0] */
|
||||
movl 4(%eax), %edx /* load v[1] */
|
||||
movl 8(%eax), %eax /* load v[2] */
|
||||
movl %ecx, 0 /* store v[0] to current vertex */
|
||||
movl %edx, 4 /* store v[1] to current vertex */
|
||||
movl %eax, 8 /* store v[2] to current vertex */
|
||||
ret
|
||||
GLOBL ( _x86_Attribute3fv_end )
|
||||
|
||||
|
||||
/*
|
||||
Color 4ubv_ub
|
||||
*/
|
||||
GLOBL ( _x86_Color4ubv_ub )
|
||||
movl 4(%esp), %eax
|
||||
movl $0x12345678, %edx
|
||||
movl (%eax), %eax
|
||||
movl %eax, (%edx)
|
||||
ret
|
||||
GLOBL ( _x86_Color4ubv_ub_end )
|
||||
|
||||
/*
|
||||
Color 4ubv 4f
|
||||
*/
|
||||
GLOBL ( _x86_Color4ubv_4f )
|
||||
push %ebx
|
||||
movl $0, %edx
|
||||
xor %eax, %eax
|
||||
xor %ecx, %ecx
|
||||
movl 8(%esp), %ebx
|
||||
movl (%ebx), %ebx
|
||||
mov %bl, %al
|
||||
mov %bh, %cl
|
||||
movl (%edx,%eax,4),%eax
|
||||
movl (%edx,%ecx,4),%ecx
|
||||
movl %eax, (0xdeadbeaf)
|
||||
movl %ecx, (0xdeadbeaf)
|
||||
xor %eax, %eax
|
||||
xor %ecx, %ecx
|
||||
shr $16, %ebx
|
||||
mov %bl, %al
|
||||
mov %bh, %cl
|
||||
movl (%edx,%eax,4), %eax
|
||||
movl (%edx,%ecx,4), %ecx
|
||||
movl %eax, (0xdeadbeaf)
|
||||
movl %ecx, (0xdeadbeaf)
|
||||
pop %ebx
|
||||
ret
|
||||
GLOBL ( _x86_Color4ubv_4f_end )
|
||||
|
||||
/*
|
||||
|
||||
Color4ub_ub
|
||||
*/
|
||||
GLOBL( _x86_Color4ub_ub )
|
||||
push %ebx
|
||||
movl 8(%esp), %eax
|
||||
movl 12(%esp), %edx
|
||||
movl 16(%esp), %ecx
|
||||
movl 20(%esp), %ebx
|
||||
mov %al, (0)
|
||||
mov %dl, (0)
|
||||
mov %cl, (0)
|
||||
mov %bl, (0)
|
||||
pop %ebx
|
||||
ret
|
||||
GLOBL( _x86_Color4ub_ub_end )
|
||||
|
||||
|
||||
/*
|
||||
MultiTexCoord2fv st0/st1
|
||||
*/
|
||||
GLOBL( _x86_MultiTexCoord2fv )
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %ecx
|
||||
and $1, %eax
|
||||
movl (%ecx), %edx
|
||||
shl $3, %eax
|
||||
movl 4(%ecx), %ecx
|
||||
movl %edx, 0xdeadbeef(%eax)
|
||||
movl %ecx, 0xdeadbeef(%eax)
|
||||
ret
|
||||
GLOBL( _x86_MultiTexCoord2fv_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2fv
|
||||
*/
|
||||
|
||||
GLOBL( _x86_MultiTexCoord2fv_2 )
|
||||
movl 4(%esp,1), %eax
|
||||
movl 8(%esp,1), %ecx
|
||||
and $0x1, %eax
|
||||
movl 0(,%eax,4), %edx
|
||||
movl (%ecx), %eax
|
||||
movl %eax, (%edx)
|
||||
movl 4(%ecx), %eax
|
||||
movl %eax, 4(%edx)
|
||||
ret
|
||||
GLOBL( _x86_MultiTexCoord2fv_2_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2f st0/st1
|
||||
*/
|
||||
GLOBL( _x86_MultiTexCoord2f )
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %edx
|
||||
movl 12(%esp), %ecx
|
||||
and $1, %eax
|
||||
shl $3, %eax
|
||||
movl %edx, 0xdeadbeef(%eax)
|
||||
movl %ecx, 0xdeadbeef(%eax)
|
||||
ret
|
||||
GLOBL( _x86_MultiTexCoord2f_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2f
|
||||
*/
|
||||
GLOBL( _x86_MultiTexCoord2f_2 )
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %edx
|
||||
movl 12(%esp,1), %ecx
|
||||
and $1,%eax
|
||||
movl 0(,%eax,4), %eax
|
||||
movl %edx, (%eax)
|
||||
movl %ecx, 4(%eax)
|
||||
ret
|
||||
GLOBL( _x86_MultiTexCoord2f_2_end )
|
||||
|
||||
/**
|
||||
* This can be used as a template for either Color3fv (when the color
|
||||
* target is also a 3f) or Normal3fv.
|
||||
*/
|
||||
|
||||
GLOBL( _sse_Attribute3fv )
|
||||
movl 4(%esp), %eax
|
||||
movlps (%eax), %xmm0
|
||||
movl 8(%eax), %eax
|
||||
movlps %xmm0, 0
|
||||
movl %eax, 8
|
||||
ret
|
||||
GLOBL( _sse_Attribute3fv_end )
|
||||
|
||||
/**
|
||||
* This can be used as a template for either Color3f (when the color
|
||||
* target is also a 3f) or Normal3f.
|
||||
*/
|
||||
|
||||
GLOBL( _sse_Attribute3f )
|
||||
movlps 4(%esp), %xmm0
|
||||
movl 12(%esp), %eax
|
||||
movlps %xmm0, 0
|
||||
movl %eax, 8
|
||||
ret
|
||||
GLOBL( _sse_Attribute3f_end )
|
||||
|
||||
|
||||
/**
|
||||
* Generic handler for 2 float vector format data. This can be used for
|
||||
* TexCoord2fv and possibly other functions.
|
||||
*/
|
||||
|
||||
GLOBL( _sse_Attribute2fv )
|
||||
movl 4(%esp), %eax
|
||||
movlps (%eax), %xmm0
|
||||
movlps %xmm0, 0
|
||||
ret
|
||||
GLOBL( _sse_Attribute2fv_end )
|
||||
|
||||
|
||||
/**
|
||||
* Generic handler for 2 float format data. This can be used for
|
||||
* TexCoord2f and possibly other functions.
|
||||
*/
|
||||
|
||||
GLOBL( _sse_Attribute2f )
|
||||
movlps 4(%esp), %xmm0
|
||||
movlps %xmm0, 0
|
||||
ret
|
||||
GLOBL( _sse_Attribute2f_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2fv st0/st1
|
||||
*/
|
||||
GLOBL( _sse_MultiTexCoord2fv )
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %ecx
|
||||
and $1, %eax
|
||||
movlps (%ecx), %xmm0
|
||||
movlps %xmm0, 0xdeadbeef(,%eax,8)
|
||||
ret
|
||||
GLOBL( _sse_MultiTexCoord2fv_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2fv
|
||||
*/
|
||||
GLOBL( _sse_MultiTexCoord2fv_2 )
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %ecx
|
||||
and $0x1, %eax
|
||||
movl 0(,%eax,4), %edx
|
||||
movlps (%ecx), %xmm0
|
||||
movlps %xmm0, (%edx)
|
||||
ret
|
||||
GLOBL( _sse_MultiTexCoord2fv_2_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2f st0/st1
|
||||
*/
|
||||
GLOBL( _sse_MultiTexCoord2f )
|
||||
movl 4(%esp), %eax
|
||||
and $1, %eax
|
||||
movlps 8(%esp), %xmm0
|
||||
movlps %xmm0, 0xdeadbeef(,%eax,8)
|
||||
ret
|
||||
GLOBL( _sse_MultiTexCoord2f_end )
|
||||
|
||||
/*
|
||||
MultiTexCoord2f
|
||||
*/
|
||||
GLOBL( _sse_MultiTexCoord2f_2 )
|
||||
movl 4(%esp), %eax
|
||||
movlps 8(%esp), %xmm0
|
||||
and $1,%eax
|
||||
movl 0(,%eax,4), %eax
|
||||
movlps %xmm0, (%eax)
|
||||
ret
|
||||
GLOBL( _sse_MultiTexCoord2f_2_end )
|
||||
Loading…
Add table
Reference in a new issue