123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392 |
-
- /* TODO
- *
- * 1) It would be nice if load/store double could be used
- * at least for the matrix parts. I think for the matrices
- * it is safe, but for the vertices it probably is not due to
- * things like glInterleavedArrays etc.
- *
- * UPDATE: Trying this now in sparc_matrix.h -DaveM_990624
- *
- * 2) One extremely slick trick would be if we could enclose
- * groups of xform calls on the same vertices such that
- * we just load the matrix into f16-->f31 before the calls
- * and then we would not have to do them here. This may be
- * tricky and not much of a gain though.
- */
-
- #include "sparc_matrix.h"
-
- #if defined(SVR4) || defined(__SVR4) || defined(__svr4__) || defined(__arch64__)
- /* Solaris requires this for 64-bit. */
- .register %g2, #scratch
- .register %g3, #scratch
- #endif
-
- .text
- .align 64
-
- __set_v4f_1:
- ld [%o0 + V4F_FLAGS], %g2
- mov 1, %g1
- st %g1, [%o0 + V4F_SIZE]
- or %g2, VEC_SIZE_1, %g2
- retl
- st %g2, [%o0 + V4F_FLAGS]
- __set_v4f_2:
- ld [%o0 + V4F_FLAGS], %g2
- mov 2, %g1
- st %g1, [%o0 + V4F_SIZE]
- or %g2, VEC_SIZE_2, %g2
- retl
- st %g2, [%o0 + V4F_FLAGS]
- __set_v4f_3:
- ld [%o0 + V4F_FLAGS], %g2
- mov 3, %g1
- st %g1, [%o0 + V4F_SIZE]
- or %g2, VEC_SIZE_3, %g2
- retl
- st %g2, [%o0 + V4F_FLAGS]
- __set_v4f_4:
- ld [%o0 + V4F_FLAGS], %g2
- mov 4, %g1
- st %g1, [%o0 + V4F_SIZE]
- or %g2, VEC_SIZE_4, %g2
- retl
- st %g2, [%o0 + V4F_FLAGS]
-
- /* First the raw versions. */
-
- .globl _mesa_sparc_transform_points1_general
- _mesa_sparc_transform_points1_general:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_3_12_13_14_15(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f8 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
- fmuls %f0, M1, %f2 ! FGM Group
- fmuls %f0, M2, %f3 ! FGM Group
- fmuls %f0, M3, %f4 ! FGM Group
- fmuls %f8, M0, %f9 ! FGM Group f1 available
- fadds %f1, M12, %f1 ! FGA
- st %f1, [%g2 + 0x00] ! LSU
- fmuls %f8, M1, %f10 ! FGM Group f2 available
- fadds %f2, M13, %f2 ! FGA
- st %f2, [%g2 + 0x04] ! LSU
- fmuls %f8, M2, %f11 ! FGM Group f3 available
- fadds %f3, M14, %f3 ! FGA
- st %f3, [%g2 + 0x08] ! LSU
- fmuls %f8, M3, %f12 ! FGM Group f4 available
- fadds %f4, M15, %f4 ! FGA
- st %f4, [%g2 + 0x0c] ! LSU
- fadds %f9, M12, %f9 ! FGA Group f9 available
- st %f9, [%g2 + 0x10] ! LSU
- fadds %f10, M13, %f10 ! FGA Group f10 available
- st %f10, [%g2 + 0x14] ! LSU
- fadds %f11, M14, %f11 ! FGA Group f11 available
- st %f11, [%g2 + 0x18] ! LSU
- fadds %f12, M15, %f12 ! FGA Group f12 available
- st %f12, [%g2 + 0x1c] ! LSU
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0 ! LSU Group
- fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0
- fmuls %f0, M1, %f2 ! FGM Group
- fmuls %f0, M2, %f3 ! FGM Group
- fmuls %f0, M3, %f4 ! FGM Group
- fadds %f1, M12, %f1 ! FGA Group
- st %f1, [%g2 + 0x00] ! LSU
- fadds %f2, M13, %f2 ! FGA Group
- st %f2, [%g2 + 0x04] ! LSU
- fadds %f3, M14, %f3 ! FGA Group
- st %f3, [%g2 + 0x08] ! LSU
- fadds %f4, M15, %f4 ! FGA Group
- st %f4, [%g2 + 0x0c] ! LSU
-
- 3:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points1_identity
- _mesa_sparc_transform_points1_identity:
- cmp %o0, %o2
- be 4f
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f1 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- st %f0, [%g2 + 0x00] ! LSU Group
- cmp %o1, %o2 ! IEU1
- st %f1, [%g2 + 0x10] ! LSU Group
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- addx %g0, %g0, %g0
- st %f0, [%g2 + 0x00]
-
- 3:
- ba __set_v4f_1
- nop
-
- 4: retl
- nop
-
- .globl _mesa_sparc_transform_points1_2d
- _mesa_sparc_transform_points1_2d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_12_13(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f8 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group
- fmuls %f0, M1, %f2 ! FGM Group
- fmuls %f8, M0, %f9 ! FGM Group
- fmuls %f8, M1, %f10 ! FGM Group
- fadds %f1, M12, %f3 ! FGA Group f1 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f2, M13, %f4 ! FGA Group f2 available
- st %f4, [%g2 + 0x04] ! LSU
- fadds %f9, M12, %f11 ! FGA Group f9 available
- st %f11, [%g2 + 0x10] ! LSU
- fadds %f10, M13, %f12 ! FGA Group f10 available
- st %f12, [%g2 + 0x14] ! LSU
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- fmuls %f0, M0, %f1
- fmuls %f0, M1, %f2
- fadds %f1, M12, %f3
- st %f3, [%g2 + 0x00]
- fadds %f2, M13, %f4
- st %f4, [%g2 + 0x04]
-
- 3:
- ba __set_v4f_2
- nop
-
- .globl _mesa_sparc_transform_points1_2d_no_rot
- _mesa_sparc_transform_points1_2d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_12_13(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f4 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group
- fmuls %f4, M0, %f5 ! FGM Group
- fadds %f1, M12, %f3 ! FGA Group, 2 cycle stall, f1 available
- st %f3, [%g2 + 0x00] ! LSU
- st M13, [%g2 + 0x04] ! LSU Group, f5 available
- fadds %f5, M12, %f6 ! FGA
- st %f6, [%g2 + 0x10] ! LSU Group
- st M13, [%g2 + 0x14] ! LSU Group
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- fmuls %f0, M0, %f1
- fadds %f1, M12, %f3
- st %f3, [%g2 + 0x00]
- st M13, [%g2 + 0x04]
-
- 3:
- ba __set_v4f_2
- nop
-
- .globl _mesa_sparc_transform_points1_3d
- _mesa_sparc_transform_points1_3d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_12_13_14(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f4 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group
- fmuls %f0, M1, %f2 ! FGM Group
- fmuls %f0, M2, %f3 ! FGM Group
- fmuls %f4, M0, %f5 ! FGM Group
- fadds %f1, M12, %f1 ! FGA Group, f1 available
- st %f1, [%g2 + 0x00] ! LSU
- fmuls %f4, M1, %f6 ! FGM
- fadds %f2, M13, %f2 ! FGA Group, f2 available
- st %f2, [%g2 + 0x04] ! LSU
- fmuls %f4, M2, %f7 ! FGM
- fadds %f3, M14, %f3 ! FGA Group, f3 available
- st %f3, [%g2 + 0x08] ! LSU
- fadds %f5, M12, %f5 ! FGA Group, f5 available
- st %f5, [%g2 + 0x10] ! LSU
- fadds %f6, M13, %f6 ! FGA Group, f6 available
- st %f6, [%g2 + 0x14] ! LSU
- fadds %f7, M14, %f7 ! FGA Group, f7 available
- st %f7, [%g2 + 0x18] ! LSU
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- fmuls %f0, M0, %f1
- fmuls %f0, M1, %f2
- fmuls %f0, M2, %f3
- fadds %f1, M12, %f1
- st %f1, [%g2 + 0x00]
- fadds %f2, M13, %f2
- st %f2, [%g2 + 0x04]
- fadds %f3, M14, %f3
- st %f3, [%g2 + 0x08]
-
- 3:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points1_3d_no_rot
- _mesa_sparc_transform_points1_3d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_12_13_14(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f2 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group
- fmuls %f2, M0, %f3 ! FGM Group
- fadds %f1, M12, %f1 ! FGA Group, 2 cycle stall, f1 available
- st %f1, [%g2 + 0x00] ! LSU
- fadds %f3, M12, %f3 ! FGA Group, f3 available
- st M13, [%g2 + 0x04] ! LSU
- st M14, [%g2 + 0x08] ! LSU Group
- st %f3, [%g2 + 0x10] ! LSU Group
- st M13, [%g2 + 0x14] ! LSU Group
- st M14, [%g2 + 0x18] ! LSU Group
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- fmuls %f0, M0, %f1
- fadds %f1, M12, %f1
- st %f1, [%g2 + 0x00]
- st M13, [%g2 + 0x04]
- st M14, [%g2 + 0x08]
-
- 3:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points1_perspective
- _mesa_sparc_transform_points1_perspective:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_14(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- ld [%g1 + 0x00], %f2 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f1 ! FGM Group
- st %f1, [%g2 + 0x00] ! LSU
- fmuls %f2, M0, %f3 ! FGM Group
- st %g0, [%g2 + 0x04] ! LSU
- st M14, [%g2 + 0x08] ! LSU Group
- st %g0, [%g2 + 0x0c] ! LSU Group
- st %f3, [%g2 + 0x10] ! LSU Group
- st %g0, [%g2 + 0x14] ! LSU Group
- st M14, [%g2 + 0x18] ! LSU Group
- st %g0, [%g2 + 0x1c] ! LSU Group
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0
- fmuls %f0, M0, %f1
- st %f1, [%g2 + 0x00]
- st %g0, [%g2 + 0x04]
- st M14, [%g2 + 0x08]
- st %g0, [%g2 + 0x0c]
-
- 3:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points2_general
- _mesa_sparc_transform_points2_general:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f2 ! FGM Group
- fmuls %f0, M1, %f3 ! FGM Group
- fmuls %f0, M2, %f4 ! FGM Group
- fmuls %f0, M3, %f5 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group f2 available
- fmuls %f1, M4, %f6 ! FGM
- fadds %f3, M13, %f3 ! FGA Group f3 available
- fmuls %f1, M5, %f7 ! FGM
- fadds %f4, M14, %f4 ! FGA Group f4 available
- fmuls %f1, M6, %f8 ! FGM
- fadds %f5, M15, %f5 ! FGA Group f5 available
- fmuls %f1, M7, %f9 ! FGM
- fadds %f2, %f6, %f2 ! FGA Group f6 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, %f7, %f3 ! FGA Group f7 available
- st %f3, [%g2 + 0x04] ! LSU
- fadds %f4, %f8, %f4 ! FGA Group f8 available
- st %f4, [%g2 + 0x08] ! LSU
- fadds %f5, %f9, %f5 ! FGA Group f9 available
- st %f5, [%g2 + 0x0c] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points2_identity
- _mesa_sparc_transform_points2_identity:
- cmp %o2, %o0
- be 3f
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %g1, %o5, %g1 ! IEU0
- cmp %o1, %g3 ! IEU1
- st %f0, [%g2 + 0x00] ! LSU Group
- st %f1, [%g2 + 0x04] ! LSU Group
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0
- 2:
- ba __set_v4f_2
- nop
-
- 3: retl
- nop
-
- .globl _mesa_sparc_transform_points2_2d
- _mesa_sparc_transform_points2_2d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_4_5_12_13(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f2 ! FGM
- ld [%g1 + 0x00], %f8 ! LSU Group
- fmuls %f0, M1, %f3 ! FGM
- ld [%g1 + 0x04], %f9 ! LSU Group
- fmuls %f1, M4, %f6 ! FGM
- fmuls %f1, M5, %f7 ! FGM Group
- add %g1, %o5, %g1 ! IEU0
- fmuls %f8, M0, %f10 ! FGM Group f2 available
- fadds %f2, M12, %f2 ! FGA
- fmuls %f8, M1, %f11 ! FGM Group f3 available
- fadds %f3, M13, %f3 ! FGA
- fmuls %f9, M4, %f12 ! FGM Group
- fmuls %f9, M5, %f13 ! FGM Group
- fadds %f10, M12, %f10 ! FGA Group f2, f10 available
- fadds %f2, %f6, %f2 ! FGA Group f3, f11 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f11, M13, %f11 ! FGA Group f12 available
- fadds %f3, %f7, %f3 ! FGA Group f13 available
- st %f3, [%g2 + 0x04] ! LSU
- fadds %f10, %f12, %f10 ! FGA Group f10 available
- st %f10, [%g2 + 0x10] ! LSU
- fadds %f11, %f13, %f11 ! FGA Group f11 available
- st %f11, [%g2 + 0x14] ! LSU
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM Group
- fmuls %f0, M1, %f3 ! FGM Group
- fmuls %f1, M4, %f6 ! FGM Group
- fmuls %f1, M5, %f7 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group f2 available
- fadds %f3, M13, %f3 ! FGA Group f3 available
- fadds %f2, %f6, %f2 ! FGA Group 2 cycle stall, f2 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, %f7, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x04] ! LSU
-
- 3:
- ba __set_v4f_2
- nop
-
- .globl _mesa_sparc_transform_points2_2d_no_rot
- _mesa_sparc_transform_points2_2d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_12_13(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- ld [%g1 + 0x00], %f4 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM
- ld [%g1 + 0x04], %f5 ! LSU Group
- fmuls %f1, M5, %f3 ! FGM
- fmuls %f4, M0, %f6 ! FGM Group
- add %g1, %o5, %g1 ! IEU0
- fmuls %f5, M5, %f7 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group f2 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, M13, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x04] ! LSU
- fadds %f6, M12, %f6 ! FGA Group f6 available
- st %f6, [%g2 + 0x10] ! LSU
- fadds %f7, M13, %f7 ! FGA Group f7 available
- st %f7, [%g2 + 0x14] ! LSU
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM Group
- fmuls %f1, M5, %f3 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, M13, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x04] ! LSU
-
- 3:
- ba __set_v4f_2
- nop
-
- /* orig: 12 cycles */
- .globl _mesa_sparc_transform_points2_3d
- _mesa_sparc_transform_points2_3d:
- ld [%o2 + V4F_STRIDE], %o5
- ld [%o2 + V4F_START], %g1
- ld [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o1
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %o1, 2, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- ld [%g1 + 0x00], %f9 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM
- ld [%g1 + 0x04], %f10 ! LSU Group
- fmuls %f0, M1, %f3 ! FGM
- fmuls %f0, M2, %f4 ! FGM Group
- add %g1, %o5, %g1 ! IEU0
- fmuls %f1, M4, %f6 ! FGM Group
- fmuls %f1, M5, %f7 ! FGM Group f2 available
- fadds %f2, M12, %f2 ! FGA
- fmuls %f1, M6, %f8 ! FGM Group f3 available
- fadds %f3, M13, %f3 ! FGA
- fmuls %f9, M0, %f11 ! FGM Group f4 available
- fadds %f4, M14, %f4 ! FGA
- fmuls %f9, M1, %f12 ! FGM Group f6 available
- fmuls %f9, M2, %f13 ! FGM Group f2, f7 available
- fadds %f2, %f6, %f2 ! FGA
- st %f2, [%g2 + 0x00] ! LSU
- fmuls %f10, M4, %f14 ! FGM Group f3, f8 available
- fadds %f3, %f7, %f3 ! FGA
- st %f3, [%g2 + 0x04] ! LSU
- fmuls %f10, M5, %f15 ! FGM Group f4, f11 available
- fadds %f11, M12, %f11 ! FGA
- fmuls %f10, M6, %f0 ! FGM Group f12 available
- fadds %f12, M13, %f12 ! FGA
- fadds %f13, M14, %f13 ! FGA Group f13 available
- fadds %f4, %f8, %f4 ! FGA Group f14 available
- st %f4, [%g2 + 0x08] ! LSU
- fadds %f11, %f14, %f11 ! FGA Group f15, f11 available
- st %f11, [%g2 + 0x10] ! LSU
- fadds %f12, %f15, %f12 ! FGA Group f0, f12 available
- st %f12, [%g2 + 0x14] ! LSU
- fadds %f13, %f0, %f13 ! FGA Group f13 available
- st %f13, [%g2 + 0x18] ! LSU
-
- cmp %o1, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o1, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM Group
- fmuls %f0, M1, %f3 ! FGM Group
- fmuls %f0, M2, %f4 ! FGM Group
- fmuls %f1, M4, %f6 ! FGM Group
- fmuls %f1, M5, %f7 ! FGM Group f2 available
- fadds %f2, M12, %f2 ! FGA
- fmuls %f1, M6, %f8 ! FGM Group f3 available
- fadds %f3, M13, %f3 ! FGA
- fadds %f4, M14, %f4 ! FGA Group f4 available
- fadds %f2, %f6, %f2 ! FGA Group stall, f2, f6, f7 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, %f7, %f3 ! FGA Group f3, f8 available
- st %f3, [%g2 + 0x04] ! LSU
- fadds %f4, %f8, %f4 ! FGA Group f4 available
- st %f4, [%g2 + 0x08] ! LSU
-
- 3:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points2_3d_no_rot
- _mesa_sparc_transform_points2_3d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_12_13_14(%o1)
-
- cmp %g3, 1
- st %g3, [%o0 + V4F_COUNT]
- bl 3f
- clr %o3
-
- be 2f
- andn %g3, 1, %o2
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- add %o3, 2, %o3 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- ld [%g1 + 0x00], %f4 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM
- ld [%g1 + 0x04], %f5 ! LSU Group
- fmuls %f1, M5, %f3 ! FGM
- fmuls %f4, M0, %f6 ! FGM Group
- add %g1, %o5, %g1 ! IEU0
- fmuls %f5, M5, %f7 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group f2 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, M13, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x04] ! LSU
- fadds %f6, M12, %f6 ! FGA Group f6 available
- st M14, [%g2 + 0x08] ! LSU
- fadds %f7, M13, %f7 ! FGA Group f7 available
- st %f6, [%g2 + 0x10] ! LSU
- st %f7, [%g2 + 0x14] ! LSU Group
- st M14, [%g2 + 0x18] ! LSU Group
- cmp %o3, %o2 ! IEU1
- bne 1b ! CTI
- add %g2, 0x20, %g2 ! IEU0 Group
-
- cmp %o3, %g3
- be 3f
- nop
-
- 2: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- fmuls %f0, M0, %f2 ! FGM Group
- fmuls %f1, M5, %f3 ! FGM Group
- fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available
- st %f2, [%g2 + 0x00] ! LSU
- fadds %f3, M13, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x04] ! LSU
- st M14, [%g2 + 0x08] ! LSU Group
-
- 3: ld [%o1 + (14 * 0x4)], %g3
- cmp %g3, 0
- bne __set_v4f_3
- nop
- ba __set_v4f_2
- nop
-
- .globl _mesa_sparc_transform_points2_perspective
- _mesa_sparc_transform_points2_perspective:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0
- ld [%g1 + 0x04], %f1
- add %o1, 1, %o1
- add %g1, %o5, %g1
- fmuls %f0, M0, %f2
- st %f2, [%g2 + 0x00]
- fmuls %f1, M5, %f3
- st %f3, [%g2 + 0x04]
- st M14, [%g2 + 0x08]
- st %g0, [%g2 + 0x0c]
- cmp %o1, %g3
- bne 1b
- add %g2, 0x10, %g2
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points3_general
- _mesa_sparc_transform_points3_general:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f1, M4, %f7 ! FGM Group
- fmuls %f0, M1, %f4 ! FGM Group
- fmuls %f1, M5, %f8 ! FGM Group
- fmuls %f0, M2, %f5 ! FGM Group f3 available
- fmuls %f1, M6, %f9 ! FGM Group f7 available
- fadds %f3, %f7, %f3 ! FGA
- fmuls %f0, M3, %f6 ! FGM Group f4 available
- fmuls %f1, M7, %f10 ! FGM Group f8 available
- fadds %f4, %f8, %f4 ! FGA
- fmuls %f2, M8, %f7 ! FGM Group f5 available
- fmuls %f2, M9, %f8 ! FGM Group f9,f3 available
- fadds %f5, %f9, %f5 ! FGA
- fmuls %f2, M10, %f9 ! FGM Group f6 available
- fadds %f6, %f10, %f6 ! FGA Group f10,f4 available
- fmuls %f2, M11, %f10 ! FGM
- fadds %f3, M12, %f3 ! FGA Group f7 available
- fadds %f4, M13, %f4 ! FGA Group f8,f5 available
- fadds %f5, M14, %f5 ! FGA Group f9 available
- fadds %f6, M15, %f6 ! FGA Group f10,f6 available
- fadds %f3, %f7, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, %f8, %f4 ! FGA Group f4 available
- st %f4, [%g2 + 0x04] ! LSU
- fadds %f5, %f9, %f5 ! FGA Group f5 available
- st %f5, [%g2 + 0x08] ! LSU
- fadds %f6, %f10, %f6 ! FGA Group f6 available
- st %f6, [%g2 + 0x0c] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points3_identity
- _mesa_sparc_transform_points3_identity:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0
- ld [%g1 + 0x04], %f1
- ld [%g1 + 0x08], %f2
- add %o1, 1, %o1
- add %g1, %o5, %g1
- cmp %o1, %g3
- st %f0, [%g2 + 0x00]
- st %f1, [%g2 + 0x04]
- st %f2, [%g2 + 0x08]
- bne 1b
- add %g2, 0x10, %g2
- 2:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points3_2d
- _mesa_sparc_transform_points3_2d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_4_5_12_13(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f0, M1, %f4 ! FGM Group
- fmuls %f1, M4, %f6 ! FGM Group
- fmuls %f1, M5, %f7 ! FGM Group
- fadds %f3, M12, %f3 ! FGA Group f3 available
- fadds %f4, M13, %f4 ! FGA Group f4 available
- fadds %f3, %f6, %f3 ! FGA Group f6 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, %f7, %f4 ! FGA Group f7 available
- st %f4, [%g2 + 0x04] ! LSU
- st %f2, [%g2 + 0x08] ! LSU Group
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points3_2d_no_rot
- _mesa_sparc_transform_points3_2d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_12_13(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f1, M5, %f4 ! FGM Group
- st %f2, [%g2 + 0x08] ! LSU
- fadds %f3, M12, %f3 ! FGA Group
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, M13, %f4 ! FGA Group
- st %f4, [%g2 + 0x04] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points3_3d
- _mesa_sparc_transform_points3_3d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f1, M4, %f6 ! FGM Group
- fmuls %f0, M1, %f4 ! FGM Group
- fmuls %f1, M5, %f7 ! FGM Group
- fmuls %f0, M2, %f5 ! FGM Group f3 available
- fmuls %f1, M6, %f8 ! FGM Group f6 available
- fadds %f3, %f6, %f3 ! FGA
- fmuls %f2, M8, %f9 ! FGM Group f4 available
- fmuls %f2, M9, %f10 ! FGM Group f7 available
- fadds %f4, %f7, %f4 ! FGA
- fmuls %f2, M10, %f11 ! FGM Group f5 available
- fadds %f5, %f8, %f5 ! FGA Group f8, f3 available
- fadds %f3, %f9, %f3 ! FGA Group f9 available
- fadds %f4, %f10, %f4 ! FGA Group f10, f4 available
- fadds %f5, %f11, %f5 ! FGA Group stall, f11, f5 available
- fadds %f3, M12, %f3 ! FGA Group f3 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, M13, %f4 ! FGA Group f4 available
- st %f4, [%g2 + 0x04] ! LSU
- fadds %f5, M14, %f5 ! FGA Group f5 available
- st %f5, [%g2 + 0x08] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points3_3d_no_rot
- _mesa_sparc_transform_points3_3d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_10_12_13_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- cmp %o1, %g3 ! IEU1 Group
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f1, M5, %f4 ! FGM Group
- fmuls %f2, M10, %f5 ! FGM Group
- fadds %f3, M12, %f3 ! FGA Group, stall, f3 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, M13, %f4 ! FGA Group, f4 available
- st %f4, [%g2 + 0x04] ! LSU
- fadds %f5, M14, %f5 ! FGA Group, f5 available
- st %f5, [%g2 + 0x08] ! LEU
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_3
- nop
-
- .globl _mesa_sparc_transform_points3_perspective
- _mesa_sparc_transform_points3_perspective:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_8_9_10_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f3 ! FGM
- fmuls %f2, M8, %f6 ! FGM Group
- fmuls %f1, M5, %f4 ! FGM Group
- fmuls %f2, M9, %f7 ! FGM Group
- fmuls %f2, M10, %f5 ! FGM Group f3 available
- fadds %f3, %f6, %f3 ! FGA Group f6 available
- st %f3, [%g2 + 0x00] ! LSU
- fadds %f4, %f7, %f4 ! FGA Group stall, f4, f7 available
- st %f4, [%g2 + 0x04] ! LSU
- fadds %f5, M14, %f5 ! FGA Group
- st %f5, [%g2 + 0x08] ! LSU
- fnegs %f2, %f6 ! FGA Group
- st %f6, [%g2 + 0x0c] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_general
- _mesa_sparc_transform_points4_general:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- ld [%g1 + 0x0c], %f3 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f4 ! FGM Group
- fmuls %f1, M4, %f8 ! FGM Group
- fmuls %f0, M1, %f5 ! FGM Group
- fmuls %f1, M5, %f9 ! FGM Group
- fmuls %f0, M2, %f6 ! FGM Group f4 available
- fmuls %f1, M6, %f10 ! FGM Group f8 available
- fadds %f4, %f8, %f4 ! FGA
- fmuls %f0, M3, %f7 ! FGM Group f5 available
- fmuls %f1, M7, %f11 ! FGM Group f9 available
- fadds %f5, %f9, %f5 ! FGA
- fmuls %f2, M8, %f12 ! FGM Group f6 available
- fmuls %f2, M9, %f13 ! FGM Group f10, f4 available
- fadds %f6, %f10, %f6 ! FGA
- fmuls %f2, M10, %f14 ! FGM Group f7 available
- fmuls %f2, M11, %f15 ! FGM Group f11, f5 available
- fadds %f7, %f11, %f7 ! FGA
- fmuls %f3, M12, %f8 ! FGM Group f12 available
- fadds %f4, %f12, %f4 ! FGA
- fmuls %f3, M13, %f9 ! FGM Group f13, f6 available
- fadds %f5, %f13, %f5 ! FGA
- fmuls %f3, M14, %f10 ! FGM Group f14 available
- fadds %f6, %f14, %f6 ! FGA
- fmuls %f3, M15, %f11 ! FGM Group f15, f7 available
- fadds %f7, %f15, %f7 ! FGA
- fadds %f4, %f8, %f4 ! FGA Group f8, f4 available
- st %f4, [%g2 + 0x00] ! LSU
- fadds %f5, %f9, %f5 ! FGA Group f9, f5 available
- st %f5, [%g2 + 0x04] ! LSU
- fadds %f6, %f10, %f6 ! FGA Group f10, f6 available
- st %f6, [%g2 + 0x08] ! LSU
- fadds %f7, %f11, %f7 ! FGA Group f11, f7 available
- st %f7, [%g2 + 0x0c] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_identity
- _mesa_sparc_transform_points4_identity:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0
- ld [%g1 + 0x04], %f1
- ld [%g1 + 0x08], %f2
- add %o1, 1, %o1
- ld [%g1 + 0x0c], %f3
- add %g1, %o5, %g1
- st %f0, [%g2 + 0x00]
- st %f1, [%g2 + 0x04]
- st %f2, [%g2 + 0x08]
- cmp %o1, %g3
- st %f3, [%g2 + 0x0c]
- bne 1b
- add %g2, 0x10, %g2
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_2d
- _mesa_sparc_transform_points4_2d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_4_5_12_13(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- ld [%g1 + 0x0c], %f3 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f4 ! FGM
- fmuls %f1, M4, %f8 ! FGM Group
- fmuls %f0, M1, %f5 ! FGM Group
- fmuls %f1, M5, %f9 ! FGM Group f4 available
- fmuls %f3, M12, %f12 ! FGM Group
- fmuls %f3, M13, %f13 ! FGM Group f8 available
- fadds %f4, %f8, %f4 ! FGA
- fadds %f5, %f9, %f5 ! FGA Group stall, f5, f9 available
- fadds %f4, %f12, %f4 ! FGA Group 2 cycle stall, f4, f12, f13 avail
- st %f4, [%g2 + 0x00] ! LSU
- fadds %f5, %f13, %f5 ! FGA Group f5 available
- st %f5, [%g2 + 0x04] ! LSU
- st %f2, [%g2 + 0x08] ! LSU Group
- st %f3, [%g2 + 0x0c] ! LSU Group
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_2d_no_rot
- _mesa_sparc_transform_points4_2d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_4_5_12_13(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0
- ld [%g1 + 0x04], %f1
- ld [%g1 + 0x08], %f2
- ld [%g1 + 0x0c], %f3
- add %o1, 1, %o1
- add %g1, %o5, %g1
- fmuls %f0, M0, %f4
- fmuls %f3, M12, %f8
- fmuls %f1, M5, %f5
- fmuls %f3, M13, %f9
- fadds %f4, %f8, %f4
- st %f4, [%g2 + 0x00]
- fadds %f5, %f9, %f5
- st %f5, [%g2 + 0x04]
- st %f2, [%g2 + 0x08]
- st %f3, [%g2 + 0x0c]
- cmp %o1, %g3
- bne 1b
- add %g2, 0x10, %g2
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_3d
- _mesa_sparc_transform_points4_3d:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- ld [%g1 + 0x0c], %f3 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f4 ! FGM
- fmuls %f1, M4, %f7 ! FGM Group
- fmuls %f0, M1, %f5 ! FGM Group
- fmuls %f1, M5, %f8 ! FGM Group
- fmuls %f0, M2, %f6 ! FGM Group f4 available
- fmuls %f1, M6, %f9 ! FGM Group f7 available
- fadds %f4, %f7, %f4 ! FGA
- fmuls %f2, M8, %f10 ! FGM Group f5 available
- fmuls %f2, M9, %f11 ! FGM Group f8 available
- fadds %f5, %f8, %f5 ! FGA
- fmuls %f2, M10, %f12 ! FGM Group f6 available
- fmuls %f3, M12, %f13 ! FGM Group f9, f4 available
- fadds %f6, %f9, %f6 ! FGA
- fmuls %f3, M13, %f14 ! FGM Group f10 available
- fadds %f4, %f10, %f4 ! FGA
- fmuls %f3, M14, %f15 ! FGM Group f11, f5 available
- fadds %f5, %f11, %f5 ! FGA
- fadds %f6, %f12, %f6 ! FGA Group stall, f12, f13, f6 available
- fadds %f4, %f13, %f4 ! FGA Group f14, f4 available
- st %f4, [%g2 + 0x00] ! LSU
- fadds %f5, %f14, %f5 ! FGA Group f15, f5 available
- st %f5, [%g2 + 0x04] ! LSU
- fadds %f6, %f15, %f6 ! FGA Group f6 available
- st %f6, [%g2 + 0x08] ! LSU
- st %f3, [%g2 + 0x0c] ! LSU Group
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_3d_no_rot
- _mesa_sparc_transform_points4_3d_no_rot:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_10_12_13_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- ld [%g1 + 0x0c], %f3 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f4 ! FGM
- fmuls %f3, M12, %f7 ! FGM Group
- fmuls %f1, M5, %f5 ! FGM Group
- fmuls %f3, M13, %f8 ! FGM Group
- fmuls %f2, M10, %f6 ! FGM Group f4 available
- fmuls %f3, M14, %f9 ! FGM Group f7 available
- fadds %f4, %f7, %f4 ! FGA
- st %f4, [%g2 + 0x00] ! LSU
- fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
- st %f5, [%g2 + 0x04] ! LSU
- fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
- st %f6, [%g2 + 0x08] ! LSU
- st %f3, [%g2 + 0x0c] ! LSU Group
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
-
- .globl _mesa_sparc_transform_points4_perspective
- _mesa_sparc_transform_points4_perspective:
- ld [%o2 + V4F_STRIDE], %o5
- LDPTR [%o2 + V4F_START], %g1
- LDPTR [%o0 + V4F_START], %g2
- ld [%o2 + V4F_COUNT], %g3
-
- LDMATRIX_0_5_8_9_10_14(%o1)
-
- cmp %g3, 0
- st %g3, [%o0 + V4F_COUNT]
- be 2f
- clr %o1
-
- 1: ld [%g1 + 0x00], %f0 ! LSU Group
- ld [%g1 + 0x04], %f1 ! LSU Group
- ld [%g1 + 0x08], %f2 ! LSU Group
- ld [%g1 + 0x0c], %f3 ! LSU Group
- add %o1, 1, %o1 ! IEU0
- add %g1, %o5, %g1 ! IEU1
- fmuls %f0, M0, %f4 ! FGM
- fmuls %f2, M8, %f7 ! FGM Group
- fmuls %f1, M5, %f5 ! FGM Group
- fmuls %f2, M9, %f8 ! FGM Group
- fmuls %f2, M10, %f6 ! FGM Group f4 available
- fmuls %f3, M14, %f9 ! FGM Group f7 available
- fadds %f4, %f7, %f4 ! FGA
- st %f4, [%g2 + 0x00] ! LSU
- fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available
- st %f5, [%g2 + 0x04] ! LSU
- fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available
- st %f6, [%g2 + 0x08] ! LSU
- fnegs %f2, %f7 ! FGA Group
- st %f7, [%g2 + 0x0c] ! LSU
- cmp %o1, %g3 ! IEU1
- bne 1b ! CTI
- add %g2, 0x10, %g2 ! IEU0 Group
- 2:
- ba __set_v4f_4
- nop
|