1848b8605Smrg 2848b8605Smrg /* TODO 3848b8605Smrg * 4848b8605Smrg * 1) It would be nice if load/store double could be used 5848b8605Smrg * at least for the matrix parts. I think for the matrices 6848b8605Smrg * it is safe, but for the vertices it probably is not due to 7848b8605Smrg * things like glInterleavedArrays etc. 8848b8605Smrg * 9848b8605Smrg * UPDATE: Trying this now in sparc_matrix.h -DaveM_990624 10848b8605Smrg * 11848b8605Smrg * 2) One extremely slick trick would be if we could enclose 12848b8605Smrg * groups of xform calls on the same vertices such that 13848b8605Smrg * we just load the matrix into f16-->f31 before the calls 14848b8605Smrg * and then we would not have to do them here. This may be 15848b8605Smrg * tricky and not much of a gain though. 16848b8605Smrg */ 17848b8605Smrg 18848b8605Smrg#include "sparc_matrix.h" 19848b8605Smrg 20848b8605Smrg#if defined(SVR4) || defined(__SVR4) || defined(__svr4__) || defined(__arch64__) 21848b8605Smrg /* Solaris requires this for 64-bit. */ 22848b8605Smrg .register %g2, #scratch 23848b8605Smrg .register %g3, #scratch 24848b8605Smrg#endif 25848b8605Smrg 26848b8605Smrg .text 27848b8605Smrg .align 64 28848b8605Smrg 29848b8605Smrg__set_v4f_1: 30848b8605Smrg ld [%o0 + V4F_FLAGS], %g2 31848b8605Smrg mov 1, %g1 32848b8605Smrg st %g1, [%o0 + V4F_SIZE] 33848b8605Smrg or %g2, VEC_SIZE_1, %g2 34848b8605Smrg retl 35848b8605Smrg st %g2, [%o0 + V4F_FLAGS] 36848b8605Smrg__set_v4f_2: 37848b8605Smrg ld [%o0 + V4F_FLAGS], %g2 38848b8605Smrg mov 2, %g1 39848b8605Smrg st %g1, [%o0 + V4F_SIZE] 40848b8605Smrg or %g2, VEC_SIZE_2, %g2 41848b8605Smrg retl 42848b8605Smrg st %g2, [%o0 + V4F_FLAGS] 43848b8605Smrg__set_v4f_3: 44848b8605Smrg ld [%o0 + V4F_FLAGS], %g2 45848b8605Smrg mov 3, %g1 46848b8605Smrg st %g1, [%o0 + V4F_SIZE] 47848b8605Smrg or %g2, VEC_SIZE_3, %g2 48848b8605Smrg retl 49848b8605Smrg st %g2, [%o0 + V4F_FLAGS] 50848b8605Smrg__set_v4f_4: 51848b8605Smrg ld [%o0 + V4F_FLAGS], %g2 52848b8605Smrg mov 4, %g1 53848b8605Smrg st %g1, [%o0 + V4F_SIZE] 54848b8605Smrg or %g2, VEC_SIZE_4, %g2 55848b8605Smrg retl 56848b8605Smrg st %g2, [%o0 + V4F_FLAGS] 57848b8605Smrg 58848b8605Smrg /* First the raw versions. */ 59848b8605Smrg 60848b8605Smrg .globl _mesa_sparc_transform_points1_general 61848b8605Smrg_mesa_sparc_transform_points1_general: 62848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 63848b8605Smrg LDPTR [%o2 + V4F_START], %g1 64848b8605Smrg LDPTR [%o0 + V4F_START], %g2 65848b8605Smrg ld [%o2 + V4F_COUNT], %g3 66848b8605Smrg 67848b8605Smrg LDMATRIX_0_1_2_3_12_13_14_15(%o1) 68848b8605Smrg 69848b8605Smrg cmp %g3, 1 70848b8605Smrg st %g3, [%o0 + V4F_COUNT] 71848b8605Smrg bl 3f 72848b8605Smrg clr %o1 73848b8605Smrg 74848b8605Smrg be 2f 75848b8605Smrg andn %g3, 1, %o2 76848b8605Smrg 77848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 78848b8605Smrg add %g1, %o5, %g1 ! IEU0 79848b8605Smrg ld [%g1 + 0x00], %f8 ! LSU Group 80848b8605Smrg add %o1, 2, %o1 ! IEU0 81848b8605Smrg add %g1, %o5, %g1 ! IEU1 82848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0 83848b8605Smrg fmuls %f0, M1, %f2 ! FGM Group 84848b8605Smrg fmuls %f0, M2, %f3 ! FGM Group 85848b8605Smrg fmuls %f0, M3, %f4 ! FGM Group 86848b8605Smrg fmuls %f8, M0, %f9 ! FGM Group f1 available 87848b8605Smrg fadds %f1, M12, %f1 ! FGA 88848b8605Smrg st %f1, [%g2 + 0x00] ! LSU 89848b8605Smrg fmuls %f8, M1, %f10 ! FGM Group f2 available 90848b8605Smrg fadds %f2, M13, %f2 ! FGA 91848b8605Smrg st %f2, [%g2 + 0x04] ! LSU 92848b8605Smrg fmuls %f8, M2, %f11 ! FGM Group f3 available 93848b8605Smrg fadds %f3, M14, %f3 ! FGA 94848b8605Smrg st %f3, [%g2 + 0x08] ! LSU 95848b8605Smrg fmuls %f8, M3, %f12 ! FGM Group f4 available 96848b8605Smrg fadds %f4, M15, %f4 ! FGA 97848b8605Smrg st %f4, [%g2 + 0x0c] ! LSU 98848b8605Smrg fadds %f9, M12, %f9 ! FGA Group f9 available 99848b8605Smrg st %f9, [%g2 + 0x10] ! LSU 100848b8605Smrg fadds %f10, M13, %f10 ! FGA Group f10 available 101848b8605Smrg st %f10, [%g2 + 0x14] ! LSU 102848b8605Smrg fadds %f11, M14, %f11 ! FGA Group f11 available 103848b8605Smrg st %f11, [%g2 + 0x18] ! LSU 104848b8605Smrg fadds %f12, M15, %f12 ! FGA Group f12 available 105848b8605Smrg st %f12, [%g2 + 0x1c] ! LSU 106848b8605Smrg cmp %o1, %o2 ! IEU1 107848b8605Smrg bne 1b ! CTI 108848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 109848b8605Smrg 110848b8605Smrg cmp %o1, %g3 111848b8605Smrg be 3f 112848b8605Smrg nop 113848b8605Smrg 114848b8605Smrg2: ld [%g1 + 0x00], %f0 ! LSU Group 115848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 1-cycle stall on %f0 116848b8605Smrg fmuls %f0, M1, %f2 ! FGM Group 117848b8605Smrg fmuls %f0, M2, %f3 ! FGM Group 118848b8605Smrg fmuls %f0, M3, %f4 ! FGM Group 119848b8605Smrg fadds %f1, M12, %f1 ! FGA Group 120848b8605Smrg st %f1, [%g2 + 0x00] ! LSU 121848b8605Smrg fadds %f2, M13, %f2 ! FGA Group 122848b8605Smrg st %f2, [%g2 + 0x04] ! LSU 123848b8605Smrg fadds %f3, M14, %f3 ! FGA Group 124848b8605Smrg st %f3, [%g2 + 0x08] ! LSU 125848b8605Smrg fadds %f4, M15, %f4 ! FGA Group 126848b8605Smrg st %f4, [%g2 + 0x0c] ! LSU 127848b8605Smrg 128848b8605Smrg3: 129848b8605Smrg ba __set_v4f_4 130848b8605Smrg nop 131848b8605Smrg 132848b8605Smrg .globl _mesa_sparc_transform_points1_identity 133848b8605Smrg_mesa_sparc_transform_points1_identity: 134848b8605Smrg cmp %o0, %o2 135848b8605Smrg be 4f 136848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 137848b8605Smrg LDPTR [%o2 + V4F_START], %g1 138848b8605Smrg LDPTR [%o0 + V4F_START], %g2 139848b8605Smrg ld [%o2 + V4F_COUNT], %g3 140848b8605Smrg 141848b8605Smrg cmp %g3, 1 142848b8605Smrg st %g3, [%o0 + V4F_COUNT] 143848b8605Smrg bl 3f 144848b8605Smrg clr %o1 145848b8605Smrg 146848b8605Smrg be 2f 147848b8605Smrg andn %g3, 1, %o2 148848b8605Smrg 149848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 150848b8605Smrg add %g1, %o5, %g1 ! IEU0 151848b8605Smrg ld [%g1 + 0x00], %f1 ! LSU Group 152848b8605Smrg add %o1, 2, %o1 ! IEU0 153848b8605Smrg add %g1, %o5, %g1 ! IEU1 154848b8605Smrg st %f0, [%g2 + 0x00] ! LSU Group 155848b8605Smrg cmp %o1, %o2 ! IEU1 156848b8605Smrg st %f1, [%g2 + 0x10] ! LSU Group 157848b8605Smrg bne 1b ! CTI 158848b8605Smrg add %g2, 0x20, %g2 ! IEU0 159848b8605Smrg 160848b8605Smrg cmp %o1, %g3 161848b8605Smrg be 3f 162848b8605Smrg nop 163848b8605Smrg 164848b8605Smrg2: ld [%g1 + 0x00], %f0 165848b8605Smrg addx %g0, %g0, %g0 166848b8605Smrg st %f0, [%g2 + 0x00] 167848b8605Smrg 168848b8605Smrg3: 169848b8605Smrg ba __set_v4f_1 170848b8605Smrg nop 171848b8605Smrg 172848b8605Smrg4: retl 173848b8605Smrg nop 174848b8605Smrg 175848b8605Smrg .globl _mesa_sparc_transform_points1_2d 176848b8605Smrg_mesa_sparc_transform_points1_2d: 177848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 178848b8605Smrg LDPTR [%o2 + V4F_START], %g1 179848b8605Smrg LDPTR [%o0 + V4F_START], %g2 180848b8605Smrg ld [%o2 + V4F_COUNT], %g3 181848b8605Smrg 182848b8605Smrg LDMATRIX_0_1_12_13(%o1) 183848b8605Smrg 184848b8605Smrg cmp %g3, 1 185848b8605Smrg st %g3, [%o0 + V4F_COUNT] 186848b8605Smrg bl 3f 187848b8605Smrg clr %o1 188848b8605Smrg 189848b8605Smrg be 2f 190848b8605Smrg andn %g3, 1, %o2 191848b8605Smrg 192848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 193848b8605Smrg add %g1, %o5, %g1 ! IEU0 194848b8605Smrg ld [%g1 + 0x00], %f8 ! LSU Group 195848b8605Smrg add %o1, 2, %o1 ! IEU0 196848b8605Smrg add %g1, %o5, %g1 ! IEU1 197848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 198848b8605Smrg fmuls %f0, M1, %f2 ! FGM Group 199848b8605Smrg fmuls %f8, M0, %f9 ! FGM Group 200848b8605Smrg fmuls %f8, M1, %f10 ! FGM Group 201848b8605Smrg fadds %f1, M12, %f3 ! FGA Group f1 available 202848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 203848b8605Smrg fadds %f2, M13, %f4 ! FGA Group f2 available 204848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 205848b8605Smrg fadds %f9, M12, %f11 ! FGA Group f9 available 206848b8605Smrg st %f11, [%g2 + 0x10] ! LSU 207848b8605Smrg fadds %f10, M13, %f12 ! FGA Group f10 available 208848b8605Smrg st %f12, [%g2 + 0x14] ! LSU 209848b8605Smrg cmp %o1, %o2 ! IEU1 210848b8605Smrg bne 1b ! CTI 211848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 212848b8605Smrg 213848b8605Smrg cmp %o1, %g3 214848b8605Smrg be 3f 215848b8605Smrg nop 216848b8605Smrg 217848b8605Smrg2: ld [%g1 + 0x00], %f0 218848b8605Smrg fmuls %f0, M0, %f1 219848b8605Smrg fmuls %f0, M1, %f2 220848b8605Smrg fadds %f1, M12, %f3 221848b8605Smrg st %f3, [%g2 + 0x00] 222848b8605Smrg fadds %f2, M13, %f4 223848b8605Smrg st %f4, [%g2 + 0x04] 224848b8605Smrg 225848b8605Smrg3: 226848b8605Smrg ba __set_v4f_2 227848b8605Smrg nop 228848b8605Smrg 229848b8605Smrg .globl _mesa_sparc_transform_points1_2d_no_rot 230848b8605Smrg_mesa_sparc_transform_points1_2d_no_rot: 231848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 232848b8605Smrg LDPTR [%o2 + V4F_START], %g1 233848b8605Smrg LDPTR [%o0 + V4F_START], %g2 234848b8605Smrg ld [%o2 + V4F_COUNT], %g3 235848b8605Smrg 236848b8605Smrg LDMATRIX_0_12_13(%o1) 237848b8605Smrg 238848b8605Smrg cmp %g3, 1 239848b8605Smrg st %g3, [%o0 + V4F_COUNT] 240848b8605Smrg bl 3f 241848b8605Smrg clr %o1 242848b8605Smrg 243848b8605Smrg be 2f 244848b8605Smrg andn %g3, 1, %o2 245848b8605Smrg 246848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 247848b8605Smrg add %g1, %o5, %g1 ! IEU0 248848b8605Smrg ld [%g1 + 0x00], %f4 ! LSU Group 249848b8605Smrg add %o1, 2, %o1 ! IEU0 250848b8605Smrg add %g1, %o5, %g1 ! IEU1 251848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 252848b8605Smrg fmuls %f4, M0, %f5 ! FGM Group 253848b8605Smrg fadds %f1, M12, %f3 ! FGA Group, 2 cycle stall, f1 available 254848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 255848b8605Smrg st M13, [%g2 + 0x04] ! LSU Group, f5 available 256848b8605Smrg fadds %f5, M12, %f6 ! FGA 257848b8605Smrg st %f6, [%g2 + 0x10] ! LSU Group 258848b8605Smrg st M13, [%g2 + 0x14] ! LSU Group 259848b8605Smrg cmp %o1, %o2 ! IEU1 260848b8605Smrg bne 1b ! CTI 261848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 262848b8605Smrg 263848b8605Smrg cmp %o1, %g3 264848b8605Smrg be 3f 265848b8605Smrg nop 266848b8605Smrg 267848b8605Smrg2: ld [%g1 + 0x00], %f0 268848b8605Smrg fmuls %f0, M0, %f1 269848b8605Smrg fadds %f1, M12, %f3 270848b8605Smrg st %f3, [%g2 + 0x00] 271848b8605Smrg st M13, [%g2 + 0x04] 272848b8605Smrg 273848b8605Smrg3: 274848b8605Smrg ba __set_v4f_2 275848b8605Smrg nop 276848b8605Smrg 277848b8605Smrg .globl _mesa_sparc_transform_points1_3d 278848b8605Smrg_mesa_sparc_transform_points1_3d: 279848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 280848b8605Smrg LDPTR [%o2 + V4F_START], %g1 281848b8605Smrg LDPTR [%o0 + V4F_START], %g2 282848b8605Smrg ld [%o2 + V4F_COUNT], %g3 283848b8605Smrg 284848b8605Smrg LDMATRIX_0_1_2_12_13_14(%o1) 285848b8605Smrg 286848b8605Smrg cmp %g3, 1 287848b8605Smrg st %g3, [%o0 + V4F_COUNT] 288848b8605Smrg bl 3f 289848b8605Smrg clr %o1 290848b8605Smrg 291848b8605Smrg be 2f 292848b8605Smrg andn %g3, 1, %o2 293848b8605Smrg 294848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 295848b8605Smrg add %g1, %o5, %g1 ! IEU0 296848b8605Smrg ld [%g1 + 0x00], %f4 ! LSU Group 297848b8605Smrg add %o1, 2, %o1 ! IEU0 298848b8605Smrg add %g1, %o5, %g1 ! IEU1 299848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 300848b8605Smrg fmuls %f0, M1, %f2 ! FGM Group 301848b8605Smrg fmuls %f0, M2, %f3 ! FGM Group 302848b8605Smrg fmuls %f4, M0, %f5 ! FGM Group 303848b8605Smrg fadds %f1, M12, %f1 ! FGA Group, f1 available 304848b8605Smrg st %f1, [%g2 + 0x00] ! LSU 305848b8605Smrg fmuls %f4, M1, %f6 ! FGM 306848b8605Smrg fadds %f2, M13, %f2 ! FGA Group, f2 available 307848b8605Smrg st %f2, [%g2 + 0x04] ! LSU 308848b8605Smrg fmuls %f4, M2, %f7 ! FGM 309848b8605Smrg fadds %f3, M14, %f3 ! FGA Group, f3 available 310848b8605Smrg st %f3, [%g2 + 0x08] ! LSU 311848b8605Smrg fadds %f5, M12, %f5 ! FGA Group, f5 available 312848b8605Smrg st %f5, [%g2 + 0x10] ! LSU 313848b8605Smrg fadds %f6, M13, %f6 ! FGA Group, f6 available 314848b8605Smrg st %f6, [%g2 + 0x14] ! LSU 315848b8605Smrg fadds %f7, M14, %f7 ! FGA Group, f7 available 316848b8605Smrg st %f7, [%g2 + 0x18] ! LSU 317848b8605Smrg cmp %o1, %o2 ! IEU1 318848b8605Smrg bne 1b ! CTI 319848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 320848b8605Smrg 321848b8605Smrg cmp %o1, %g3 322848b8605Smrg be 3f 323848b8605Smrg nop 324848b8605Smrg 325848b8605Smrg2: ld [%g1 + 0x00], %f0 326848b8605Smrg fmuls %f0, M0, %f1 327848b8605Smrg fmuls %f0, M1, %f2 328848b8605Smrg fmuls %f0, M2, %f3 329848b8605Smrg fadds %f1, M12, %f1 330848b8605Smrg st %f1, [%g2 + 0x00] 331848b8605Smrg fadds %f2, M13, %f2 332848b8605Smrg st %f2, [%g2 + 0x04] 333848b8605Smrg fadds %f3, M14, %f3 334848b8605Smrg st %f3, [%g2 + 0x08] 335848b8605Smrg 336848b8605Smrg3: 337848b8605Smrg ba __set_v4f_3 338848b8605Smrg nop 339848b8605Smrg 340848b8605Smrg .globl _mesa_sparc_transform_points1_3d_no_rot 341848b8605Smrg_mesa_sparc_transform_points1_3d_no_rot: 342848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 343848b8605Smrg LDPTR [%o2 + V4F_START], %g1 344848b8605Smrg LDPTR [%o0 + V4F_START], %g2 345848b8605Smrg ld [%o2 + V4F_COUNT], %g3 346848b8605Smrg 347848b8605Smrg LDMATRIX_0_12_13_14(%o1) 348848b8605Smrg 349848b8605Smrg cmp %g3, 1 350848b8605Smrg st %g3, [%o0 + V4F_COUNT] 351848b8605Smrg bl 3f 352848b8605Smrg clr %o1 353848b8605Smrg 354848b8605Smrg be 2f 355848b8605Smrg andn %g3, 1, %o2 356848b8605Smrg 357848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 358848b8605Smrg add %g1, %o5, %g1 ! IEU0 359848b8605Smrg ld [%g1 + 0x00], %f2 ! LSU Group 360848b8605Smrg add %o1, 2, %o1 ! IEU0 361848b8605Smrg add %g1, %o5, %g1 ! IEU1 362848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 363848b8605Smrg fmuls %f2, M0, %f3 ! FGM Group 364848b8605Smrg fadds %f1, M12, %f1 ! FGA Group, 2 cycle stall, f1 available 365848b8605Smrg st %f1, [%g2 + 0x00] ! LSU 366848b8605Smrg fadds %f3, M12, %f3 ! FGA Group, f3 available 367848b8605Smrg st M13, [%g2 + 0x04] ! LSU 368848b8605Smrg st M14, [%g2 + 0x08] ! LSU Group 369848b8605Smrg st %f3, [%g2 + 0x10] ! LSU Group 370848b8605Smrg st M13, [%g2 + 0x14] ! LSU Group 371848b8605Smrg st M14, [%g2 + 0x18] ! LSU Group 372848b8605Smrg cmp %o1, %o2 ! IEU1 373848b8605Smrg bne 1b ! CTI 374848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 375848b8605Smrg 376848b8605Smrg cmp %o1, %g3 377848b8605Smrg be 3f 378848b8605Smrg nop 379848b8605Smrg 380848b8605Smrg2: ld [%g1 + 0x00], %f0 381848b8605Smrg fmuls %f0, M0, %f1 382848b8605Smrg fadds %f1, M12, %f1 383848b8605Smrg st %f1, [%g2 + 0x00] 384848b8605Smrg st M13, [%g2 + 0x04] 385848b8605Smrg st M14, [%g2 + 0x08] 386848b8605Smrg 387848b8605Smrg3: 388848b8605Smrg ba __set_v4f_3 389848b8605Smrg nop 390848b8605Smrg 391848b8605Smrg .globl _mesa_sparc_transform_points1_perspective 392848b8605Smrg_mesa_sparc_transform_points1_perspective: 393848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 394848b8605Smrg LDPTR [%o2 + V4F_START], %g1 395848b8605Smrg LDPTR [%o0 + V4F_START], %g2 396848b8605Smrg ld [%o2 + V4F_COUNT], %g3 397848b8605Smrg 398848b8605Smrg LDMATRIX_0_14(%o1) 399848b8605Smrg 400848b8605Smrg cmp %g3, 1 401848b8605Smrg st %g3, [%o0 + V4F_COUNT] 402848b8605Smrg bl 3f 403848b8605Smrg clr %o1 404848b8605Smrg 405848b8605Smrg be 2f 406848b8605Smrg andn %g3, 1, %o2 407848b8605Smrg 408848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 409848b8605Smrg add %g1, %o5, %g1 ! IEU0 410848b8605Smrg ld [%g1 + 0x00], %f2 ! LSU Group 411848b8605Smrg add %o1, 2, %o1 ! IEU0 412848b8605Smrg add %g1, %o5, %g1 ! IEU1 413848b8605Smrg fmuls %f0, M0, %f1 ! FGM Group 414848b8605Smrg st %f1, [%g2 + 0x00] ! LSU 415848b8605Smrg fmuls %f2, M0, %f3 ! FGM Group 416848b8605Smrg st %g0, [%g2 + 0x04] ! LSU 417848b8605Smrg st M14, [%g2 + 0x08] ! LSU Group 418848b8605Smrg st %g0, [%g2 + 0x0c] ! LSU Group 419848b8605Smrg st %f3, [%g2 + 0x10] ! LSU Group 420848b8605Smrg st %g0, [%g2 + 0x14] ! LSU Group 421848b8605Smrg st M14, [%g2 + 0x18] ! LSU Group 422848b8605Smrg st %g0, [%g2 + 0x1c] ! LSU Group 423848b8605Smrg cmp %o1, %o2 ! IEU1 424848b8605Smrg bne 1b ! CTI 425848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 426848b8605Smrg 427848b8605Smrg cmp %o1, %g3 428848b8605Smrg be 3f 429848b8605Smrg nop 430848b8605Smrg 431848b8605Smrg2: ld [%g1 + 0x00], %f0 432848b8605Smrg fmuls %f0, M0, %f1 433848b8605Smrg st %f1, [%g2 + 0x00] 434848b8605Smrg st %g0, [%g2 + 0x04] 435848b8605Smrg st M14, [%g2 + 0x08] 436848b8605Smrg st %g0, [%g2 + 0x0c] 437848b8605Smrg 438848b8605Smrg3: 439848b8605Smrg ba __set_v4f_4 440848b8605Smrg nop 441848b8605Smrg 442848b8605Smrg .globl _mesa_sparc_transform_points2_general 443848b8605Smrg_mesa_sparc_transform_points2_general: 444848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 445848b8605Smrg LDPTR [%o2 + V4F_START], %g1 446848b8605Smrg LDPTR [%o0 + V4F_START], %g2 447848b8605Smrg ld [%o2 + V4F_COUNT], %g3 448848b8605Smrg 449848b8605Smrg LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1) 450848b8605Smrg 451848b8605Smrg cmp %g3, 0 452848b8605Smrg st %g3, [%o0 + V4F_COUNT] 453848b8605Smrg be 2f 454848b8605Smrg clr %o1 455848b8605Smrg 456848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 457848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 458848b8605Smrg add %o1, 1, %o1 ! IEU0 459848b8605Smrg add %g1, %o5, %g1 ! IEU1 460848b8605Smrg fmuls %f0, M0, %f2 ! FGM Group 461848b8605Smrg fmuls %f0, M1, %f3 ! FGM Group 462848b8605Smrg fmuls %f0, M2, %f4 ! FGM Group 463848b8605Smrg fmuls %f0, M3, %f5 ! FGM Group 464848b8605Smrg fadds %f2, M12, %f2 ! FGA Group f2 available 465848b8605Smrg fmuls %f1, M4, %f6 ! FGM 466848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 467848b8605Smrg fmuls %f1, M5, %f7 ! FGM 468848b8605Smrg fadds %f4, M14, %f4 ! FGA Group f4 available 469848b8605Smrg fmuls %f1, M6, %f8 ! FGM 470848b8605Smrg fadds %f5, M15, %f5 ! FGA Group f5 available 471848b8605Smrg fmuls %f1, M7, %f9 ! FGM 472848b8605Smrg fadds %f2, %f6, %f2 ! FGA Group f6 available 473848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 474848b8605Smrg fadds %f3, %f7, %f3 ! FGA Group f7 available 475848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 476848b8605Smrg fadds %f4, %f8, %f4 ! FGA Group f8 available 477848b8605Smrg st %f4, [%g2 + 0x08] ! LSU 478848b8605Smrg fadds %f5, %f9, %f5 ! FGA Group f9 available 479848b8605Smrg st %f5, [%g2 + 0x0c] ! LSU 480848b8605Smrg cmp %o1, %g3 ! IEU1 481848b8605Smrg bne 1b ! CTI 482848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 483848b8605Smrg2: 484848b8605Smrg ba __set_v4f_4 485848b8605Smrg nop 486848b8605Smrg 487848b8605Smrg .globl _mesa_sparc_transform_points2_identity 488848b8605Smrg_mesa_sparc_transform_points2_identity: 489848b8605Smrg cmp %o2, %o0 490848b8605Smrg be 3f 491848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 492848b8605Smrg LDPTR [%o2 + V4F_START], %g1 493848b8605Smrg LDPTR [%o0 + V4F_START], %g2 494848b8605Smrg ld [%o2 + V4F_COUNT], %g3 495848b8605Smrg 496848b8605Smrg cmp %g3, 0 497848b8605Smrg st %g3, [%o0 + V4F_COUNT] 498848b8605Smrg be 2f 499848b8605Smrg clr %o1 500848b8605Smrg 501848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 502848b8605Smrg add %o1, 1, %o1 ! IEU0 503848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 504848b8605Smrg add %g1, %o5, %g1 ! IEU0 505848b8605Smrg cmp %o1, %g3 ! IEU1 506848b8605Smrg st %f0, [%g2 + 0x00] ! LSU Group 507848b8605Smrg st %f1, [%g2 + 0x04] ! LSU Group 508848b8605Smrg bne 1b ! CTI 509848b8605Smrg add %g2, 0x10, %g2 ! IEU0 510848b8605Smrg2: 511848b8605Smrg ba __set_v4f_2 512848b8605Smrg nop 513848b8605Smrg 514848b8605Smrg3: retl 515848b8605Smrg nop 516848b8605Smrg 517848b8605Smrg .globl _mesa_sparc_transform_points2_2d 518848b8605Smrg_mesa_sparc_transform_points2_2d: 519848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 520848b8605Smrg LDPTR [%o2 + V4F_START], %g1 521848b8605Smrg LDPTR [%o0 + V4F_START], %g2 522848b8605Smrg ld [%o2 + V4F_COUNT], %g3 523848b8605Smrg 524848b8605Smrg LDMATRIX_0_1_4_5_12_13(%o1) 525848b8605Smrg 526848b8605Smrg cmp %g3, 1 527848b8605Smrg st %g3, [%o0 + V4F_COUNT] 528848b8605Smrg bl 3f 529848b8605Smrg clr %o1 530848b8605Smrg 531848b8605Smrg be 2f 532848b8605Smrg andn %g3, 1, %o2 533848b8605Smrg 534848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 535848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 536848b8605Smrg add %o1, 2, %o1 ! IEU0 537848b8605Smrg add %g1, %o5, %g1 ! IEU1 538848b8605Smrg fmuls %f0, M0, %f2 ! FGM 539848b8605Smrg ld [%g1 + 0x00], %f8 ! LSU Group 540848b8605Smrg fmuls %f0, M1, %f3 ! FGM 541848b8605Smrg ld [%g1 + 0x04], %f9 ! LSU Group 542848b8605Smrg fmuls %f1, M4, %f6 ! FGM 543848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group 544848b8605Smrg add %g1, %o5, %g1 ! IEU0 545848b8605Smrg fmuls %f8, M0, %f10 ! FGM Group f2 available 546848b8605Smrg fadds %f2, M12, %f2 ! FGA 547848b8605Smrg fmuls %f8, M1, %f11 ! FGM Group f3 available 548848b8605Smrg fadds %f3, M13, %f3 ! FGA 549848b8605Smrg fmuls %f9, M4, %f12 ! FGM Group 550848b8605Smrg fmuls %f9, M5, %f13 ! FGM Group 551848b8605Smrg fadds %f10, M12, %f10 ! FGA Group f2, f10 available 552848b8605Smrg fadds %f2, %f6, %f2 ! FGA Group f3, f11 available 553848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 554848b8605Smrg fadds %f11, M13, %f11 ! FGA Group f12 available 555848b8605Smrg fadds %f3, %f7, %f3 ! FGA Group f13 available 556848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 557848b8605Smrg fadds %f10, %f12, %f10 ! FGA Group f10 available 558848b8605Smrg st %f10, [%g2 + 0x10] ! LSU 559848b8605Smrg fadds %f11, %f13, %f11 ! FGA Group f11 available 560848b8605Smrg st %f11, [%g2 + 0x14] ! LSU 561848b8605Smrg cmp %o1, %o2 ! IEU1 562848b8605Smrg bne 1b ! CTI 563848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 564848b8605Smrg 565848b8605Smrg cmp %o1, %g3 566848b8605Smrg be 3f 567848b8605Smrg nop 568848b8605Smrg 569848b8605Smrg2: ld [%g1 + 0x00], %f0 ! LSU Group 570848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 571848b8605Smrg fmuls %f0, M0, %f2 ! FGM Group 572848b8605Smrg fmuls %f0, M1, %f3 ! FGM Group 573848b8605Smrg fmuls %f1, M4, %f6 ! FGM Group 574848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group 575848b8605Smrg fadds %f2, M12, %f2 ! FGA Group f2 available 576848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 577848b8605Smrg fadds %f2, %f6, %f2 ! FGA Group 2 cycle stall, f2 available 578848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 579848b8605Smrg fadds %f3, %f7, %f3 ! FGA Group f3 available 580848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 581848b8605Smrg 582848b8605Smrg3: 583848b8605Smrg ba __set_v4f_2 584848b8605Smrg nop 585848b8605Smrg 586848b8605Smrg .globl _mesa_sparc_transform_points2_2d_no_rot 587848b8605Smrg_mesa_sparc_transform_points2_2d_no_rot: 588848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 589848b8605Smrg LDPTR [%o2 + V4F_START], %g1 590848b8605Smrg LDPTR [%o0 + V4F_START], %g2 591848b8605Smrg ld [%o2 + V4F_COUNT], %g3 592848b8605Smrg 593848b8605Smrg LDMATRIX_0_5_12_13(%o1) 594848b8605Smrg 595848b8605Smrg cmp %g3, 1 596848b8605Smrg st %g3, [%o0 + V4F_COUNT] 597848b8605Smrg bl 3f 598848b8605Smrg clr %o1 599848b8605Smrg 600848b8605Smrg be 2f 601848b8605Smrg andn %g3, 1, %o2 602848b8605Smrg 603848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 604848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 605848b8605Smrg add %o1, 2, %o1 ! IEU0 606848b8605Smrg add %g1, %o5, %g1 ! IEU1 607848b8605Smrg ld [%g1 + 0x00], %f4 ! LSU Group 608848b8605Smrg fmuls %f0, M0, %f2 ! FGM 609848b8605Smrg ld [%g1 + 0x04], %f5 ! LSU Group 610848b8605Smrg fmuls %f1, M5, %f3 ! FGM 611848b8605Smrg fmuls %f4, M0, %f6 ! FGM Group 612848b8605Smrg add %g1, %o5, %g1 ! IEU0 613848b8605Smrg fmuls %f5, M5, %f7 ! FGM Group 614848b8605Smrg fadds %f2, M12, %f2 ! FGA Group f2 available 615848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 616848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 617848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 618848b8605Smrg fadds %f6, M12, %f6 ! FGA Group f6 available 619848b8605Smrg st %f6, [%g2 + 0x10] ! LSU 620848b8605Smrg fadds %f7, M13, %f7 ! FGA Group f7 available 621848b8605Smrg st %f7, [%g2 + 0x14] ! LSU 622848b8605Smrg cmp %o1, %o2 ! IEU1 623848b8605Smrg bne 1b ! CTI 624848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 625848b8605Smrg 626848b8605Smrg cmp %o1, %g3 627848b8605Smrg be 3f 628848b8605Smrg nop 629848b8605Smrg 630848b8605Smrg2: ld [%g1 + 0x00], %f0 ! LSU Group 631848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 632848b8605Smrg fmuls %f0, M0, %f2 ! FGM Group 633848b8605Smrg fmuls %f1, M5, %f3 ! FGM Group 634848b8605Smrg fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available 635848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 636848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 637848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 638848b8605Smrg 639848b8605Smrg3: 640848b8605Smrg ba __set_v4f_2 641848b8605Smrg nop 642848b8605Smrg 643848b8605Smrg /* orig: 12 cycles */ 644848b8605Smrg .globl _mesa_sparc_transform_points2_3d 645848b8605Smrg_mesa_sparc_transform_points2_3d: 646848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 647848b8605Smrg ld [%o2 + V4F_START], %g1 648848b8605Smrg ld [%o0 + V4F_START], %g2 649848b8605Smrg ld [%o2 + V4F_COUNT], %g3 650848b8605Smrg 651848b8605Smrg LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1) 652848b8605Smrg 653848b8605Smrg cmp %g3, 1 654848b8605Smrg st %g3, [%o0 + V4F_COUNT] 655848b8605Smrg bl 3f 656848b8605Smrg clr %o1 657848b8605Smrg 658848b8605Smrg be 2f 659848b8605Smrg andn %g3, 1, %o2 660848b8605Smrg 661848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 662848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 663848b8605Smrg add %o1, 2, %o1 ! IEU0 664848b8605Smrg add %g1, %o5, %g1 ! IEU1 665848b8605Smrg ld [%g1 + 0x00], %f9 ! LSU Group 666848b8605Smrg fmuls %f0, M0, %f2 ! FGM 667848b8605Smrg ld [%g1 + 0x04], %f10 ! LSU Group 668848b8605Smrg fmuls %f0, M1, %f3 ! FGM 669848b8605Smrg fmuls %f0, M2, %f4 ! FGM Group 670848b8605Smrg add %g1, %o5, %g1 ! IEU0 671848b8605Smrg fmuls %f1, M4, %f6 ! FGM Group 672848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group f2 available 673848b8605Smrg fadds %f2, M12, %f2 ! FGA 674848b8605Smrg fmuls %f1, M6, %f8 ! FGM Group f3 available 675848b8605Smrg fadds %f3, M13, %f3 ! FGA 676848b8605Smrg fmuls %f9, M0, %f11 ! FGM Group f4 available 677848b8605Smrg fadds %f4, M14, %f4 ! FGA 678848b8605Smrg fmuls %f9, M1, %f12 ! FGM Group f6 available 679848b8605Smrg fmuls %f9, M2, %f13 ! FGM Group f2, f7 available 680848b8605Smrg fadds %f2, %f6, %f2 ! FGA 681848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 682848b8605Smrg fmuls %f10, M4, %f14 ! FGM Group f3, f8 available 683848b8605Smrg fadds %f3, %f7, %f3 ! FGA 684848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 685848b8605Smrg fmuls %f10, M5, %f15 ! FGM Group f4, f11 available 686848b8605Smrg fadds %f11, M12, %f11 ! FGA 687848b8605Smrg fmuls %f10, M6, %f0 ! FGM Group f12 available 688848b8605Smrg fadds %f12, M13, %f12 ! FGA 689848b8605Smrg fadds %f13, M14, %f13 ! FGA Group f13 available 690848b8605Smrg fadds %f4, %f8, %f4 ! FGA Group f14 available 691848b8605Smrg st %f4, [%g2 + 0x08] ! LSU 692848b8605Smrg fadds %f11, %f14, %f11 ! FGA Group f15, f11 available 693848b8605Smrg st %f11, [%g2 + 0x10] ! LSU 694848b8605Smrg fadds %f12, %f15, %f12 ! FGA Group f0, f12 available 695848b8605Smrg st %f12, [%g2 + 0x14] ! LSU 696848b8605Smrg fadds %f13, %f0, %f13 ! FGA Group f13 available 697848b8605Smrg st %f13, [%g2 + 0x18] ! LSU 698848b8605Smrg 699848b8605Smrg cmp %o1, %o2 ! IEU1 700848b8605Smrg bne 1b ! CTI 701848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 702848b8605Smrg 703848b8605Smrg cmp %o1, %g3 704848b8605Smrg be 3f 705848b8605Smrg nop 706848b8605Smrg 707848b8605Smrg2: ld [%g1 + 0x00], %f0 ! LSU Group 708848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 709848b8605Smrg fmuls %f0, M0, %f2 ! FGM Group 710848b8605Smrg fmuls %f0, M1, %f3 ! FGM Group 711848b8605Smrg fmuls %f0, M2, %f4 ! FGM Group 712848b8605Smrg fmuls %f1, M4, %f6 ! FGM Group 713848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group f2 available 714848b8605Smrg fadds %f2, M12, %f2 ! FGA 715848b8605Smrg fmuls %f1, M6, %f8 ! FGM Group f3 available 716848b8605Smrg fadds %f3, M13, %f3 ! FGA 717848b8605Smrg fadds %f4, M14, %f4 ! FGA Group f4 available 718848b8605Smrg fadds %f2, %f6, %f2 ! FGA Group stall, f2, f6, f7 available 719848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 720848b8605Smrg fadds %f3, %f7, %f3 ! FGA Group f3, f8 available 721848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 722848b8605Smrg fadds %f4, %f8, %f4 ! FGA Group f4 available 723848b8605Smrg st %f4, [%g2 + 0x08] ! LSU 724848b8605Smrg 725848b8605Smrg3: 726848b8605Smrg ba __set_v4f_3 727848b8605Smrg nop 728848b8605Smrg 729848b8605Smrg .globl _mesa_sparc_transform_points2_3d_no_rot 730848b8605Smrg_mesa_sparc_transform_points2_3d_no_rot: 731848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 732848b8605Smrg LDPTR [%o2 + V4F_START], %g1 733848b8605Smrg LDPTR [%o0 + V4F_START], %g2 734848b8605Smrg ld [%o2 + V4F_COUNT], %g3 735848b8605Smrg 736848b8605Smrg LDMATRIX_0_5_12_13_14(%o1) 737848b8605Smrg 738848b8605Smrg cmp %g3, 1 739848b8605Smrg st %g3, [%o0 + V4F_COUNT] 740848b8605Smrg bl 3f 741848b8605Smrg clr %o3 742848b8605Smrg 743848b8605Smrg be 2f 744848b8605Smrg andn %g3, 1, %o2 745848b8605Smrg 746848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 747848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 748848b8605Smrg add %o3, 2, %o3 ! IEU0 749848b8605Smrg add %g1, %o5, %g1 ! IEU1 750848b8605Smrg ld [%g1 + 0x00], %f4 ! LSU Group 751848b8605Smrg fmuls %f0, M0, %f2 ! FGM 752848b8605Smrg ld [%g1 + 0x04], %f5 ! LSU Group 753848b8605Smrg fmuls %f1, M5, %f3 ! FGM 754848b8605Smrg fmuls %f4, M0, %f6 ! FGM Group 755848b8605Smrg add %g1, %o5, %g1 ! IEU0 756848b8605Smrg fmuls %f5, M5, %f7 ! FGM Group 757848b8605Smrg fadds %f2, M12, %f2 ! FGA Group f2 available 758848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 759848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 760848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 761848b8605Smrg fadds %f6, M12, %f6 ! FGA Group f6 available 762848b8605Smrg st M14, [%g2 + 0x08] ! LSU 763848b8605Smrg fadds %f7, M13, %f7 ! FGA Group f7 available 764848b8605Smrg st %f6, [%g2 + 0x10] ! LSU 765848b8605Smrg st %f7, [%g2 + 0x14] ! LSU Group 766848b8605Smrg st M14, [%g2 + 0x18] ! LSU Group 767848b8605Smrg cmp %o3, %o2 ! IEU1 768848b8605Smrg bne 1b ! CTI 769848b8605Smrg add %g2, 0x20, %g2 ! IEU0 Group 770848b8605Smrg 771848b8605Smrg cmp %o3, %g3 772848b8605Smrg be 3f 773848b8605Smrg nop 774848b8605Smrg 775848b8605Smrg2: ld [%g1 + 0x00], %f0 ! LSU Group 776848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 777848b8605Smrg fmuls %f0, M0, %f2 ! FGM Group 778848b8605Smrg fmuls %f1, M5, %f3 ! FGM Group 779848b8605Smrg fadds %f2, M12, %f2 ! FGA Group, 2 cycle stall, f2 available 780848b8605Smrg st %f2, [%g2 + 0x00] ! LSU 781848b8605Smrg fadds %f3, M13, %f3 ! FGA Group f3 available 782848b8605Smrg st %f3, [%g2 + 0x04] ! LSU 783848b8605Smrg st M14, [%g2 + 0x08] ! LSU Group 784848b8605Smrg 785848b8605Smrg3: ld [%o1 + (14 * 0x4)], %g3 786848b8605Smrg cmp %g3, 0 787848b8605Smrg bne __set_v4f_3 788848b8605Smrg nop 789848b8605Smrg ba __set_v4f_2 790848b8605Smrg nop 791848b8605Smrg 792848b8605Smrg .globl _mesa_sparc_transform_points2_perspective 793848b8605Smrg_mesa_sparc_transform_points2_perspective: 794848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 795848b8605Smrg LDPTR [%o2 + V4F_START], %g1 796848b8605Smrg LDPTR [%o0 + V4F_START], %g2 797848b8605Smrg ld [%o2 + V4F_COUNT], %g3 798848b8605Smrg 799848b8605Smrg LDMATRIX_0_5_14(%o1) 800848b8605Smrg 801848b8605Smrg cmp %g3, 0 802848b8605Smrg st %g3, [%o0 + V4F_COUNT] 803848b8605Smrg be 2f 804848b8605Smrg clr %o1 805848b8605Smrg 806848b8605Smrg1: ld [%g1 + 0x00], %f0 807848b8605Smrg ld [%g1 + 0x04], %f1 808848b8605Smrg add %o1, 1, %o1 809848b8605Smrg add %g1, %o5, %g1 810848b8605Smrg fmuls %f0, M0, %f2 811848b8605Smrg st %f2, [%g2 + 0x00] 812848b8605Smrg fmuls %f1, M5, %f3 813848b8605Smrg st %f3, [%g2 + 0x04] 814848b8605Smrg st M14, [%g2 + 0x08] 815848b8605Smrg st %g0, [%g2 + 0x0c] 816848b8605Smrg cmp %o1, %g3 817848b8605Smrg bne 1b 818848b8605Smrg add %g2, 0x10, %g2 819848b8605Smrg2: 820848b8605Smrg ba __set_v4f_4 821848b8605Smrg nop 822848b8605Smrg 823848b8605Smrg .globl _mesa_sparc_transform_points3_general 824848b8605Smrg_mesa_sparc_transform_points3_general: 825848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 826848b8605Smrg LDPTR [%o2 + V4F_START], %g1 827848b8605Smrg LDPTR [%o0 + V4F_START], %g2 828848b8605Smrg ld [%o2 + V4F_COUNT], %g3 829848b8605Smrg 830848b8605Smrg LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1) 831848b8605Smrg 832848b8605Smrg cmp %g3, 0 833848b8605Smrg st %g3, [%o0 + V4F_COUNT] 834848b8605Smrg be 2f 835848b8605Smrg clr %o1 836848b8605Smrg 837848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 838848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 839848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 840848b8605Smrg add %o1, 1, %o1 ! IEU0 841848b8605Smrg add %g1, %o5, %g1 ! IEU1 842848b8605Smrg fmuls %f0, M0, %f3 ! FGM 843848b8605Smrg fmuls %f1, M4, %f7 ! FGM Group 844848b8605Smrg fmuls %f0, M1, %f4 ! FGM Group 845848b8605Smrg fmuls %f1, M5, %f8 ! FGM Group 846848b8605Smrg fmuls %f0, M2, %f5 ! FGM Group f3 available 847848b8605Smrg fmuls %f1, M6, %f9 ! FGM Group f7 available 848848b8605Smrg fadds %f3, %f7, %f3 ! FGA 849848b8605Smrg fmuls %f0, M3, %f6 ! FGM Group f4 available 850848b8605Smrg fmuls %f1, M7, %f10 ! FGM Group f8 available 851848b8605Smrg fadds %f4, %f8, %f4 ! FGA 852848b8605Smrg fmuls %f2, M8, %f7 ! FGM Group f5 available 853848b8605Smrg fmuls %f2, M9, %f8 ! FGM Group f9,f3 available 854848b8605Smrg fadds %f5, %f9, %f5 ! FGA 855848b8605Smrg fmuls %f2, M10, %f9 ! FGM Group f6 available 856848b8605Smrg fadds %f6, %f10, %f6 ! FGA Group f10,f4 available 857848b8605Smrg fmuls %f2, M11, %f10 ! FGM 858848b8605Smrg fadds %f3, M12, %f3 ! FGA Group f7 available 859848b8605Smrg fadds %f4, M13, %f4 ! FGA Group f8,f5 available 860848b8605Smrg fadds %f5, M14, %f5 ! FGA Group f9 available 861848b8605Smrg fadds %f6, M15, %f6 ! FGA Group f10,f6 available 862848b8605Smrg fadds %f3, %f7, %f3 ! FGA Group f3 available 863848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 864848b8605Smrg fadds %f4, %f8, %f4 ! FGA Group f4 available 865848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 866848b8605Smrg fadds %f5, %f9, %f5 ! FGA Group f5 available 867848b8605Smrg st %f5, [%g2 + 0x08] ! LSU 868848b8605Smrg fadds %f6, %f10, %f6 ! FGA Group f6 available 869848b8605Smrg st %f6, [%g2 + 0x0c] ! LSU 870848b8605Smrg cmp %o1, %g3 ! IEU1 871848b8605Smrg bne 1b ! CTI 872848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 873848b8605Smrg2: 874848b8605Smrg ba __set_v4f_4 875848b8605Smrg nop 876848b8605Smrg 877848b8605Smrg .globl _mesa_sparc_transform_points3_identity 878848b8605Smrg_mesa_sparc_transform_points3_identity: 879848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 880848b8605Smrg LDPTR [%o2 + V4F_START], %g1 881848b8605Smrg LDPTR [%o0 + V4F_START], %g2 882848b8605Smrg ld [%o2 + V4F_COUNT], %g3 883848b8605Smrg 884848b8605Smrg cmp %g3, 0 885848b8605Smrg st %g3, [%o0 + V4F_COUNT] 886848b8605Smrg be 2f 887848b8605Smrg clr %o1 888848b8605Smrg 889848b8605Smrg1: ld [%g1 + 0x00], %f0 890848b8605Smrg ld [%g1 + 0x04], %f1 891848b8605Smrg ld [%g1 + 0x08], %f2 892848b8605Smrg add %o1, 1, %o1 893848b8605Smrg add %g1, %o5, %g1 894848b8605Smrg cmp %o1, %g3 895848b8605Smrg st %f0, [%g2 + 0x00] 896848b8605Smrg st %f1, [%g2 + 0x04] 897848b8605Smrg st %f2, [%g2 + 0x08] 898848b8605Smrg bne 1b 899848b8605Smrg add %g2, 0x10, %g2 900848b8605Smrg2: 901848b8605Smrg ba __set_v4f_3 902848b8605Smrg nop 903848b8605Smrg 904848b8605Smrg .globl _mesa_sparc_transform_points3_2d 905848b8605Smrg_mesa_sparc_transform_points3_2d: 906848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 907848b8605Smrg LDPTR [%o2 + V4F_START], %g1 908848b8605Smrg LDPTR [%o0 + V4F_START], %g2 909848b8605Smrg ld [%o2 + V4F_COUNT], %g3 910848b8605Smrg 911848b8605Smrg LDMATRIX_0_1_4_5_12_13(%o1) 912848b8605Smrg 913848b8605Smrg cmp %g3, 0 914848b8605Smrg st %g3, [%o0 + V4F_COUNT] 915848b8605Smrg be 2f 916848b8605Smrg clr %o1 917848b8605Smrg 918848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 919848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 920848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 921848b8605Smrg add %o1, 1, %o1 ! IEU0 922848b8605Smrg add %g1, %o5, %g1 ! IEU1 923848b8605Smrg fmuls %f0, M0, %f3 ! FGM 924848b8605Smrg fmuls %f0, M1, %f4 ! FGM Group 925848b8605Smrg fmuls %f1, M4, %f6 ! FGM Group 926848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group 927848b8605Smrg fadds %f3, M12, %f3 ! FGA Group f3 available 928848b8605Smrg fadds %f4, M13, %f4 ! FGA Group f4 available 929848b8605Smrg fadds %f3, %f6, %f3 ! FGA Group f6 available 930848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 931848b8605Smrg fadds %f4, %f7, %f4 ! FGA Group f7 available 932848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 933848b8605Smrg st %f2, [%g2 + 0x08] ! LSU Group 934848b8605Smrg cmp %o1, %g3 ! IEU1 935848b8605Smrg bne 1b ! CTI 936848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 937848b8605Smrg2: 938848b8605Smrg ba __set_v4f_3 939848b8605Smrg nop 940848b8605Smrg 941848b8605Smrg .globl _mesa_sparc_transform_points3_2d_no_rot 942848b8605Smrg_mesa_sparc_transform_points3_2d_no_rot: 943848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 944848b8605Smrg LDPTR [%o2 + V4F_START], %g1 945848b8605Smrg LDPTR [%o0 + V4F_START], %g2 946848b8605Smrg ld [%o2 + V4F_COUNT], %g3 947848b8605Smrg 948848b8605Smrg LDMATRIX_0_5_12_13(%o1) 949848b8605Smrg 950848b8605Smrg cmp %g3, 0 951848b8605Smrg st %g3, [%o0 + V4F_COUNT] 952848b8605Smrg be 2f 953848b8605Smrg clr %o1 954848b8605Smrg 955848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 956848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 957848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 958848b8605Smrg add %o1, 1, %o1 ! IEU0 959848b8605Smrg add %g1, %o5, %g1 ! IEU1 960848b8605Smrg fmuls %f0, M0, %f3 ! FGM 961848b8605Smrg fmuls %f1, M5, %f4 ! FGM Group 962848b8605Smrg st %f2, [%g2 + 0x08] ! LSU 963848b8605Smrg fadds %f3, M12, %f3 ! FGA Group 964848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 965848b8605Smrg fadds %f4, M13, %f4 ! FGA Group 966848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 967848b8605Smrg cmp %o1, %g3 ! IEU1 968848b8605Smrg bne 1b ! CTI 969848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 970848b8605Smrg2: 971848b8605Smrg ba __set_v4f_3 972848b8605Smrg nop 973848b8605Smrg 974848b8605Smrg .globl _mesa_sparc_transform_points3_3d 975848b8605Smrg_mesa_sparc_transform_points3_3d: 976848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 977848b8605Smrg LDPTR [%o2 + V4F_START], %g1 978848b8605Smrg LDPTR [%o0 + V4F_START], %g2 979848b8605Smrg ld [%o2 + V4F_COUNT], %g3 980848b8605Smrg 981848b8605Smrg LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1) 982848b8605Smrg 983848b8605Smrg cmp %g3, 0 984848b8605Smrg st %g3, [%o0 + V4F_COUNT] 985848b8605Smrg be 2f 986848b8605Smrg clr %o1 987848b8605Smrg 988848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 989848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 990848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 991848b8605Smrg add %o1, 1, %o1 ! IEU0 992848b8605Smrg add %g1, %o5, %g1 ! IEU1 993848b8605Smrg fmuls %f0, M0, %f3 ! FGM 994848b8605Smrg fmuls %f1, M4, %f6 ! FGM Group 995848b8605Smrg fmuls %f0, M1, %f4 ! FGM Group 996848b8605Smrg fmuls %f1, M5, %f7 ! FGM Group 997848b8605Smrg fmuls %f0, M2, %f5 ! FGM Group f3 available 998848b8605Smrg fmuls %f1, M6, %f8 ! FGM Group f6 available 999848b8605Smrg fadds %f3, %f6, %f3 ! FGA 1000848b8605Smrg fmuls %f2, M8, %f9 ! FGM Group f4 available 1001848b8605Smrg fmuls %f2, M9, %f10 ! FGM Group f7 available 1002848b8605Smrg fadds %f4, %f7, %f4 ! FGA 1003848b8605Smrg fmuls %f2, M10, %f11 ! FGM Group f5 available 1004848b8605Smrg fadds %f5, %f8, %f5 ! FGA Group f8, f3 available 1005848b8605Smrg fadds %f3, %f9, %f3 ! FGA Group f9 available 1006848b8605Smrg fadds %f4, %f10, %f4 ! FGA Group f10, f4 available 1007848b8605Smrg fadds %f5, %f11, %f5 ! FGA Group stall, f11, f5 available 1008848b8605Smrg fadds %f3, M12, %f3 ! FGA Group f3 available 1009848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 1010848b8605Smrg fadds %f4, M13, %f4 ! FGA Group f4 available 1011848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 1012848b8605Smrg fadds %f5, M14, %f5 ! FGA Group f5 available 1013848b8605Smrg st %f5, [%g2 + 0x08] ! LSU 1014848b8605Smrg cmp %o1, %g3 ! IEU1 1015848b8605Smrg bne 1b ! CTI 1016848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1017848b8605Smrg2: 1018848b8605Smrg ba __set_v4f_3 1019848b8605Smrg nop 1020848b8605Smrg 1021848b8605Smrg .globl _mesa_sparc_transform_points3_3d_no_rot 1022848b8605Smrg_mesa_sparc_transform_points3_3d_no_rot: 1023848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1024848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1025848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1026848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1027848b8605Smrg 1028848b8605Smrg LDMATRIX_0_5_10_12_13_14(%o1) 1029848b8605Smrg 1030848b8605Smrg cmp %g3, 0 1031848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1032848b8605Smrg be 2f 1033848b8605Smrg clr %o1 1034848b8605Smrg 1035848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1036848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1037848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1038848b8605Smrg add %o1, 1, %o1 ! IEU0 1039848b8605Smrg add %g1, %o5, %g1 ! IEU1 1040848b8605Smrg cmp %o1, %g3 ! IEU1 Group 1041848b8605Smrg fmuls %f0, M0, %f3 ! FGM 1042848b8605Smrg fmuls %f1, M5, %f4 ! FGM Group 1043848b8605Smrg fmuls %f2, M10, %f5 ! FGM Group 1044848b8605Smrg fadds %f3, M12, %f3 ! FGA Group, stall, f3 available 1045848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 1046848b8605Smrg fadds %f4, M13, %f4 ! FGA Group, f4 available 1047848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 1048848b8605Smrg fadds %f5, M14, %f5 ! FGA Group, f5 available 1049848b8605Smrg st %f5, [%g2 + 0x08] ! LEU 1050848b8605Smrg bne 1b ! CTI 1051848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1052848b8605Smrg2: 1053848b8605Smrg ba __set_v4f_3 1054848b8605Smrg nop 1055848b8605Smrg 1056848b8605Smrg .globl _mesa_sparc_transform_points3_perspective 1057848b8605Smrg_mesa_sparc_transform_points3_perspective: 1058848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1059848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1060848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1061848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1062848b8605Smrg 1063848b8605Smrg LDMATRIX_0_5_8_9_10_14(%o1) 1064848b8605Smrg 1065848b8605Smrg cmp %g3, 0 1066848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1067848b8605Smrg be 2f 1068848b8605Smrg clr %o1 1069848b8605Smrg 1070848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1071848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1072848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1073848b8605Smrg add %o1, 1, %o1 ! IEU0 1074848b8605Smrg add %g1, %o5, %g1 ! IEU1 1075848b8605Smrg fmuls %f0, M0, %f3 ! FGM 1076848b8605Smrg fmuls %f2, M8, %f6 ! FGM Group 1077848b8605Smrg fmuls %f1, M5, %f4 ! FGM Group 1078848b8605Smrg fmuls %f2, M9, %f7 ! FGM Group 1079848b8605Smrg fmuls %f2, M10, %f5 ! FGM Group f3 available 1080848b8605Smrg fadds %f3, %f6, %f3 ! FGA Group f6 available 1081848b8605Smrg st %f3, [%g2 + 0x00] ! LSU 1082848b8605Smrg fadds %f4, %f7, %f4 ! FGA Group stall, f4, f7 available 1083848b8605Smrg st %f4, [%g2 + 0x04] ! LSU 1084848b8605Smrg fadds %f5, M14, %f5 ! FGA Group 1085848b8605Smrg st %f5, [%g2 + 0x08] ! LSU 1086848b8605Smrg fnegs %f2, %f6 ! FGA Group 1087848b8605Smrg st %f6, [%g2 + 0x0c] ! LSU 1088848b8605Smrg cmp %o1, %g3 ! IEU1 1089848b8605Smrg bne 1b ! CTI 1090848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1091848b8605Smrg2: 1092848b8605Smrg ba __set_v4f_4 1093848b8605Smrg nop 1094848b8605Smrg 1095848b8605Smrg .globl _mesa_sparc_transform_points4_general 1096848b8605Smrg_mesa_sparc_transform_points4_general: 1097848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1098848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1099848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1100848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1101848b8605Smrg 1102848b8605Smrg LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1) 1103848b8605Smrg 1104848b8605Smrg cmp %g3, 0 1105848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1106848b8605Smrg be 2f 1107848b8605Smrg clr %o1 1108848b8605Smrg 1109848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1110848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1111848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1112848b8605Smrg ld [%g1 + 0x0c], %f3 ! LSU Group 1113848b8605Smrg add %o1, 1, %o1 ! IEU0 1114848b8605Smrg add %g1, %o5, %g1 ! IEU1 1115848b8605Smrg fmuls %f0, M0, %f4 ! FGM Group 1116848b8605Smrg fmuls %f1, M4, %f8 ! FGM Group 1117848b8605Smrg fmuls %f0, M1, %f5 ! FGM Group 1118848b8605Smrg fmuls %f1, M5, %f9 ! FGM Group 1119848b8605Smrg fmuls %f0, M2, %f6 ! FGM Group f4 available 1120848b8605Smrg fmuls %f1, M6, %f10 ! FGM Group f8 available 1121848b8605Smrg fadds %f4, %f8, %f4 ! FGA 1122848b8605Smrg fmuls %f0, M3, %f7 ! FGM Group f5 available 1123848b8605Smrg fmuls %f1, M7, %f11 ! FGM Group f9 available 1124848b8605Smrg fadds %f5, %f9, %f5 ! FGA 1125848b8605Smrg fmuls %f2, M8, %f12 ! FGM Group f6 available 1126848b8605Smrg fmuls %f2, M9, %f13 ! FGM Group f10, f4 available 1127848b8605Smrg fadds %f6, %f10, %f6 ! FGA 1128848b8605Smrg fmuls %f2, M10, %f14 ! FGM Group f7 available 1129848b8605Smrg fmuls %f2, M11, %f15 ! FGM Group f11, f5 available 1130848b8605Smrg fadds %f7, %f11, %f7 ! FGA 1131848b8605Smrg fmuls %f3, M12, %f8 ! FGM Group f12 available 1132848b8605Smrg fadds %f4, %f12, %f4 ! FGA 1133848b8605Smrg fmuls %f3, M13, %f9 ! FGM Group f13, f6 available 1134848b8605Smrg fadds %f5, %f13, %f5 ! FGA 1135848b8605Smrg fmuls %f3, M14, %f10 ! FGM Group f14 available 1136848b8605Smrg fadds %f6, %f14, %f6 ! FGA 1137848b8605Smrg fmuls %f3, M15, %f11 ! FGM Group f15, f7 available 1138848b8605Smrg fadds %f7, %f15, %f7 ! FGA 1139848b8605Smrg fadds %f4, %f8, %f4 ! FGA Group f8, f4 available 1140848b8605Smrg st %f4, [%g2 + 0x00] ! LSU 1141848b8605Smrg fadds %f5, %f9, %f5 ! FGA Group f9, f5 available 1142848b8605Smrg st %f5, [%g2 + 0x04] ! LSU 1143848b8605Smrg fadds %f6, %f10, %f6 ! FGA Group f10, f6 available 1144848b8605Smrg st %f6, [%g2 + 0x08] ! LSU 1145848b8605Smrg fadds %f7, %f11, %f7 ! FGA Group f11, f7 available 1146848b8605Smrg st %f7, [%g2 + 0x0c] ! LSU 1147848b8605Smrg cmp %o1, %g3 ! IEU1 1148848b8605Smrg bne 1b ! CTI 1149848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1150848b8605Smrg2: 1151848b8605Smrg ba __set_v4f_4 1152848b8605Smrg nop 1153848b8605Smrg 1154848b8605Smrg .globl _mesa_sparc_transform_points4_identity 1155848b8605Smrg_mesa_sparc_transform_points4_identity: 1156848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1157848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1158848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1159848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1160848b8605Smrg 1161848b8605Smrg cmp %g3, 0 1162848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1163848b8605Smrg be 2f 1164848b8605Smrg clr %o1 1165848b8605Smrg 1166848b8605Smrg1: ld [%g1 + 0x00], %f0 1167848b8605Smrg ld [%g1 + 0x04], %f1 1168848b8605Smrg ld [%g1 + 0x08], %f2 1169848b8605Smrg add %o1, 1, %o1 1170848b8605Smrg ld [%g1 + 0x0c], %f3 1171848b8605Smrg add %g1, %o5, %g1 1172848b8605Smrg st %f0, [%g2 + 0x00] 1173848b8605Smrg st %f1, [%g2 + 0x04] 1174848b8605Smrg st %f2, [%g2 + 0x08] 1175848b8605Smrg cmp %o1, %g3 1176848b8605Smrg st %f3, [%g2 + 0x0c] 1177848b8605Smrg bne 1b 1178848b8605Smrg add %g2, 0x10, %g2 1179848b8605Smrg2: 1180848b8605Smrg ba __set_v4f_4 1181848b8605Smrg nop 1182848b8605Smrg 1183848b8605Smrg .globl _mesa_sparc_transform_points4_2d 1184848b8605Smrg_mesa_sparc_transform_points4_2d: 1185848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1186848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1187848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1188848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1189848b8605Smrg 1190848b8605Smrg LDMATRIX_0_1_4_5_12_13(%o1) 1191848b8605Smrg 1192848b8605Smrg cmp %g3, 0 1193848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1194848b8605Smrg be 2f 1195848b8605Smrg clr %o1 1196848b8605Smrg 1197848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1198848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1199848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1200848b8605Smrg ld [%g1 + 0x0c], %f3 ! LSU Group 1201848b8605Smrg add %o1, 1, %o1 ! IEU0 1202848b8605Smrg add %g1, %o5, %g1 ! IEU1 1203848b8605Smrg fmuls %f0, M0, %f4 ! FGM 1204848b8605Smrg fmuls %f1, M4, %f8 ! FGM Group 1205848b8605Smrg fmuls %f0, M1, %f5 ! FGM Group 1206848b8605Smrg fmuls %f1, M5, %f9 ! FGM Group f4 available 1207848b8605Smrg fmuls %f3, M12, %f12 ! FGM Group 1208848b8605Smrg fmuls %f3, M13, %f13 ! FGM Group f8 available 1209848b8605Smrg fadds %f4, %f8, %f4 ! FGA 1210848b8605Smrg fadds %f5, %f9, %f5 ! FGA Group stall, f5, f9 available 1211848b8605Smrg fadds %f4, %f12, %f4 ! FGA Group 2 cycle stall, f4, f12, f13 avail 1212848b8605Smrg st %f4, [%g2 + 0x00] ! LSU 1213848b8605Smrg fadds %f5, %f13, %f5 ! FGA Group f5 available 1214848b8605Smrg st %f5, [%g2 + 0x04] ! LSU 1215848b8605Smrg st %f2, [%g2 + 0x08] ! LSU Group 1216848b8605Smrg st %f3, [%g2 + 0x0c] ! LSU Group 1217848b8605Smrg cmp %o1, %g3 ! IEU1 1218848b8605Smrg bne 1b ! CTI 1219848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1220848b8605Smrg2: 1221848b8605Smrg ba __set_v4f_4 1222848b8605Smrg nop 1223848b8605Smrg 1224848b8605Smrg .globl _mesa_sparc_transform_points4_2d_no_rot 1225848b8605Smrg_mesa_sparc_transform_points4_2d_no_rot: 1226848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1227848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1228848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1229848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1230848b8605Smrg 1231848b8605Smrg LDMATRIX_0_1_4_5_12_13(%o1) 1232848b8605Smrg 1233848b8605Smrg cmp %g3, 0 1234848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1235848b8605Smrg be 2f 1236848b8605Smrg clr %o1 1237848b8605Smrg 1238848b8605Smrg1: ld [%g1 + 0x00], %f0 1239848b8605Smrg ld [%g1 + 0x04], %f1 1240848b8605Smrg ld [%g1 + 0x08], %f2 1241848b8605Smrg ld [%g1 + 0x0c], %f3 1242848b8605Smrg add %o1, 1, %o1 1243848b8605Smrg add %g1, %o5, %g1 1244848b8605Smrg fmuls %f0, M0, %f4 1245848b8605Smrg fmuls %f3, M12, %f8 1246848b8605Smrg fmuls %f1, M5, %f5 1247848b8605Smrg fmuls %f3, M13, %f9 1248848b8605Smrg fadds %f4, %f8, %f4 1249848b8605Smrg st %f4, [%g2 + 0x00] 1250848b8605Smrg fadds %f5, %f9, %f5 1251848b8605Smrg st %f5, [%g2 + 0x04] 1252848b8605Smrg st %f2, [%g2 + 0x08] 1253848b8605Smrg st %f3, [%g2 + 0x0c] 1254848b8605Smrg cmp %o1, %g3 1255848b8605Smrg bne 1b 1256848b8605Smrg add %g2, 0x10, %g2 1257848b8605Smrg2: 1258848b8605Smrg ba __set_v4f_4 1259848b8605Smrg nop 1260848b8605Smrg 1261848b8605Smrg .globl _mesa_sparc_transform_points4_3d 1262848b8605Smrg_mesa_sparc_transform_points4_3d: 1263848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1264848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1265848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1266848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1267848b8605Smrg 1268848b8605Smrg LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1) 1269848b8605Smrg 1270848b8605Smrg cmp %g3, 0 1271848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1272848b8605Smrg be 2f 1273848b8605Smrg clr %o1 1274848b8605Smrg 1275848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1276848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1277848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1278848b8605Smrg ld [%g1 + 0x0c], %f3 ! LSU Group 1279848b8605Smrg add %o1, 1, %o1 ! IEU0 1280848b8605Smrg add %g1, %o5, %g1 ! IEU1 1281848b8605Smrg fmuls %f0, M0, %f4 ! FGM 1282848b8605Smrg fmuls %f1, M4, %f7 ! FGM Group 1283848b8605Smrg fmuls %f0, M1, %f5 ! FGM Group 1284848b8605Smrg fmuls %f1, M5, %f8 ! FGM Group 1285848b8605Smrg fmuls %f0, M2, %f6 ! FGM Group f4 available 1286848b8605Smrg fmuls %f1, M6, %f9 ! FGM Group f7 available 1287848b8605Smrg fadds %f4, %f7, %f4 ! FGA 1288848b8605Smrg fmuls %f2, M8, %f10 ! FGM Group f5 available 1289848b8605Smrg fmuls %f2, M9, %f11 ! FGM Group f8 available 1290848b8605Smrg fadds %f5, %f8, %f5 ! FGA 1291848b8605Smrg fmuls %f2, M10, %f12 ! FGM Group f6 available 1292848b8605Smrg fmuls %f3, M12, %f13 ! FGM Group f9, f4 available 1293848b8605Smrg fadds %f6, %f9, %f6 ! FGA 1294848b8605Smrg fmuls %f3, M13, %f14 ! FGM Group f10 available 1295848b8605Smrg fadds %f4, %f10, %f4 ! FGA 1296848b8605Smrg fmuls %f3, M14, %f15 ! FGM Group f11, f5 available 1297848b8605Smrg fadds %f5, %f11, %f5 ! FGA 1298848b8605Smrg fadds %f6, %f12, %f6 ! FGA Group stall, f12, f13, f6 available 1299848b8605Smrg fadds %f4, %f13, %f4 ! FGA Group f14, f4 available 1300848b8605Smrg st %f4, [%g2 + 0x00] ! LSU 1301848b8605Smrg fadds %f5, %f14, %f5 ! FGA Group f15, f5 available 1302848b8605Smrg st %f5, [%g2 + 0x04] ! LSU 1303848b8605Smrg fadds %f6, %f15, %f6 ! FGA Group f6 available 1304848b8605Smrg st %f6, [%g2 + 0x08] ! LSU 1305848b8605Smrg st %f3, [%g2 + 0x0c] ! LSU Group 1306848b8605Smrg cmp %o1, %g3 ! IEU1 1307848b8605Smrg bne 1b ! CTI 1308848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1309848b8605Smrg2: 1310848b8605Smrg ba __set_v4f_4 1311848b8605Smrg nop 1312848b8605Smrg 1313848b8605Smrg .globl _mesa_sparc_transform_points4_3d_no_rot 1314848b8605Smrg_mesa_sparc_transform_points4_3d_no_rot: 1315848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1316848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1317848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1318848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1319848b8605Smrg 1320848b8605Smrg LDMATRIX_0_5_10_12_13_14(%o1) 1321848b8605Smrg 1322848b8605Smrg cmp %g3, 0 1323848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1324848b8605Smrg be 2f 1325848b8605Smrg clr %o1 1326848b8605Smrg 1327848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1328848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1329848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1330848b8605Smrg ld [%g1 + 0x0c], %f3 ! LSU Group 1331848b8605Smrg add %o1, 1, %o1 ! IEU0 1332848b8605Smrg add %g1, %o5, %g1 ! IEU1 1333848b8605Smrg fmuls %f0, M0, %f4 ! FGM 1334848b8605Smrg fmuls %f3, M12, %f7 ! FGM Group 1335848b8605Smrg fmuls %f1, M5, %f5 ! FGM Group 1336848b8605Smrg fmuls %f3, M13, %f8 ! FGM Group 1337848b8605Smrg fmuls %f2, M10, %f6 ! FGM Group f4 available 1338848b8605Smrg fmuls %f3, M14, %f9 ! FGM Group f7 available 1339848b8605Smrg fadds %f4, %f7, %f4 ! FGA 1340848b8605Smrg st %f4, [%g2 + 0x00] ! LSU 1341848b8605Smrg fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available 1342848b8605Smrg st %f5, [%g2 + 0x04] ! LSU 1343848b8605Smrg fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available 1344848b8605Smrg st %f6, [%g2 + 0x08] ! LSU 1345848b8605Smrg st %f3, [%g2 + 0x0c] ! LSU Group 1346848b8605Smrg cmp %o1, %g3 ! IEU1 1347848b8605Smrg bne 1b ! CTI 1348848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1349848b8605Smrg2: 1350848b8605Smrg ba __set_v4f_4 1351848b8605Smrg nop 1352848b8605Smrg 1353848b8605Smrg .globl _mesa_sparc_transform_points4_perspective 1354848b8605Smrg_mesa_sparc_transform_points4_perspective: 1355848b8605Smrg ld [%o2 + V4F_STRIDE], %o5 1356848b8605Smrg LDPTR [%o2 + V4F_START], %g1 1357848b8605Smrg LDPTR [%o0 + V4F_START], %g2 1358848b8605Smrg ld [%o2 + V4F_COUNT], %g3 1359848b8605Smrg 1360848b8605Smrg LDMATRIX_0_5_8_9_10_14(%o1) 1361848b8605Smrg 1362848b8605Smrg cmp %g3, 0 1363848b8605Smrg st %g3, [%o0 + V4F_COUNT] 1364848b8605Smrg be 2f 1365848b8605Smrg clr %o1 1366848b8605Smrg 1367848b8605Smrg1: ld [%g1 + 0x00], %f0 ! LSU Group 1368848b8605Smrg ld [%g1 + 0x04], %f1 ! LSU Group 1369848b8605Smrg ld [%g1 + 0x08], %f2 ! LSU Group 1370848b8605Smrg ld [%g1 + 0x0c], %f3 ! LSU Group 1371848b8605Smrg add %o1, 1, %o1 ! IEU0 1372848b8605Smrg add %g1, %o5, %g1 ! IEU1 1373848b8605Smrg fmuls %f0, M0, %f4 ! FGM 1374848b8605Smrg fmuls %f2, M8, %f7 ! FGM Group 1375848b8605Smrg fmuls %f1, M5, %f5 ! FGM Group 1376848b8605Smrg fmuls %f2, M9, %f8 ! FGM Group 1377848b8605Smrg fmuls %f2, M10, %f6 ! FGM Group f4 available 1378848b8605Smrg fmuls %f3, M14, %f9 ! FGM Group f7 available 1379848b8605Smrg fadds %f4, %f7, %f4 ! FGA 1380848b8605Smrg st %f4, [%g2 + 0x00] ! LSU 1381848b8605Smrg fadds %f5, %f8, %f5 ! FGA Group stall, f5, f8 available 1382848b8605Smrg st %f5, [%g2 + 0x04] ! LSU 1383848b8605Smrg fadds %f6, %f9, %f6 ! FGA Group stall, f6, f9 available 1384848b8605Smrg st %f6, [%g2 + 0x08] ! LSU 1385848b8605Smrg fnegs %f2, %f7 ! FGA Group 1386848b8605Smrg st %f7, [%g2 + 0x0c] ! LSU 1387848b8605Smrg cmp %o1, %g3 ! IEU1 1388848b8605Smrg bne 1b ! CTI 1389848b8605Smrg add %g2, 0x10, %g2 ! IEU0 Group 1390848b8605Smrg2: 1391848b8605Smrg ba __set_v4f_4 1392848b8605Smrg nop 1393