diff --git a/BlenderWork/cube.blend b/BlenderWork/cube.blend new file mode 100644 index 0000000..60d029c Binary files /dev/null and b/BlenderWork/cube.blend differ diff --git a/BlenderWork/cube.blend1 b/BlenderWork/cube.blend1 new file mode 100644 index 0000000..a1a3672 Binary files /dev/null and b/BlenderWork/cube.blend1 differ diff --git a/BlenderWork/exportScript b/BlenderWork/exportScript new file mode 100644 index 0000000..10ee2f7 --- /dev/null +++ b/BlenderWork/exportScript @@ -0,0 +1,128 @@ +import bpy +import Blender +from Blender import * + + +SMOOTH_DEF = 1 + + +outFile = open("out.txt", "w") + + +def meshProcess(object): + print "---- meshProcess start ----" + print object.getData(name_only=1) + + outFile.write( "type Mesh\n" ) + outFile.write( "name %s\n" % object.getData(name_only=1) ) + + mesh = object.getData(mesh=1) + print "vertex count %d" % len(mesh.verts) + print "face count %d" % len(mesh.faces) + + outFile.write( "vertexCount %d\n" % len(mesh.verts) ) + + + + for vert in mesh.verts: + #print vert.index + #print vert.co + #print vert.no + vert.sel = 0 + outFile.write( "vert %f %f %f\n" % (vert.co.x, vert.co.y, vert.co.z) ) + + for groupName in mesh.getVertGroupNames(): + vertIndexes = mesh.getVertsFromGroup(groupName) + outFile.write( "vertexGroup %s\n" % groupName ) + + for vertIndex in vertIndexes: + mesh.verts[vertIndex].sel = 1 + + faceCount = 0 + for face in mesh.faces: + if( face.verts[0].sel == 1 and face.verts[1].sel == 1 and face.verts[2].sel == 1 ): + faceCount += 1 + + print "vertex group ", groupName + print "vertex count %d" % len(vertIndexes) + print "face count %d" % faceCount + outFile.write( "vertexIndexCount %d\n" % faceCount ) + + for face in mesh.faces: + if( face.verts[0].sel == 1 and face.verts[1].sel == 1 and face.verts[2].sel == 1 ): + outFile.write( "face %d %d %d\n" % (face.verts[0].index, face.verts[1].index, face.verts[2].index) ) + + for vertIndex in vertIndexes: + mesh.verts[vertIndex].sel = 0 + + outFile.write( "end\n" ) + + #print + #print "mesh.faces" + #for face in mesh.faces: + # print + # print face, "no = ", face.no + # + # if( mesh.faceUV ): + # print "have uv" + # + # for uv in face.uv: + # print uv + # + # else: + # print "not have uv" + # + # print "\tface.verts" + # for vert in face.verts: + # print "\tindex = ", vert.index, "no = ", vert.no + + print "materials" + for material in mesh.materials: + print material + print "alpha = ", material.alpha + print "diffuse = ", material.rgbCol + print "specular = ", material.specCol + + print + print "Textures" + for texture in material.getTextures(): + if(texture != None): + print texture + print texture.tex.image.filename + + + outFile.write( "end\n" ) + + print "---- meshProcess end ----" + + +def cameraProcess(object): + print "---- cameraProcess start ----" + print object.getData(name_only=1) + print "---- cameraProcess end ----" + + +def lampProcess(object): + print "---- lampProcess start ----" + print object.getData(name_only=1) + print "---- lampProcess end ----" + + +print "---- start ----" +print list(bpy.data.objects) + +for obj in bpy.data.objects: + mesh = obj.getData(mesh=1) + print type(mesh) + + if( type(mesh) == Types.MeshType ): + meshProcess(obj) + + elif( type(mesh) == Types.CameraType ): + cameraProcess(obj) + + elif( type(mesh) == Types.LampType ): + lampProcess(obj) + +outFile.close() +print "---- end ----" \ No newline at end of file diff --git a/BlenderWork/ground.blend b/BlenderWork/ground.blend new file mode 100644 index 0000000..a9e88be Binary files /dev/null and b/BlenderWork/ground.blend differ diff --git a/BlenderWork/ground.blend1 b/BlenderWork/ground.blend1 new file mode 100644 index 0000000..b02f0a2 Binary files /dev/null and b/BlenderWork/ground.blend1 differ diff --git a/BlenderWork/ground1.jpg b/BlenderWork/ground1.jpg new file mode 100644 index 0000000..0adc1be Binary files /dev/null and b/BlenderWork/ground1.jpg differ diff --git a/BlenderWork/ground2.jpg b/BlenderWork/ground2.jpg new file mode 100644 index 0000000..5481d12 Binary files /dev/null and b/BlenderWork/ground2.jpg differ diff --git a/BlenderWork/out.txt b/BlenderWork/out.txt new file mode 100644 index 0000000..87f1adc --- /dev/null +++ b/BlenderWork/out.txt @@ -0,0 +1,300 @@ +type Mesh +name Cube +vertexCount 98 +vert 1.000000 1.000000 -1.000000 +vert 1.000000 -1.000000 -1.000000 +vert -1.000000 -1.000000 -1.000000 +vert -1.000000 1.000000 -1.000000 +vert 1.000000 0.999999 1.000000 +vert 0.999999 -1.000001 1.000000 +vert -1.000000 -1.000000 1.000000 +vert -1.000000 1.000000 1.000000 +vert 1.000000 -0.000000 -1.000000 +vert 0.000000 1.000000 -1.000000 +vert 1.000000 1.000000 0.000000 +vert -0.000000 -1.000000 -1.000000 +vert 1.000000 -1.000000 0.000000 +vert -1.000000 0.000000 -1.000000 +vert -1.000000 -1.000000 0.000000 +vert -1.000000 1.000000 0.000000 +vert 1.000000 -0.000001 1.000000 +vert 0.000000 1.000000 1.000000 +vert -0.000001 -1.000000 1.000000 +vert -1.000000 0.000000 1.000000 +vert 0.000000 0.000000 -1.000000 +vert -0.000000 -0.000000 1.000000 +vert 1.000000 -0.000000 0.000000 +vert -0.000000 -1.000000 0.000000 +vert -1.000000 0.000000 0.000000 +vert 0.000000 1.000000 0.000000 +vert 1.000000 0.500000 -1.000000 +vert 1.000000 -0.500000 -1.000000 +vert 0.500000 1.000000 -1.000000 +vert -0.500000 1.000000 -1.000000 +vert 1.000000 1.000000 -0.500000 +vert 1.000000 1.000000 0.500000 +vert 0.500000 -1.000000 -1.000000 +vert -0.500000 -1.000000 -1.000000 +vert 1.000000 -1.000000 -0.500000 +vert 1.000000 -1.000000 0.500000 +vert -1.000000 -0.500000 -1.000000 +vert -1.000000 0.500000 -1.000000 +vert -1.000000 -1.000000 -0.500000 +vert -1.000000 -1.000000 0.500000 +vert -1.000000 1.000000 -0.500000 +vert -1.000000 1.000000 0.500000 +vert 1.000000 0.499999 1.000000 +vert 1.000000 -0.500001 1.000000 +vert 0.500000 1.000000 1.000000 +vert -0.500000 1.000000 1.000000 +vert 0.499999 -1.000000 1.000000 +vert -0.500000 -1.000000 1.000000 +vert -1.000000 -0.500000 1.000000 +vert -1.000000 0.500000 1.000000 +vert 0.000000 -0.500000 -1.000000 +vert 0.500000 0.000000 -1.000000 +vert 0.000000 0.500000 -1.000000 +vert -0.500000 0.000000 -1.000000 +vert -0.500000 -0.000000 1.000000 +vert 0.000000 0.500000 1.000000 +vert 0.500000 -0.000000 1.000000 +vert -0.000000 -0.500000 1.000000 +vert 1.000000 -0.000000 0.500000 +vert 1.000000 0.500000 0.000000 +vert 1.000000 -0.000000 -0.500000 +vert 1.000000 -0.500000 0.000000 +vert -0.000000 -1.000000 0.500000 +vert 0.500000 -1.000000 0.000000 +vert -0.000000 -1.000000 -0.500000 +vert -0.500000 -1.000000 0.000000 +vert -1.000000 0.000000 0.500000 +vert -1.000000 -0.500000 0.000000 +vert -1.000000 0.000000 -0.500000 +vert -1.000000 0.500000 0.000000 +vert 0.000000 1.000000 -0.500000 +vert 0.500000 1.000000 0.000000 +vert 0.000000 1.000000 0.500000 +vert -0.500000 1.000000 0.000000 +vert 0.500000 -0.500000 -1.000000 +vert 0.500000 0.500000 -1.000000 +vert -0.500000 -0.500000 -1.000000 +vert -0.500000 0.500000 -1.000000 +vert -0.500000 0.500000 1.000000 +vert 0.500000 0.500000 1.000000 +vert -0.500000 -0.500000 1.000000 +vert 0.500000 -0.500000 1.000000 +vert 1.000000 0.500000 0.500000 +vert 1.000000 0.500000 -0.500000 +vert 1.000000 -0.500000 0.500000 +vert 1.000000 -0.500000 -0.500000 +vert 0.500000 -1.000000 0.500000 +vert 0.500000 -1.000000 -0.500000 +vert -0.500000 -1.000000 0.500000 +vert -0.500000 -1.000000 -0.500000 +vert -1.000000 -0.500000 0.500000 +vert -1.000000 -0.500000 -0.500000 +vert -1.000000 0.500000 0.500000 +vert -1.000000 0.500000 -0.500000 +vert 0.500000 1.000000 -0.500000 +vert 0.500000 1.000000 0.500000 +vert -0.500000 1.000000 -0.500000 +vert -0.500000 1.000000 0.500000 +vertexGroup first +vertexIndexCount 96 +face 44 95 17 +face 95 72 17 +face 95 71 25 +face 95 25 72 +face 4 31 44 +face 31 95 44 +face 31 10 95 +face 10 71 95 +face 71 94 25 +face 94 70 25 +face 94 28 9 +face 94 9 70 +face 10 30 71 +face 30 94 71 +face 30 0 94 +face 0 28 94 +face 32 87 11 +face 87 64 11 +face 87 63 64 +face 63 23 64 +face 1 34 32 +face 34 87 32 +face 34 12 87 +face 12 63 87 +face 63 86 23 +face 86 62 23 +face 86 46 62 +face 46 18 62 +face 12 35 63 +face 35 86 63 +face 35 5 86 +face 5 46 86 +face 27 85 1 +face 85 34 1 +face 85 61 34 +face 61 12 34 +face 8 60 27 +face 60 85 27 +face 60 22 85 +face 22 61 85 +face 61 84 12 +face 84 35 12 +face 84 43 35 +face 43 5 35 +face 22 58 61 +face 58 84 61 +face 58 16 84 +face 16 43 84 +face 26 83 8 +face 83 60 8 +face 83 59 60 +face 59 22 60 +face 0 30 26 +face 30 83 26 +face 30 10 83 +face 10 59 83 +face 59 82 22 +face 82 58 22 +face 82 42 58 +face 42 16 58 +face 10 31 59 +face 31 82 59 +face 31 4 82 +face 4 42 82 +face 43 81 46 +face 43 46 5 +face 81 57 18 +face 81 18 46 +face 16 56 81 +face 16 81 43 +face 56 21 57 +face 56 57 81 +face 42 79 16 +face 79 56 16 +face 79 55 56 +face 55 21 56 +face 4 44 79 +face 4 79 42 +face 44 17 55 +face 44 55 79 +face 28 75 52 +face 28 52 9 +face 75 51 20 +face 75 20 52 +face 0 26 75 +face 0 75 28 +face 26 8 51 +face 26 51 75 +face 51 74 50 +face 51 50 20 +face 74 32 11 +face 74 11 50 +face 8 27 74 +face 8 74 51 +face 27 1 32 +face 27 32 74 +end +vertexGroup second +vertexIndexCount 96 +face 45 97 41 +face 45 41 7 +face 97 73 15 +face 97 15 41 +face 17 72 97 +face 17 97 45 +face 72 25 73 +face 72 73 97 +face 73 96 40 +face 73 40 15 +face 96 29 3 +face 96 3 40 +face 25 70 96 +face 25 96 73 +face 70 9 29 +face 70 29 96 +face 37 93 40 +face 37 40 3 +face 93 69 15 +face 93 15 40 +face 13 68 93 +face 13 93 37 +face 68 24 69 +face 68 69 93 +face 69 92 41 +face 69 41 15 +face 92 49 7 +face 92 7 41 +face 24 66 92 +face 24 92 69 +face 66 19 49 +face 66 49 92 +face 36 91 68 +face 36 68 13 +face 91 67 24 +face 91 24 68 +face 2 38 91 +face 2 91 36 +face 38 14 67 +face 38 67 91 +face 67 90 66 +face 67 66 24 +face 90 48 19 +face 90 19 66 +face 14 39 90 +face 14 90 67 +face 39 6 48 +face 39 48 90 +face 33 89 2 +face 89 38 2 +face 89 65 14 +face 89 14 38 +face 11 64 33 +face 64 89 33 +face 64 23 89 +face 23 65 89 +face 65 88 39 +face 65 39 14 +face 88 47 39 +face 47 6 39 +face 23 62 65 +face 62 88 65 +face 62 18 88 +face 18 47 88 +face 57 80 47 +face 57 47 18 +face 80 48 6 +face 80 6 47 +face 21 54 80 +face 21 80 57 +face 54 19 48 +face 54 48 80 +face 55 78 54 +face 55 54 21 +face 78 49 19 +face 78 19 54 +face 17 45 78 +face 17 78 55 +face 45 7 49 +face 45 49 78 +face 29 77 37 +face 29 37 3 +face 77 53 13 +face 77 13 37 +face 9 52 77 +face 9 77 29 +face 52 20 53 +face 52 53 77 +face 53 76 36 +face 53 36 13 +face 76 33 2 +face 76 2 36 +face 20 50 76 +face 20 76 53 +face 50 11 76 +face 11 33 76 +end +end diff --git a/BlenderWork/scriptTest.blend b/BlenderWork/scriptTest.blend new file mode 100644 index 0000000..7ec894c Binary files /dev/null and b/BlenderWork/scriptTest.blend differ diff --git a/BlenderWork/scriptTest.blend1 b/BlenderWork/scriptTest.blend1 new file mode 100644 index 0000000..a1a3672 Binary files /dev/null and b/BlenderWork/scriptTest.blend1 differ diff --git a/BlenderWork/vulcano.jpg b/BlenderWork/vulcano.jpg new file mode 100644 index 0000000..a046710 Binary files /dev/null and b/BlenderWork/vulcano.jpg differ diff --git "a/BlenderWork/\301\345\347 \350\354\345\355\350.xcf" "b/BlenderWork/\301\345\347 \350\354\345\355\350.xcf" new file mode 100644 index 0000000..375adb5 Binary files /dev/null and "b/BlenderWork/\301\345\347 \350\354\345\355\350.xcf" differ diff --git a/vfpmathlibrary/.svn/all-wcprops b/vfpmathlibrary/.svn/all-wcprops deleted file mode 100644 index f87cc9b..0000000 --- a/vfpmathlibrary/.svn/all-wcprops +++ /dev/null @@ -1,41 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 22 -/svn/!svn/ver/14/trunk -END -common_macros.h -K 25 -svn:wc:ra_dav:version-url -V 37 -/svn/!svn/ver/9/trunk/common_macros.h -END -matrix_impl.cpp -K 25 -svn:wc:ra_dav:version-url -V 37 -/svn/!svn/ver/9/trunk/matrix_impl.cpp -END -vsinf.cpp -K 25 -svn:wc:ra_dav:version-url -V 32 -/svn/!svn/ver/13/trunk/vsinf.cpp -END -matrix_impl.h -K 25 -svn:wc:ra_dav:version-url -V 35 -/svn/!svn/ver/8/trunk/matrix_impl.h -END -vsinf.h -K 25 -svn:wc:ra_dav:version-url -V 30 -/svn/!svn/ver/14/trunk/vsinf.h -END -vfp_clobbers.h -K 25 -svn:wc:ra_dav:version-url -V 36 -/svn/!svn/ver/9/trunk/vfp_clobbers.h -END diff --git a/vfpmathlibrary/.svn/entries b/vfpmathlibrary/.svn/entries deleted file mode 100644 index 126247f..0000000 --- a/vfpmathlibrary/.svn/entries +++ /dev/null @@ -1,235 +0,0 @@ -10 - -dir -14 -http://vfpmathlibrary.googlecode.com/svn/trunk -http://vfpmathlibrary.googlecode.com/svn - - - -2009-03-16T02:45:32.245080Z -14 -damien.morton - - - - - - - - - - - - - - -8cc4a874-8500-11dd-a143-0dd59a09f4aa - -unittests -dir - -common_macros.h -file - - - - -2010-01-02T12:43:26.093750Z -99f94efa1d434166a28858fabcd3dbf8 -2009-03-08T22:03:41.116274Z -9 -grundmann.matthias - - - - - - - - - - - - - - - - - - - - - -6566 - -matrix_impl.cpp -file - - - - -2010-01-02T12:43:26.109375Z -66dbf2be5c293f9c683aab4238e22c91 -2009-03-08T22:03:41.116274Z -9 -grundmann.matthias - - - - - - - - - - - - - - - - - - - - - -19961 - -vsinf.cpp -file - - - - -2010-01-02T12:43:26.140625Z -a107ec5a9fe5ddc324dd02ffd5bd8904 -2009-03-16T02:45:20.139644Z -13 -damien.morton - - - - - - - - - - - - - - - - - - - - - -6098 - -matrix_impl.h -file - - - - -2010-01-02T12:43:26.171875Z -4e5295f6afec9b6cef419a2715eb6972 -2009-02-24T20:59:27.522983Z -8 -grundmann.matthias - - - - - - - - - - - - - - - - - - - - - -3487 - -vsinf.h -file - - - - -2010-01-02T12:43:26.218750Z -a185695e0812f39bd5740595fdab9413 -2009-03-16T02:45:32.245080Z -14 -damien.morton - - - - - - - - - - - - - - - - - - - - - -248 - -vfp_clobbers.h -file - - - - -2010-01-02T12:43:26.234375Z -e1b8784c2f6538a3a4dae2c24cfdf22e -2009-03-08T22:03:41.116274Z -9 -grundmann.matthias - - - - - - - - - - - - - - - - - - - - - -67281 - diff --git a/vfpmathlibrary/.svn/text-base/common_macros.h.svn-base b/vfpmathlibrary/.svn/text-base/common_macros.h.svn-base deleted file mode 100644 index d6551e2..0000000 --- a/vfpmathlibrary/.svn/text-base/common_macros.h.svn-base +++ /dev/null @@ -1,169 +0,0 @@ -/* -VFP math library for the iPhone / iPod touch - -Copyright (c) 2007-2008 Wolfgang Engel and Matthias Grundmann -http://code.google.com/p/vfpmathlibrary/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising -from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must -not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COMMON_MACROS_H__ -#define COMMON_MACROS_H__ - -// Usage for any VFP routine is: - -/* - asm volatile (VFP_SWITCH_TO_ARM - - <-- your code goes here - - VFP_SWITCH_TO_THUMB - : - : - : "r0", - ); -*/ - -// NOTE: Lots of VFP macros overwrite register r0, therefore you have to make sure -// to include "r0" in the list of registers used, as in above example. - -#ifndef NO_THUMB -#warning "Compiling in Thumb Mode. Mode switches activated." -#else -#warning "Compiling in ARM mode. Mode switches deactivated." -#endif - -// Switches to from THUMB to ARM mode. -#ifndef NO_THUMB - #define VFP_SWITCH_TO_ARM ".align 4 \n\t" \ - "mov r0, pc \n\t" \ - "bx r0 \n\t" \ - ".arm \n\t" -#else - #define VFP_SWITCH_TO_ARM -#endif - -// Switches from ARM to THUMB mode. -#ifndef NO_THUMB - #define VFP_SWITCH_TO_THUMB "add r0, pc, #1 \n\t" \ - "bx r0 \n\t" \ - ".thumb \n\t" -#else - #define VFP_SWITCH_TO_THUMB -#endif - -// NOTE: Both VFP_VECTOR_LENGTH* macros will stall the FP unit, -// until all currently processed operations have been executed. -// Call wisely. -// FP operations (except load/stores) will interpret a command like -// fadds s8, s16, s24 -// AS -// fadds {s8-s11}, {s16-s19}, {s24-s27} in case length is set to zero. - - -// Sets length and stride to 0. -#define VFP_VECTOR_LENGTH_ZERO "fmrx r0, fpscr \n\t" \ - "bic r0, r0, #0x00370000 \n\t" \ - "fmxr fpscr, r0 \n\t" - -// Set vector length. VEC_LENGTH has to be bitween 0 for length 1 and 3 for length 4. -#define VFP_VECTOR_LENGTH(VEC_LENGTH) "fmrx r0, fpscr \n\t" \ - "bic r0, r0, #0x00370000 \n\t" \ - "orr r0, r0, #0x000" #VEC_LENGTH "0000 \n\t" \ - "fmxr fpscr, r0 \n\t" - -// Fixed vector operation for vectors of length 1, i.e. scalars. -// Expects pointers to source and destination data. -// Use VFP_OP_* macros for VFP_OP or any FP assembler opcode that fits. -#define VFP_FIXED_1_VECTOR_OP(VFP_OP, P_SRC_1, P_SRC_2, P_DST) \ - asm volatile (VFP_SWITCH_TO_ARM \ - "fldmias %1, s8 \n\t" \ - "fldmias %2, s16 \n\t" \ - VFP_OP " s8, s8, s16 \n\t" \ - "fstmias %0, s8 \n\t" \ - VFP_SWITCH_TO_THUMB \ - : \ - : "r" (P_DST), "r" (P_SRC_1), "r" (P_SRC_2) \ - : "r0" \ - ); - -// Fixed vector operation for vectors of length 2, i.e. scalars. -// Expects pointers to source and destination data. -// Use VFP_OP_* macros for VFP_OP or any FP assembler opcode that fits. -#define VFP_FIXED_2_VECTOR_OP(VFP_OP, P_SRC_1, P_SRC_2, P_DST) \ - asm volatile (VFP_SWITCH_TO_ARM \ - "fldmias %1, {s8-s9} \n\t" \ - "fldmias %2, {s16-s17} \n\t" \ - VFP_OP " s8, s8, s16 \n\t" \ - VFP_OP " s9, s9, s17 \n\t" \ - "fstmias %0, {s8-s9} \n\t" \ - VFP_SWITCH_TO_THUMB \ - : \ - : "r" (P_DST), "r" (P_SRC_1), "r" (P_SRC_2) \ - : "r0" \ - ); - -// Fixed vector operation for vectors of length 3, i.e. scalars. -// Expects pointers to source and destination data. -// Use VFP_OP_* macros for VFP_OP or any FP assembler opcode that fits. -#define VFP_FIXED_3_VECTOR_OP(VFP_OP, P_SRC_1, P_SRC_2, P_DST) \ - asm volatile (VFP_SWITCH_TO_ARM \ - "fldmias %1, {s8-s10} \n\t" \ - "fldmias %2, {s16-s18} \n\t" \ - VFP_OP " s8, s8, s16 \n\t" \ - VFP_OP " s9, s9, s17 \n\t" \ - VFP_OP " s10, s10, s18 \n\t" \ - "fstmias %0, {s8-s10} \n\t" \ - VFP_SWITCH_TO_THUMB \ - : \ - : "r" (P_DST), "r" (P_SRC_1), "r" (P_SRC_2) \ - : "r0" \ - ); - -// Fixed vector operation for vectors of length 4, i.e. scalars. -// Expects pointers to source and destination data. -// Use VFP_OP_* macros for VFP_OP or any FP assembler opcode that fits. -#define VFP_FIXED_4_VECTOR_OP(VFP_OP, P_SRC_1, P_SRC_2, P_DST) \ - asm volatile (VFP_SWITCH_TO_ARM \ - "fldmias %1, {s8-s11} \n\t" \ - "fldmias %2, {s16-s19} \n\t" \ - VFP_OP " s8, s8, s16 \n\t" \ - VFP_OP " s9, s9, s17 \n\t" \ - VFP_OP " s10, s10, s18 \n\t" \ - VFP_OP " s11, s11, s19 \n\t" \ - "fstmias %0, {s8-s11} \n\t" \ - VFP_SWITCH_TO_THUMB \ - : \ - : "r" (P_DST), "r" (P_SRC_1), "r" (P_SRC_2) \ - : "r0" \ - ); - -// NOTE: Usage example for VFP_FIXED_?_VECTOR_OP -// float* src_ptr_1; -// float* src_ptr_2; -// float* dst_ptr; -// VFP_FIXED_4_VECTOR_OP(VFP_OP_ADD, src_ptr_1, src_ptr_2, dst_ptr) - -#define VFP_OP_ADD "fadds" -#define VFP_OP_SUB "fsubs" -#define VFP_OP_MUL "fmuls" -#define VFP_OP_DIV "fdivs" -#define VFP_OP_ABS "fabss" -#define VFP_OP_SQRT "fsqrts" - -#endif // COMMON_MACROS_H__ diff --git a/vfpmathlibrary/.svn/text-base/matrix_impl.cpp.svn-base b/vfpmathlibrary/.svn/text-base/matrix_impl.cpp.svn-base deleted file mode 100644 index c47d417..0000000 --- a/vfpmathlibrary/.svn/text-base/matrix_impl.cpp.svn-base +++ /dev/null @@ -1,474 +0,0 @@ -/* -VFP math library for the iPhone / iPod touch - -Copyright (c) 2007-2008 Wolfgang Engel and Matthias Grundmann -http://code.google.com/p/vfpmathlibrary/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising -from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must -not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifdef __APPLE__ -#include -#if (TARGET_IPHONE_SIMULATOR == 0) && (TARGET_OS_IPHONE == 1) - -#include "matrix_impl.h" -#include "common_macros.h" -#include "vfp_clobbers.h" - -void Matrix4Mul(const float* src_mat_1, const float* src_mat_2, float* dst_mat) { - asm volatile (VFP_SWITCH_TO_ARM - VFP_VECTOR_LENGTH(3) - - // Interleaving loads and adds/muls for faster calculation. - // Let A:=src_ptr_1, B:=src_ptr_2, then - // function computes A*B as (B^T * A^T)^T. - - // Load the whole matrix into memory. - "fldmias %2, {s8-s23} \n\t" - // Load first column to scalar bank. - "fldmias %1!, {s0-s3} \n\t" - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - - // Load second column to scalar bank. - "fldmias %1!, {s4-s7} \n\t" - - "fmacs s24, s16, s2 \n\t" - "fmacs s24, s20, s3 \n\t" - // Save first column. - "fstmias %0!, {s24-s27} \n\t" - - // Second column times matrix. - "fmuls s28, s8, s4 \n\t" - "fmacs s28, s12, s5 \n\t" - - // Load third column to scalar bank. - "fldmias %1!, {s0-s3} \n\t" - - "fmacs s28, s16, s6 \n\t" - "fmacs s28, s20, s7 \n\t" - // Save second column. - "fstmias %0!, {s28-s31} \n\t" - - // Third column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - - // Load fourth column to scalar bank. - "fldmias %1, {s4-s7} \n\t" - - "fmacs s24, s16, s2 \n\t" - "fmacs s24, s20, s3 \n\t" - // Save third column. - "fstmias %0!, {s24-s27} \n\t" - - // Fourth column times matrix. - "fmuls s28, s8, s4 \n\t" - "fmacs s28, s12, s5 \n\t" - "fmacs s28, s16, s6 \n\t" - "fmacs s28, s20, s7 \n\t" - // Save fourth column. - "fstmias %0!, {s28-s31} \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : "=r" (dst_mat), "=r" (src_mat_2) - : "r" (src_mat_1), "0" (dst_mat), "1" (src_mat_2) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S31 - ); -} - -// Load the matrix transposed into memory. -// Uses registers 24 - 31 as scratch. -// Increments sources address in register %0. -#define VFP_LOAD_MATRIX0_T_TO_S8_S23 "fldmias %0!, {s8-s11} \n\t" \ - "fcpys s12, s9 \n\t" \ - "fcpys s16, s10 \n\t" \ - "fldmias %0!, {s24-s27} \n\t" \ - "fcpys s20, s11 \n\t" \ - "fcpys s9, s24 \n\t" \ - "fcpys s13, s25 \n\t" \ - "fldmias %0!, {s28-s31} \n\t" \ - "fcpys s17, s26 \n\t" \ - "fcpys s21, s27 \n\t" \ - \ - "fcpys s10, s28 \n\t" \ - "fcpys s14, s29 \n\t" \ - "fldmias %0!, {s24-s27} \n\t" \ - "fcpys s18, s30 \n\t" \ - "fcpys s22, s31 \n\t" \ - \ - "fcpys s11, s24 \n\t" \ - "fcpys s15, s25 \n\t" \ - \ - "fcpys s19, s26 \n\t" \ - "fcpys s23, s27 \n\t" - -// s0 s1 s2 s3 -// s4 s5 s6 s7 -// s8 s9 s10 s11 -// s12 s13 s14 s15 - -// Load the matrix transposed into memory. -// Uses registers 24 - 31 as scratch. -// Increments sources address in register %0. -#define VFP_LOAD_MATRIX0_T_TO_S0_S15 "fldmias %0!, {s0-s3} \n\t" \ - "fcpys s4, s1 \n\t" \ - "fcpys s8, s2 \n\t" \ - "fldmias %0!, {s24-s27} \n\t" \ - "fcpys s12, s3 \n\t" \ - \ - "fcpys s1, s24 \n\t" \ - "fcpys s5, s25 \n\t" \ - "fldmias %0!, {s28-s31} \n\t" \ - "fcpys s9, s26 \n\t" \ - "fcpys s13, s27 \n\t" \ - \ - "fcpys s2, s28 \n\t" \ - "fcpys s6, s29 \n\t" \ - "fldmias %0!, {s24-s27} \n\t" \ - "fcpys s10, s30 \n\t" \ - "fcpys s14, s31 \n\t" \ - \ - "fcpys s3, s24 \n\t" \ - "fcpys s7, s25 \n\t" \ - "fcpys s11, s26 \n\t" \ - "fcpys s15, s27 \n\t" - -void Matrix4Vector4Mul(const float* src_mat, const float* src_vec, float* dst_vec) { - asm volatile (VFP_SWITCH_TO_ARM - - // Load the whole matrix. - "fldmias %0, {s8-s23} \n\t" - // Load vector to scalar bank. - "fldmias %1, {s0-s3} \n\t" - - VFP_VECTOR_LENGTH(3) - - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - "fmacs s24, s16, s2 \n\t" - "fmacs s24, s20, s3 \n\t" - - // Save vector. - "fstmias %2, {s24-s27} \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : - : "r" (src_mat), "r" (src_vec), "r" (dst_vec) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S3, VFP_CLOBBER_S8_S27 - ); -} - -void Matrix4Vector3Mul(const float* src_mat, const float* src_vec, float* dst_vec) { - asm volatile (VFP_SWITCH_TO_ARM - // Load the whole matrix. - "fldmias %0, {s8-s23} \n\t" - - // Load vector to scalar bank. - "fldmias %1, {s0-s2} \n\t" - - VFP_VECTOR_LENGTH(3) - - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - "fmacs s24, s16, s2 \n\t" - "fadds s24, s24, s20 \n\t" - - // Save vector. - "fstmias %2, {s24-s27} \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : - : "r" (src_mat), "r" (src_vec), "r" (dst_vec) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S2, VFP_CLOBBER_S8_S27 - ); -} - -void Matrix4Vector3Mul(const float* src_mat, const float* src_vec, float w, float* dst_vec) { - asm volatile (VFP_SWITCH_TO_ARM - - // Load the whole matrix. - "fldmias %0, {s8-s23} \n\t" - - // Load vector to scalar bank. - "fldmias %1, {s0-s2} \n\t" - - // Load w. - "fmsr s3, %3 \n\t" - - VFP_VECTOR_LENGTH(3) - - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - "fmacs s24, s16, s2 \n\t" - "fmacs s24, s20, s3 \n\t" - - // Save vector. - "fstmias %2, {s24-s27} \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : - : "r" (src_mat), "r" (src_vec), "r" (dst_vec), "r" (w) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S3, VFP_CLOBBER_S8_S27 - ); -} - -void Matrix4Vector3ArrayMul(int num, const float* src_mat, int src_stride, - const float* src_vec_array, int dst_stride, - float* dst_vec_array) { - asm volatile (VFP_SWITCH_TO_ARM - // Load the whole matrix. - "fldmias %2, {s8-s23} \n\t" - - VFP_VECTOR_LENGTH(3) - "L2000: \n\t" - // Load vector to scalar bank. - "fldmias %0, {s0-s2} \n\t" - "adds %0, %0, %3 \n\t" - - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - "fmacs s24, s16, s2 \n\t" - "fadds s24, s24, s20 \n\t" - - // Save vector. - "fstmias %1, {s24-s27} \n\t" - "adds %1, %1, %4 \n\t" - - "subs %5, %5, #1 \n\t" - "bne L2000 \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : "=r" (src_vec_array), "=r" (dst_vec_array) - : "r" (src_mat), "r" (src_stride), "r" (dst_stride), "r" (num), - "0" (src_vec_array), "1" (dst_vec_array) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S2, VFP_CLOBBER_S8_S27 - ); -} - -void Matrix4Vector3ArrayMul(int num, const float* src_mat, float w, int src_stride, - const float* src_vec_array, int dst_stride, - float* dst_vec_array) { - asm volatile (VFP_SWITCH_TO_ARM - // Load the whole matrix. - "fldmias %2, {s8-s23} \n\t" - - "fmsr s3, %6 \n\t" - - VFP_VECTOR_LENGTH(3) - "L2010: \n\t" - // Load vector to scalar bank. - "fldmias %0, {s0-s2} \n\t" - "adds %0, %0, %3 \n\t" - - // First column times matrix. - "fmuls s24, s8, s0 \n\t" - "fmacs s24, s12, s1 \n\t" - "fmacs s24, s16, s2 \n\t" - "fmacs s24, s20, s3 \n\t" - - // Save vector. - "fstmias %1, {s24-s27} \n\t" - "adds %1, %1, %4 \n\t" - - "subs %5, %5, #1 \n\t" - "bne L2010 \n\t" - - VFP_VECTOR_LENGTH_ZERO - VFP_SWITCH_TO_THUMB - : "=r" (src_vec_array), "=r" (dst_vec_array) - : "r" (src_mat), "r" (src_stride), "r" (dst_stride), "r" (num), "r" (w), - "0" (src_vec_array), "1" (dst_vec_array) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S3, VFP_CLOBBER_S8_S27 - ); - -} - -// Computes the inverse of a 4x4 matrix by using the Laplace Extension Theorem -// in 94 multiplications and 1 division. -// Comments in the code refer to David Eberly's definitions -// http://www.geometrictools.com/Documentation/LaplaceExpansionTheorem.pdf -// page 9 (retrieved Feb. 20, 2009). - -void Matrix4Invert(const float* src_mat, float* dst_mat) { - - const float one = 1.0; - - asm volatile (VFP_SWITCH_TO_ARM - // Load the whole matrix transposed. - // Transposing is necessary to be able to execute inversion - // with only 32 fpregs. - VFP_LOAD_MATRIX0_T_TO_S0_S15 - - // Destination matrix will be {s8 - s23}. - - // Mapping of matrix elements is - // s0 s1 s2 s3 a00 a01 a02 a03 - // s4 s5 s6 s7 <= a10 a11 a12 a13 - // s8 s9 s10 s11 a20 a21 a22 a23 - // s12 s13 s14 s15 a30 a31 a32 a33 - - // Compute s_0 to s_5 (in s25 - s30). - "fmuls s25, s0, s5 \n\t" - "fnmacs s25, s4, s1 \n\t" - - "fmuls s26, s0, s6 \n\t" - "fnmacs s26, s4, s2 \n\t" - - "fmuls s27, s0, s7 \n\t" - "fnmacs s27, s4, s3 \n\t" - - "fmuls s28, s1, s6 \n\t" - "fnmacs s28, s5, s2 \n\t" - - "fmuls s29, s1, s7 \n\t" - "fnmacs s29, s5, s3 \n\t" - - "fmuls s30, s2, s7 \n\t" - "fnmacs s30, s6, s3 \n\t" - - // Process last two columns -> s16-s23. - // Last column. - "fnmuls s20, s9, s30 \n\t" - "fmacs s20, s10, s29 \n\t" - "fnmacs s20, s11, s28 \n\t" - - "fmuls s21, s8, s30 \n\t" - "fnmacs s21, s10, s27 \n\t" - "fmacs s21, s11, s26 \n\t" - - "fnmuls s22, s8, s29 \n\t" - "fmacs s22, s9, s27 \n\t" - "fnmacs s22, s11, s25 \n\t" - - "fmuls s23, s8, s28 \n\t" - "fnmacs s23, s9, s26 \n\t" - "fmacs s23, s10, s25 \n\t" - - // Third column. - "fmuls s16, s13, s30 \n\t" - "fnmacs s16, s14, s29 \n\t" - "fmacs s16, s15, s28 \n\t" - - "fnmuls s17, s12, s30 \n\t" - "fmacs s17, s14, s27 \n\t" - "fnmacs s17, s15, s26 \n\t" - - "fmuls s18, s12, s29 \n\t" - "fnmacs s18, s13, s27 \n\t" - "fmacs s18, s15, s25 \n\t" - - "fnmuls s19, s12, s28 \n\t" - "fmacs s19, s13, s26 \n\t" - "fnmacs s19, s14, s25 \n\t" - - // Compute c_5 to c_0 (in s24 - s29). - // Determinant will be in s31. - "fmuls s24, s10, s15 \n\t" - "fnmacs s24, s14, s11 \n\t" - "fmuls s31, s24, s25 \n\t" - - "fmuls s25, s9, s15 \n\t" - "fnmacs s25, s13, s11 \n\t" - "fnmacs s31, s25, s26 \n\t" - - "fmuls s26, s9, s14 \n\t" - "fnmacs s26, s13, s10 \n\t" - "fmacs s31, s26, s27 \n\t" - - "fmuls s27, s8, s15 \n\t" - "fnmacs s27, s12, s11 \n\t" - "fmacs s31, s27, s28 \n\t" - - "fmuls s28, s8, s14 \n\t" - "fnmacs s28, s12, s10 \n\t" - "fnmacs s31, s28, s29 \n\t" - - "fmuls s29, s8, s13 \n\t" - "fnmacs s29, s12, s9 \n\t" - "fmacs s31, s29, s30 \n\t" - - // Second column. - "fnmuls s12, s1, s24 \n\t" - "fmacs s12, s2, s25 \n\t" - "fnmacs s12, s3, s26 \n\t" - - "fmuls s13, s0, s24 \n\t" - "fnmacs s13, s2, s27 \n\t" - "fmacs s13, s3, s28 \n\t" - - "fnmuls s14, s0, s25 \n\t" - "fmacs s14, s1, s27 \n\t" - "fnmacs s14, s3, s29 \n\t" - - "fmuls s15, s0, s26 \n\t" - "fnmacs s15, s1, s28 \n\t" - "fmacs s15, s2, s29 \n\t" - - // First column. - "fmuls s8, s5, s24 \n\t" - "fnmacs s8, s6, s25 \n\t" - "fmacs s8, s7, s26 \n\t" - - "fnmuls s9, s4, s24 \n\t" - "fmacs s9, s6, s27 \n\t" - "fnmacs s9, s7, s28 \n\t" - - "fmuls s10, s4, s25 \n\t" - "fnmacs s10, s5, s27 \n\t" - "fmacs s10, s7, s29 \n\t" - - "fnmuls s11, s4, s26 \n\t" - "fmacs s11, s5, s28 \n\t" - "fnmacs s11, s6, s29 \n\t" - - // Multiply with inverse of determinant. - "fmsr s1, %2 \n\t" - "fdivs s0, s1, s31 \n\t" - - VFP_VECTOR_LENGTH(7) - - // Remember: destination matrix is in {s8 - s23} - "fmuls s24, s8, s0 \n\t" - "fstmias %1!, {s24-s31} \n\t" - "fmuls s8, s16, s0 \n\t" - "fstmias %1, {s8-s15} \n\t" - - VFP_VECTOR_LENGTH(0) - - VFP_SWITCH_TO_THUMB - : "=r" (src_mat), "=r" (dst_mat) - : "r" (one), "0" (src_mat), "1" (dst_mat) - : "r0", "cc", "memory", VFP_CLOBBER_S0_S31 - ); - -} - - -#endif -#endif diff --git a/vfpmathlibrary/.svn/text-base/matrix_impl.h.svn-base b/vfpmathlibrary/.svn/text-base/matrix_impl.h.svn-base deleted file mode 100644 index 20e959a..0000000 --- a/vfpmathlibrary/.svn/text-base/matrix_impl.h.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -/* -VFP math library for the iPhone / iPod touch - -Copyright (c) 2007-2008 Wolfgang Engel and Matthias Grundmann -http://code.google.com/p/vfpmathlibrary/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising -from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must -not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MATRIX_IMPL_H__ -#define MATRIX_IMPL_H__ - -// Matrixes are assumed to be stored in column major format according to OpenGL -// specification. - -// Multiplies two 4x4 matrices. -void Matrix4Mul(const float* src_mat_1, const float* src_mat_2, float* dst_ptr); - -// Multiplies a 4x4 matrix with a 4-dim. vector. -void Matrix4Vector4Mul(const float* src_mat, const float* src_vec, float* dst_vec); - -// Multiplies a 4x4 matrix with a 3-dim. vector. Last coordinate is assumed to be 1. -// Output is 4-dim. -void Matrix4Vector3Mul(const float* src_mat, const float* src_vec, float* dst_vec); - -// Multiplies a 4x4 matrix with a 3-dim. vector. Last coordinate is assumed to be w. -// Output is 4-dim. -void Matrix4Vector3Mul(const float* src_mat, const float* src_vec, float w, float* dst_vec); - -// Multiplies a 4x4 matrix with a 3-dim. vector. Last coordinate is assumed to be 1. -// Output is 4-dim. -void Matrix4Vector3ArrayMul(int num, // Number of Vertices. - const float* src_mat, // Source matrix. - int src_stride, // Source vector stride in bytes. - const float* src_vec_array, // Source vector array. - int dst_stride, // Dest. vector stride in bytes. - float* dest_vec_array); // Dest. vector array. - - -// Multiplies a 4x4 matrix with a 3-dim. vector. Last coordinate is assumed to be w. -// Output is 4-dim. -void Matrix4Vector3ArrayMul(int num, // Number of Vertices. - const float* src_mat, // Source matrix. - float w, // Last coordinate of vectors. - int src_stride, // Source vector stride in bytes. - const float* src_vec_array, // Source vector array. - int dst_stride, // Dest. vector stride in bytes. - float* dest_vec_array); // Dest. vector array. - -// Inverts a 4x4 Matrix with 94 multiplications and one division. -// This is not the fastest possible implementation (60 mult + 2 divisions) but it is -// not dependent on the determinants of submatrices. -// Furthermore on iPhone, division has IPC of 15 vs. 1 IPC for multiplication. -void Matrix4Invert(const float* src_mat, float* dst_mat); - -#endif // MATRIX_IMPL_H__ diff --git a/vfpmathlibrary/.svn/text-base/vfp_clobbers.h.svn-base b/vfpmathlibrary/.svn/text-base/vfp_clobbers.h.svn-base deleted file mode 100644 index d12f847..0000000 --- a/vfpmathlibrary/.svn/text-base/vfp_clobbers.h.svn-base +++ /dev/null @@ -1,975 +0,0 @@ -/* - VFP math library for the iPhone / iPod touch - - Copyright (c) 2007-2008 Wolfgang Engel and Matthias Grundmann - http://code.google.com/p/vfpmathlibrary/ - - This software is provided 'as-is', without any express or implied warranty. - In no event will the authors be held liable for any damages arising - from the use of this software. - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it freely, - subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product documentation - would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source distribution. - */ - - -// VFP registers clobber list specified by intervals [s0, s31] -// Header file is created by the following snippet. - -/* -#include - -int main() { - int min_reg = 0; - int max_reg = 31; - - for (int i = min_reg; i < max_reg; ++i) { - for (int j = i+1; j <= max_reg; ++j) { - std::cout << "#define VFP_CLOBBER_S" << i << "_" - << "S" << j << " "; - for (int k = i; k <= j; ++k) { - std::cout << "\"s" << k << "\""; - if (k != j) { - std::cout << ", "; - if (k > i && (k-i) % 8 == 0) { - std::cout << " \\\n "; - } - } - } - - std::cout << "\n"; - } - } -} -*/ - -#define VFP_CLOBBER_S0_S1 "s0", "s1" -#define VFP_CLOBBER_S0_S2 "s0", "s1", "s2" -#define VFP_CLOBBER_S0_S3 "s0", "s1", "s2", "s3" -#define VFP_CLOBBER_S0_S4 "s0", "s1", "s2", "s3", "s4" -#define VFP_CLOBBER_S0_S5 "s0", "s1", "s2", "s3", "s4", "s5" -#define VFP_CLOBBER_S0_S6 "s0", "s1", "s2", "s3", "s4", "s5", "s6" -#define VFP_CLOBBER_S0_S7 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7" -#define VFP_CLOBBER_S0_S8 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S0_S9 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9" -#define VFP_CLOBBER_S0_S10 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10" -#define VFP_CLOBBER_S0_S11 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11" -#define VFP_CLOBBER_S0_S12 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S0_S13 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S0_S14 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S0_S15 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S0_S16 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S0_S17 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17" -#define VFP_CLOBBER_S0_S18 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18" -#define VFP_CLOBBER_S0_S19 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19" -#define VFP_CLOBBER_S0_S20 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S0_S21 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S0_S22 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S0_S23 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S0_S24 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S0_S25 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25" -#define VFP_CLOBBER_S0_S26 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26" -#define VFP_CLOBBER_S0_S27 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27" -#define VFP_CLOBBER_S0_S28 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S0_S29 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S0_S30 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S0_S31 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", \ - "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S1_S2 "s1", "s2" -#define VFP_CLOBBER_S1_S3 "s1", "s2", "s3" -#define VFP_CLOBBER_S1_S4 "s1", "s2", "s3", "s4" -#define VFP_CLOBBER_S1_S5 "s1", "s2", "s3", "s4", "s5" -#define VFP_CLOBBER_S1_S6 "s1", "s2", "s3", "s4", "s5", "s6" -#define VFP_CLOBBER_S1_S7 "s1", "s2", "s3", "s4", "s5", "s6", "s7" -#define VFP_CLOBBER_S1_S8 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S1_S9 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S1_S10 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10" -#define VFP_CLOBBER_S1_S11 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11" -#define VFP_CLOBBER_S1_S12 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12" -#define VFP_CLOBBER_S1_S13 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S1_S14 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S1_S15 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S1_S16 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S1_S17 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S1_S18 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18" -#define VFP_CLOBBER_S1_S19 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19" -#define VFP_CLOBBER_S1_S20 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20" -#define VFP_CLOBBER_S1_S21 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S1_S22 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S1_S23 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S1_S24 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S1_S25 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S1_S26 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26" -#define VFP_CLOBBER_S1_S27 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27" -#define VFP_CLOBBER_S1_S28 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28" -#define VFP_CLOBBER_S1_S29 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S1_S30 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S1_S31 "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", \ - "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S2_S3 "s2", "s3" -#define VFP_CLOBBER_S2_S4 "s2", "s3", "s4" -#define VFP_CLOBBER_S2_S5 "s2", "s3", "s4", "s5" -#define VFP_CLOBBER_S2_S6 "s2", "s3", "s4", "s5", "s6" -#define VFP_CLOBBER_S2_S7 "s2", "s3", "s4", "s5", "s6", "s7" -#define VFP_CLOBBER_S2_S8 "s2", "s3", "s4", "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S2_S9 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S2_S10 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S2_S11 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11" -#define VFP_CLOBBER_S2_S12 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12" -#define VFP_CLOBBER_S2_S13 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13" -#define VFP_CLOBBER_S2_S14 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S2_S15 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S2_S16 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S2_S17 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S2_S18 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S2_S19 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19" -#define VFP_CLOBBER_S2_S20 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20" -#define VFP_CLOBBER_S2_S21 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21" -#define VFP_CLOBBER_S2_S22 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S2_S23 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S2_S24 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S2_S25 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S2_S26 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S2_S27 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27" -#define VFP_CLOBBER_S2_S28 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28" -#define VFP_CLOBBER_S2_S29 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29" -#define VFP_CLOBBER_S2_S30 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S2_S31 "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", \ - "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S3_S4 "s3", "s4" -#define VFP_CLOBBER_S3_S5 "s3", "s4", "s5" -#define VFP_CLOBBER_S3_S6 "s3", "s4", "s5", "s6" -#define VFP_CLOBBER_S3_S7 "s3", "s4", "s5", "s6", "s7" -#define VFP_CLOBBER_S3_S8 "s3", "s4", "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S3_S9 "s3", "s4", "s5", "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S3_S10 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S3_S11 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S3_S12 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12" -#define VFP_CLOBBER_S3_S13 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13" -#define VFP_CLOBBER_S3_S14 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14" -#define VFP_CLOBBER_S3_S15 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S3_S16 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S3_S17 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S3_S18 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S3_S19 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S3_S20 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20" -#define VFP_CLOBBER_S3_S21 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21" -#define VFP_CLOBBER_S3_S22 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22" -#define VFP_CLOBBER_S3_S23 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S3_S24 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S3_S25 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S3_S26 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S3_S27 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S3_S28 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28" -#define VFP_CLOBBER_S3_S29 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29" -#define VFP_CLOBBER_S3_S30 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30" -#define VFP_CLOBBER_S3_S31 "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", \ - "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S4_S5 "s4", "s5" -#define VFP_CLOBBER_S4_S6 "s4", "s5", "s6" -#define VFP_CLOBBER_S4_S7 "s4", "s5", "s6", "s7" -#define VFP_CLOBBER_S4_S8 "s4", "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S4_S9 "s4", "s5", "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S4_S10 "s4", "s5", "s6", "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S4_S11 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S4_S12 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S4_S13 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13" -#define VFP_CLOBBER_S4_S14 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14" -#define VFP_CLOBBER_S4_S15 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15" -#define VFP_CLOBBER_S4_S16 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S4_S17 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S4_S18 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S4_S19 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S4_S20 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S4_S21 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21" -#define VFP_CLOBBER_S4_S22 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22" -#define VFP_CLOBBER_S4_S23 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23" -#define VFP_CLOBBER_S4_S24 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S4_S25 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S4_S26 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S4_S27 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S4_S28 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S4_S29 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29" -#define VFP_CLOBBER_S4_S30 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30" -#define VFP_CLOBBER_S4_S31 "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", \ - "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30", "s31" -#define VFP_CLOBBER_S5_S6 "s5", "s6" -#define VFP_CLOBBER_S5_S7 "s5", "s6", "s7" -#define VFP_CLOBBER_S5_S8 "s5", "s6", "s7", "s8" -#define VFP_CLOBBER_S5_S9 "s5", "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S5_S10 "s5", "s6", "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S5_S11 "s5", "s6", "s7", "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S5_S12 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S5_S13 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S5_S14 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14" -#define VFP_CLOBBER_S5_S15 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15" -#define VFP_CLOBBER_S5_S16 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16" -#define VFP_CLOBBER_S5_S17 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S5_S18 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S5_S19 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S5_S20 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S5_S21 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S5_S22 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22" -#define VFP_CLOBBER_S5_S23 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23" -#define VFP_CLOBBER_S5_S24 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24" -#define VFP_CLOBBER_S5_S25 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S5_S26 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S5_S27 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S5_S28 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S5_S29 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S5_S30 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30" -#define VFP_CLOBBER_S5_S31 "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", \ - "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30", "s31" -#define VFP_CLOBBER_S6_S7 "s6", "s7" -#define VFP_CLOBBER_S6_S8 "s6", "s7", "s8" -#define VFP_CLOBBER_S6_S9 "s6", "s7", "s8", "s9" -#define VFP_CLOBBER_S6_S10 "s6", "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S6_S11 "s6", "s7", "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S6_S12 "s6", "s7", "s8", "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S6_S13 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S6_S14 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S6_S15 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15" -#define VFP_CLOBBER_S6_S16 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16" -#define VFP_CLOBBER_S6_S17 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17" -#define VFP_CLOBBER_S6_S18 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S6_S19 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S6_S20 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S6_S21 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S6_S22 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S6_S23 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23" -#define VFP_CLOBBER_S6_S24 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24" -#define VFP_CLOBBER_S6_S25 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25" -#define VFP_CLOBBER_S6_S26 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S6_S27 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S6_S28 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S6_S29 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S6_S30 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S6_S31 "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", \ - "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30", \ - "s31" -#define VFP_CLOBBER_S7_S8 "s7", "s8" -#define VFP_CLOBBER_S7_S9 "s7", "s8", "s9" -#define VFP_CLOBBER_S7_S10 "s7", "s8", "s9", "s10" -#define VFP_CLOBBER_S7_S11 "s7", "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S7_S12 "s7", "s8", "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S7_S13 "s7", "s8", "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S7_S14 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S7_S15 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S7_S16 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16" -#define VFP_CLOBBER_S7_S17 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17" -#define VFP_CLOBBER_S7_S18 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18" -#define VFP_CLOBBER_S7_S19 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S7_S20 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S7_S21 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S7_S22 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S7_S23 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S7_S24 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24" -#define VFP_CLOBBER_S7_S25 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25" -#define VFP_CLOBBER_S7_S26 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26" -#define VFP_CLOBBER_S7_S27 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S7_S28 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S7_S29 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S7_S30 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S7_S31 "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", \ - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S8_S9 "s8", "s9" -#define VFP_CLOBBER_S8_S10 "s8", "s9", "s10" -#define VFP_CLOBBER_S8_S11 "s8", "s9", "s10", "s11" -#define VFP_CLOBBER_S8_S12 "s8", "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S8_S13 "s8", "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S8_S14 "s8", "s9", "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S8_S15 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S8_S16 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S8_S17 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17" -#define VFP_CLOBBER_S8_S18 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18" -#define VFP_CLOBBER_S8_S19 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19" -#define VFP_CLOBBER_S8_S20 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S8_S21 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S8_S22 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S8_S23 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S8_S24 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S8_S25 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25" -#define VFP_CLOBBER_S8_S26 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26" -#define VFP_CLOBBER_S8_S27 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27" -#define VFP_CLOBBER_S8_S28 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S8_S29 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S8_S30 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S8_S31 "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", \ - "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S9_S10 "s9", "s10" -#define VFP_CLOBBER_S9_S11 "s9", "s10", "s11" -#define VFP_CLOBBER_S9_S12 "s9", "s10", "s11", "s12" -#define VFP_CLOBBER_S9_S13 "s9", "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S9_S14 "s9", "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S9_S15 "s9", "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S9_S16 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S9_S17 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S9_S18 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18" -#define VFP_CLOBBER_S9_S19 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19" -#define VFP_CLOBBER_S9_S20 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20" -#define VFP_CLOBBER_S9_S21 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S9_S22 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S9_S23 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S9_S24 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S9_S25 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S9_S26 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26" -#define VFP_CLOBBER_S9_S27 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27" -#define VFP_CLOBBER_S9_S28 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28" -#define VFP_CLOBBER_S9_S29 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S9_S30 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S9_S31 "s9", "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", \ - "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S10_S11 "s10", "s11" -#define VFP_CLOBBER_S10_S12 "s10", "s11", "s12" -#define VFP_CLOBBER_S10_S13 "s10", "s11", "s12", "s13" -#define VFP_CLOBBER_S10_S14 "s10", "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S10_S15 "s10", "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S10_S16 "s10", "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S10_S17 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S10_S18 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S10_S19 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19" -#define VFP_CLOBBER_S10_S20 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20" -#define VFP_CLOBBER_S10_S21 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21" -#define VFP_CLOBBER_S10_S22 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S10_S23 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S10_S24 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S10_S25 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S10_S26 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S10_S27 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27" -#define VFP_CLOBBER_S10_S28 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28" -#define VFP_CLOBBER_S10_S29 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29" -#define VFP_CLOBBER_S10_S30 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S10_S31 "s10", "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", \ - "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S11_S12 "s11", "s12" -#define VFP_CLOBBER_S11_S13 "s11", "s12", "s13" -#define VFP_CLOBBER_S11_S14 "s11", "s12", "s13", "s14" -#define VFP_CLOBBER_S11_S15 "s11", "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S11_S16 "s11", "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S11_S17 "s11", "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S11_S18 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S11_S19 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S11_S20 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20" -#define VFP_CLOBBER_S11_S21 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21" -#define VFP_CLOBBER_S11_S22 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22" -#define VFP_CLOBBER_S11_S23 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S11_S24 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S11_S25 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S11_S26 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S11_S27 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S11_S28 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28" -#define VFP_CLOBBER_S11_S29 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29" -#define VFP_CLOBBER_S11_S30 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30" -#define VFP_CLOBBER_S11_S31 "s11", "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", \ - "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S12_S13 "s12", "s13" -#define VFP_CLOBBER_S12_S14 "s12", "s13", "s14" -#define VFP_CLOBBER_S12_S15 "s12", "s13", "s14", "s15" -#define VFP_CLOBBER_S12_S16 "s12", "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S12_S17 "s12", "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S12_S18 "s12", "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S12_S19 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S12_S20 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S12_S21 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21" -#define VFP_CLOBBER_S12_S22 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22" -#define VFP_CLOBBER_S12_S23 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23" -#define VFP_CLOBBER_S12_S24 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S12_S25 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S12_S26 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S12_S27 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S12_S28 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S12_S29 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29" -#define VFP_CLOBBER_S12_S30 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30" -#define VFP_CLOBBER_S12_S31 "s12", "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", \ - "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30", "s31" -#define VFP_CLOBBER_S13_S14 "s13", "s14" -#define VFP_CLOBBER_S13_S15 "s13", "s14", "s15" -#define VFP_CLOBBER_S13_S16 "s13", "s14", "s15", "s16" -#define VFP_CLOBBER_S13_S17 "s13", "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S13_S18 "s13", "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S13_S19 "s13", "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S13_S20 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S13_S21 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S13_S22 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22" -#define VFP_CLOBBER_S13_S23 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23" -#define VFP_CLOBBER_S13_S24 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24" -#define VFP_CLOBBER_S13_S25 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S13_S26 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S13_S27 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S13_S28 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S13_S29 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S13_S30 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30" -#define VFP_CLOBBER_S13_S31 "s13", "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", \ - "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30", "s31" -#define VFP_CLOBBER_S14_S15 "s14", "s15" -#define VFP_CLOBBER_S14_S16 "s14", "s15", "s16" -#define VFP_CLOBBER_S14_S17 "s14", "s15", "s16", "s17" -#define VFP_CLOBBER_S14_S18 "s14", "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S14_S19 "s14", "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S14_S20 "s14", "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S14_S21 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S14_S22 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S14_S23 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23" -#define VFP_CLOBBER_S14_S24 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24" -#define VFP_CLOBBER_S14_S25 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25" -#define VFP_CLOBBER_S14_S26 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S14_S27 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S14_S28 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S14_S29 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S14_S30 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S14_S31 "s14", "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", \ - "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30", \ - "s31" -#define VFP_CLOBBER_S15_S16 "s15", "s16" -#define VFP_CLOBBER_S15_S17 "s15", "s16", "s17" -#define VFP_CLOBBER_S15_S18 "s15", "s16", "s17", "s18" -#define VFP_CLOBBER_S15_S19 "s15", "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S15_S20 "s15", "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S15_S21 "s15", "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S15_S22 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S15_S23 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S15_S24 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24" -#define VFP_CLOBBER_S15_S25 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25" -#define VFP_CLOBBER_S15_S26 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26" -#define VFP_CLOBBER_S15_S27 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S15_S28 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S15_S29 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S15_S30 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S15_S31 "s15", "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", \ - "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S16_S17 "s16", "s17" -#define VFP_CLOBBER_S16_S18 "s16", "s17", "s18" -#define VFP_CLOBBER_S16_S19 "s16", "s17", "s18", "s19" -#define VFP_CLOBBER_S16_S20 "s16", "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S16_S21 "s16", "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S16_S22 "s16", "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S16_S23 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S16_S24 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S16_S25 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25" -#define VFP_CLOBBER_S16_S26 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26" -#define VFP_CLOBBER_S16_S27 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27" -#define VFP_CLOBBER_S16_S28 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S16_S29 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S16_S30 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S16_S31 "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", \ - "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S17_S18 "s17", "s18" -#define VFP_CLOBBER_S17_S19 "s17", "s18", "s19" -#define VFP_CLOBBER_S17_S20 "s17", "s18", "s19", "s20" -#define VFP_CLOBBER_S17_S21 "s17", "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S17_S22 "s17", "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S17_S23 "s17", "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S17_S24 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S17_S25 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S17_S26 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26" -#define VFP_CLOBBER_S17_S27 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27" -#define VFP_CLOBBER_S17_S28 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28" -#define VFP_CLOBBER_S17_S29 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S17_S30 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S17_S31 "s17", "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", \ - "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S18_S19 "s18", "s19" -#define VFP_CLOBBER_S18_S20 "s18", "s19", "s20" -#define VFP_CLOBBER_S18_S21 "s18", "s19", "s20", "s21" -#define VFP_CLOBBER_S18_S22 "s18", "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S18_S23 "s18", "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S18_S24 "s18", "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S18_S25 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S18_S26 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S18_S27 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27" -#define VFP_CLOBBER_S18_S28 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28" -#define VFP_CLOBBER_S18_S29 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29" -#define VFP_CLOBBER_S18_S30 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S18_S31 "s18", "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", \ - "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S19_S20 "s19", "s20" -#define VFP_CLOBBER_S19_S21 "s19", "s20", "s21" -#define VFP_CLOBBER_S19_S22 "s19", "s20", "s21", "s22" -#define VFP_CLOBBER_S19_S23 "s19", "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S19_S24 "s19", "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S19_S25 "s19", "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S19_S26 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S19_S27 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S19_S28 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28" -#define VFP_CLOBBER_S19_S29 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29" -#define VFP_CLOBBER_S19_S30 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30" -#define VFP_CLOBBER_S19_S31 "s19", "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", \ - "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S20_S21 "s20", "s21" -#define VFP_CLOBBER_S20_S22 "s20", "s21", "s22" -#define VFP_CLOBBER_S20_S23 "s20", "s21", "s22", "s23" -#define VFP_CLOBBER_S20_S24 "s20", "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S20_S25 "s20", "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S20_S26 "s20", "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S20_S27 "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S20_S28 "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S20_S29 "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29" -#define VFP_CLOBBER_S20_S30 "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30" -#define VFP_CLOBBER_S20_S31 "s20", "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", \ - "s29", "s30", "s31" -#define VFP_CLOBBER_S21_S22 "s21", "s22" -#define VFP_CLOBBER_S21_S23 "s21", "s22", "s23" -#define VFP_CLOBBER_S21_S24 "s21", "s22", "s23", "s24" -#define VFP_CLOBBER_S21_S25 "s21", "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S21_S26 "s21", "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S21_S27 "s21", "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S21_S28 "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S21_S29 "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S21_S30 "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30" -#define VFP_CLOBBER_S21_S31 "s21", "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", \ - "s30", "s31" -#define VFP_CLOBBER_S22_S23 "s22", "s23" -#define VFP_CLOBBER_S22_S24 "s22", "s23", "s24" -#define VFP_CLOBBER_S22_S25 "s22", "s23", "s24", "s25" -#define VFP_CLOBBER_S22_S26 "s22", "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S22_S27 "s22", "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S22_S28 "s22", "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S22_S29 "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S22_S30 "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S22_S31 "s22", "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30", \ - "s31" -#define VFP_CLOBBER_S23_S24 "s23", "s24" -#define VFP_CLOBBER_S23_S25 "s23", "s24", "s25" -#define VFP_CLOBBER_S23_S26 "s23", "s24", "s25", "s26" -#define VFP_CLOBBER_S23_S27 "s23", "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S23_S28 "s23", "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S23_S29 "s23", "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S23_S30 "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S23_S31 "s23", "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S24_S25 "s24", "s25" -#define VFP_CLOBBER_S24_S26 "s24", "s25", "s26" -#define VFP_CLOBBER_S24_S27 "s24", "s25", "s26", "s27" -#define VFP_CLOBBER_S24_S28 "s24", "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S24_S29 "s24", "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S24_S30 "s24", "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S24_S31 "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S25_S26 "s25", "s26" -#define VFP_CLOBBER_S25_S27 "s25", "s26", "s27" -#define VFP_CLOBBER_S25_S28 "s25", "s26", "s27", "s28" -#define VFP_CLOBBER_S25_S29 "s25", "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S25_S30 "s25", "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S25_S31 "s25", "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S26_S27 "s26", "s27" -#define VFP_CLOBBER_S26_S28 "s26", "s27", "s28" -#define VFP_CLOBBER_S26_S29 "s26", "s27", "s28", "s29" -#define VFP_CLOBBER_S26_S30 "s26", "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S26_S31 "s26", "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S27_S28 "s27", "s28" -#define VFP_CLOBBER_S27_S29 "s27", "s28", "s29" -#define VFP_CLOBBER_S27_S30 "s27", "s28", "s29", "s30" -#define VFP_CLOBBER_S27_S31 "s27", "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S28_S29 "s28", "s29" -#define VFP_CLOBBER_S28_S30 "s28", "s29", "s30" -#define VFP_CLOBBER_S28_S31 "s28", "s29", "s30", "s31" -#define VFP_CLOBBER_S29_S30 "s29", "s30" -#define VFP_CLOBBER_S29_S31 "s29", "s30", "s31" -#define VFP_CLOBBER_S30_S31 "s30", "s31" diff --git a/vfpmathlibrary/.svn/text-base/vsinf.cpp.svn-base b/vfpmathlibrary/.svn/text-base/vsinf.cpp.svn-base deleted file mode 100644 index 19b195b..0000000 --- a/vfpmathlibrary/.svn/text-base/vsinf.cpp.svn-base +++ /dev/null @@ -1,171 +0,0 @@ -/* - vsinf.cpp - - Created by damien on 8/03/09. - Copyright 2009 Damien Morton. All rights reserved. - - This software is provided 'as-is', without any express or implied warranty. - In no event will the authors be held liable for any damages arising - from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it freely, - subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product documentation - would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source distribution. - */ - -#include "vsinf.h" -#include - -float fast_sin(float x); - -inline float abs(float x) { return (x < 0) ? -x : x; } - -float fast_sin(float x) -{ - // fast sin function; maximum error is 0.001 - const float P = 0.225; - - x = x * M_1_PI; - int k = (int) round(x); - x = x - k; - - float y = (4 - 4 * abs(x)) * x; - - y = P * (y * abs(y) - y) + y; - - return (k&1) ? -y : y; -} - - -void vsinf(float *x, float *y, int n) // input x, output y, n multiple of 4 -{ - // source and destination arrays can be the same - const float P = 0.225; - float consts[4] = { M_1_PI, 1.0, 4.0, P}; - const float neg1 = -1.0; - - int a, b, c, d; - - b = (int) consts; - asm volatile ( - "bic %[n], %[n], #3 \n\t" // n has to be a multiple of 4 - lets enforce that (and avoid infinte loops) - "fldmias %[b], {s0-s3} \n\t" // load up our constants - "fldmias %[x]!, {s8-s11} \n\t" // v2 = x // our loop is a little bit overlapped - preload some stuff - - "fmrx %[a], fpscr \n\t" - "stmfd sp!, {%[a]} \n\t" // save fpscr to the stack (dont forget to restore it and the stack pointer) - "bic %[a], %[a], #0x001f \n\t" // for runfast - clear CumulativeException[4:0] bits - "bic %[a], %[a], #0x1f00 \n\t" // for runfast - clear ExceptionTrapEnable[12:8] bits - "orr %[a], %[a], #(0x3 << 24) \n\t" // for runfast - set DefaultNaN[25] and FushToZero[24] bits - "bic %[a], %[a], #(0x37 << 16) \n\t" // clear the vector stride[21:20] and len[18:16] bits - "orr %[a], %[a], #(0x03 << 16) \n\t" // set stride[21:20] to 1(0), vector len[18:16] to 4(3) - "fmxr fpscr, %[a] \n\t" - - "fmuls s8, s8, s0 \n\t" // v3: = x * (1/PI) - - "ftosis s12, s8 \n\t" // v3: k = round(x) - "ftosis s13, s9 \n\t" - "ftosis s14, s10 \n\t" - "ftosis s15, s11 \n\t" - - "fmrrs %[a],%[b], {s12,s13} \n\t" - "fsitos s12, s12 \n\t" // k = (float) k - "fsitos s13, s13 \n\t" - "fmrrs %[c],%[d], {s14,s15} \n\t" - "fsitos s14, s14 \n\t" - "fsitos s15, s15 \n\t" - - "1: \n\t" - - //OOO out of order instructions marked with OOO and are usually suffixed with the ne condition - - "fsubs s8, s8, s12 \n\t" // x = x - k - "fcpys s28, s1 \n\t" // v7 = 1111 - "fcpys s24, s2 \n\t" // OOO v6 = 4444 - - //float x = x * M_1_PI; - //int k = round(x); - //float x = x - k; - - "fstmiasne %[y]!, {s20-s23} \n\t" // OOO: from previous loop - - "tst %[a], #1 \n\t" // if odd(n) then negate result at end - "fmsrne s28, %[neg1] \n\t" // shove a -1 into the appropriate part of v7 - "tst %[b], #1 \n\t" // 4 tests, spread through code - result not needed till end - "fmsrne s29, %[neg1] \n\t" - - "fabss s16, s8 \n\t" // x' = abs(x) - // y = (4 - 4 * abs(x)) * x; - - "tst %[c], #1 \n\t" - "fmsrne s30, %[neg1] \n\t" - - "fnmacs s24, s16, s2 \n\t" // y' = 4 - 4*abs(x) - - "tst %[d], #1 \n\t" - "fmsrne s31, %[neg1] \n\t" - - - "fmuls s16, s24, s8 \n\t" // y' *= x - - "subs %[n], %[n], #4 \n\t" // testing early here - "fldmiasne %[x]!, {s8-s11} \n\t" // v2 = x // our loop is a little bit overlapped - preload some stuff - "pld [%[x],#64] \n\t" // In the ARM1176JZF-S processor, in Non-secure state, the PLD instruction behaves like a NOP. Dammit. - - // y += P * (y * abs(y) - y); - - "fabss s20, s16 \n\t" // v4 = abs(y) - "fcpys s24, s16 \n\t" - - "fmulsne s8, s8, s0 \n\t" // OOO v2 = x * (1/PI) - - "fmscs s16, s16, s20 \n\t" // v3 = -y + y*abs(y) - - "ftosisne s12, s8 \n\t" // OOO v3: k = round(x) - "ftosisne s13, s9 \n\t" - "ftosisne s14, s10 \n\t" - "ftosisne s15, s11 \n\t" - - "fmacs s24, s16, s3 \n\t" // y += P*v3 - - "fmrrsne %[a],%[b], {s12,s13} \n\t" - "fsitosne s12, s12 \n\t" // k = (float) k - "fsitosne s13, s13 \n\t" - "fmrrsne %[c],%[d], {s14,s15} \n\t" - "fsitosne s14, s14 \n\t" - "fsitosne s15, s15 \n\t" - - "fmuls s20, s28, s24 \n\t" // multiply result by +1/-1 according to oddness of n - "bne 1b \n\t" - - "fstmias %[y]!, {s20-s23} \n\t" - "ldmfd sp!, {%[b]} \n\t" // restore the fpscr - "fmxr fpscr, %[b] \n\t" - - - : [x] "+&r" (x), - [y] "+&r" (y), - [n] "+&r" (n), - [neg1] "+&r" (neg1), - [a] "+&r" (a), - [b] "+&r" (b), - [c] "+&r" (c), - [d] "+&r" (d) - : - : "memory", "cc", - "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", - "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", - "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23", - "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31" - ); -} diff --git a/vfpmathlibrary/.svn/text-base/vsinf.h.svn-base b/vfpmathlibrary/.svn/text-base/vsinf.h.svn-base deleted file mode 100644 index 2e64e82..0000000 --- a/vfpmathlibrary/.svn/text-base/vsinf.h.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -/* - * vsinf.h - * TestHarness - * - * Created by damien on 8/03/09. - * Copyright 2009 __MyCompanyName__. All rights reserved. - * - */ - - - -#ifdef __cplusplus -extern "C" { -#endif - - void vsinf(float *x, float *y, int n); - -#ifdef __cplusplus -} -#endif