Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1.  
  2.         /* TODO
  3.          *
  4.          * 1) It would be nice if load/store double could be used
  5.          *    at least for the matrix parts.  I think for the matrices
  6.          *    it is safe, but for the vertices it probably is not due to
  7.          *    things like glInterleavedArrays etc.
  8.          *
  9.          *    UPDATE: Trying this now in sparc_matrix.h -DaveM_990624
  10.          *
  11.          * 2) One extremely slick trick would be if we could enclose
  12.          *    groups of xform calls on the same vertices such that
  13.          *    we just load the matrix into f16-->f31 before the calls
  14.          *    and then we would not have to do them here.  This may be
  15.          *    tricky and not much of a gain though.
  16.          */
  17.  
  18. #include "sparc_matrix.h"
  19.  
  20. #if defined(SVR4) || defined(__SVR4) || defined(__svr4__) || defined(__arch64__)
  21.         /* Solaris requires this for 64-bit. */
  22.         .register %g2, #scratch
  23.         .register %g3, #scratch
  24. #endif
  25.  
  26.         .text
  27.         .align  64
  28.  
  29. __set_v4f_1:
  30.         ld      [%o0 + V4F_FLAGS], %g2
  31.         mov     1, %g1
  32.         st      %g1, [%o0 + V4F_SIZE]
  33.         or      %g2, VEC_SIZE_1, %g2
  34.         retl
  35.          st     %g2, [%o0 + V4F_FLAGS]
  36. __set_v4f_2:
  37.         ld      [%o0 + V4F_FLAGS], %g2
  38.         mov     2, %g1
  39.         st      %g1, [%o0 + V4F_SIZE]
  40.         or      %g2, VEC_SIZE_2, %g2
  41.         retl
  42.          st     %g2, [%o0 + V4F_FLAGS]
  43. __set_v4f_3:
  44.         ld      [%o0 + V4F_FLAGS], %g2
  45.         mov     3, %g1
  46.         st      %g1, [%o0 + V4F_SIZE]
  47.         or      %g2, VEC_SIZE_3, %g2
  48.         retl
  49.          st     %g2, [%o0 + V4F_FLAGS]
  50. __set_v4f_4:
  51.         ld      [%o0 + V4F_FLAGS], %g2
  52.         mov     4, %g1
  53.         st      %g1, [%o0 + V4F_SIZE]
  54.         or      %g2, VEC_SIZE_4, %g2
  55.         retl
  56.          st     %g2, [%o0 + V4F_FLAGS]
  57.  
  58.         /* First the raw versions. */
  59.  
  60.         .globl  _mesa_sparc_transform_points1_general
  61. _mesa_sparc_transform_points1_general:
  62.         ld      [%o2 + V4F_STRIDE], %o5
  63.         LDPTR   [%o2 + V4F_START], %g1
  64.         LDPTR   [%o0 + V4F_START], %g2
  65.         ld      [%o2 + V4F_COUNT], %g3
  66.  
  67.         LDMATRIX_0_1_2_3_12_13_14_15(%o1)
  68.  
  69.         cmp     %g3, 1
  70.         st      %g3, [%o0 + V4F_COUNT]
  71.         bl      3f
  72.          clr    %o1
  73.  
  74.         be      2f
  75.          andn   %g3, 1, %o2
  76.  
  77. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  78.         add     %g1, %o5, %g1           ! IEU0
  79.         ld      [%g1 + 0x00], %f8       ! LSU   Group
  80.         add     %o1, 2, %o1             ! IEU0
  81.         add     %g1, %o5, %g1           ! IEU1
  82.         fmuls   %f0, M0, %f1            ! FGM   Group   1-cycle stall on %f0
  83.         fmuls   %f0, M1, %f2            ! FGM   Group
  84.         fmuls   %f0, M2, %f3            ! FGM   Group
  85.         fmuls   %f0, M3, %f4            ! FGM   Group
  86.         fmuls   %f8, M0, %f9            ! FGM   Group   f1 available
  87.         fadds   %f1, M12, %f1           ! FGA
  88.         st      %f1, [%g2 + 0x00]       ! LSU
  89.         fmuls   %f8, M1, %f10           ! FGM   Group   f2 available
  90.         fadds   %f2, M13, %f2           ! FGA
  91.         st      %f2, [%g2 + 0x04]       ! LSU
  92.         fmuls   %f8, M2, %f11           ! FGM   Group   f3 available
  93.         fadds   %f3, M14, %f3           ! FGA
  94.         st      %f3, [%g2 + 0x08]       ! LSU
  95.         fmuls   %f8, M3, %f12           ! FGM   Group   f4 available
  96.         fadds   %f4, M15, %f4           ! FGA
  97.         st      %f4, [%g2 + 0x0c]       ! LSU
  98.         fadds   %f9, M12, %f9           ! FGA   Group   f9 available
  99.         st      %f9, [%g2 + 0x10]       ! LSU
  100.         fadds   %f10, M13, %f10         ! FGA   Group   f10 available
  101.         st      %f10, [%g2 + 0x14]      ! LSU
  102.         fadds   %f11, M14, %f11         ! FGA   Group   f11 available
  103.         st      %f11, [%g2 + 0x18]      ! LSU
  104.         fadds   %f12, M15, %f12         ! FGA   Group   f12 available
  105.         st      %f12, [%g2 + 0x1c]      ! LSU
  106.         cmp     %o1, %o2                ! IEU1
  107.         bne     1b                      ! CTI
  108.          add    %g2, 0x20, %g2          ! IEU0  Group
  109.  
  110.         cmp     %o1, %g3
  111.         be      3f
  112.          nop
  113.  
  114. 2:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  115.         fmuls   %f0, M0, %f1            ! FGM   Group   1-cycle stall on %f0
  116.         fmuls   %f0, M1, %f2            ! FGM   Group
  117.         fmuls   %f0, M2, %f3            ! FGM   Group
  118.         fmuls   %f0, M3, %f4            ! FGM   Group
  119.         fadds   %f1, M12, %f1           ! FGA   Group
  120.         st      %f1, [%g2 + 0x00]       ! LSU
  121.         fadds   %f2, M13, %f2           ! FGA   Group
  122.         st      %f2, [%g2 + 0x04]       ! LSU
  123.         fadds   %f3, M14, %f3           ! FGA   Group
  124.         st      %f3, [%g2 + 0x08]       ! LSU
  125.         fadds   %f4, M15, %f4           ! FGA   Group
  126.         st      %f4, [%g2 + 0x0c]       ! LSU
  127.  
  128. 3:
  129.         ba      __set_v4f_4
  130.          nop
  131.  
  132.         .globl  _mesa_sparc_transform_points1_identity
  133. _mesa_sparc_transform_points1_identity:
  134.         cmp     %o0, %o2
  135.         be      4f
  136.          ld     [%o2 + V4F_STRIDE], %o5
  137.         LDPTR   [%o2 + V4F_START], %g1
  138.         LDPTR   [%o0 + V4F_START], %g2
  139.         ld      [%o2 + V4F_COUNT], %g3
  140.  
  141.         cmp     %g3, 1
  142.         st      %g3, [%o0 + V4F_COUNT]
  143.         bl      3f
  144.          clr    %o1
  145.  
  146.         be      2f
  147.          andn   %g3, 1, %o2
  148.  
  149. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  150.         add     %g1, %o5, %g1           ! IEU0
  151.         ld      [%g1 + 0x00], %f1       ! LSU   Group
  152.         add     %o1, 2, %o1             ! IEU0
  153.         add     %g1, %o5, %g1           ! IEU1
  154.         st      %f0, [%g2 + 0x00]       ! LSU   Group
  155.         cmp     %o1, %o2                ! IEU1
  156.         st      %f1, [%g2 + 0x10]       ! LSU   Group
  157.         bne     1b                      ! CTI
  158.          add    %g2, 0x20, %g2          ! IEU0
  159.  
  160.         cmp     %o1, %g3
  161.         be      3f
  162.          nop
  163.  
  164. 2:      ld      [%g1 + 0x00], %f0
  165.         addx    %g0, %g0, %g0
  166.         st      %f0, [%g2 + 0x00]
  167.  
  168. 3:
  169.         ba      __set_v4f_1
  170.          nop
  171.  
  172. 4:      retl
  173.          nop
  174.  
  175.         .globl  _mesa_sparc_transform_points1_2d
  176. _mesa_sparc_transform_points1_2d:
  177.         ld      [%o2 + V4F_STRIDE], %o5
  178.         LDPTR   [%o2 + V4F_START], %g1
  179.         LDPTR   [%o0 + V4F_START], %g2
  180.         ld      [%o2 + V4F_COUNT], %g3
  181.  
  182.         LDMATRIX_0_1_12_13(%o1)
  183.  
  184.         cmp     %g3, 1
  185.         st      %g3, [%o0 + V4F_COUNT]
  186.         bl      3f
  187.          clr    %o1
  188.  
  189.         be      2f
  190.          andn   %g3, 1, %o2
  191.  
  192. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  193.         add     %g1, %o5, %g1           ! IEU0
  194.         ld      [%g1 + 0x00], %f8       ! LSU   Group
  195.         add     %o1, 2, %o1             ! IEU0
  196.         add     %g1, %o5, %g1           ! IEU1
  197.         fmuls   %f0, M0, %f1            ! FGM   Group
  198.         fmuls   %f0, M1, %f2            ! FGM   Group
  199.         fmuls   %f8, M0, %f9            ! FGM   Group
  200.         fmuls   %f8, M1, %f10           ! FGM   Group
  201.         fadds   %f1, M12, %f3           ! FGA   Group   f1 available
  202.         st      %f3, [%g2 + 0x00]       ! LSU
  203.         fadds   %f2, M13, %f4           ! FGA   Group   f2 available
  204.         st      %f4, [%g2 + 0x04]       ! LSU
  205.         fadds   %f9, M12, %f11          ! FGA   Group   f9 available
  206.         st      %f11, [%g2 + 0x10]      ! LSU
  207.         fadds   %f10, M13, %f12         ! FGA   Group   f10 available
  208.         st      %f12, [%g2 + 0x14]      ! LSU
  209.         cmp     %o1, %o2                ! IEU1
  210.         bne     1b                      ! CTI
  211.          add    %g2, 0x20, %g2          ! IEU0  Group
  212.  
  213.         cmp     %o1, %g3
  214.         be      3f
  215.          nop
  216.  
  217. 2:      ld      [%g1 + 0x00], %f0
  218.         fmuls   %f0, M0, %f1
  219.         fmuls   %f0, M1, %f2
  220.         fadds   %f1, M12, %f3
  221.         st      %f3, [%g2 + 0x00]
  222.         fadds   %f2, M13, %f4
  223.         st      %f4, [%g2 + 0x04]
  224.  
  225. 3:
  226.         ba      __set_v4f_2
  227.          nop
  228.  
  229.         .globl  _mesa_sparc_transform_points1_2d_no_rot
  230. _mesa_sparc_transform_points1_2d_no_rot:
  231.         ld      [%o2 + V4F_STRIDE], %o5
  232.         LDPTR   [%o2 + V4F_START], %g1
  233.         LDPTR   [%o0 + V4F_START], %g2
  234.         ld      [%o2 + V4F_COUNT], %g3
  235.  
  236.         LDMATRIX_0_12_13(%o1)
  237.  
  238.         cmp     %g3, 1
  239.         st      %g3, [%o0 + V4F_COUNT]
  240.         bl      3f
  241.          clr    %o1
  242.  
  243.         be      2f
  244.          andn   %g3, 1, %o2
  245.  
  246. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  247.         add     %g1, %o5, %g1           ! IEU0
  248.         ld      [%g1 + 0x00], %f4       ! LSU   Group
  249.         add     %o1, 2, %o1             ! IEU0
  250.         add     %g1, %o5, %g1           ! IEU1
  251.         fmuls   %f0, M0, %f1            ! FGM   Group
  252.         fmuls   %f4, M0, %f5            ! FGM   Group
  253.         fadds   %f1, M12, %f3           ! FGA   Group, 2 cycle stall, f1 available
  254.         st      %f3, [%g2 + 0x00]       ! LSU
  255.         st      M13, [%g2 + 0x04]       ! LSU   Group, f5 available
  256.         fadds   %f5, M12, %f6           ! FGA
  257.         st      %f6, [%g2 + 0x10]       ! LSU   Group
  258.         st      M13, [%g2 + 0x14]       ! LSU   Group
  259.         cmp     %o1, %o2                ! IEU1
  260.         bne     1b                      ! CTI
  261.          add    %g2, 0x20, %g2          ! IEU0  Group
  262.  
  263.         cmp     %o1, %g3
  264.         be      3f
  265.          nop
  266.  
  267. 2:      ld      [%g1 + 0x00], %f0
  268.         fmuls   %f0, M0, %f1
  269.         fadds   %f1, M12, %f3
  270.         st      %f3, [%g2 + 0x00]
  271.         st      M13, [%g2 + 0x04]
  272.  
  273. 3:
  274.         ba      __set_v4f_2
  275.          nop
  276.  
  277.         .globl  _mesa_sparc_transform_points1_3d
  278. _mesa_sparc_transform_points1_3d:
  279.         ld      [%o2 + V4F_STRIDE], %o5
  280.         LDPTR   [%o2 + V4F_START], %g1
  281.         LDPTR   [%o0 + V4F_START], %g2
  282.         ld      [%o2 + V4F_COUNT], %g3
  283.  
  284.         LDMATRIX_0_1_2_12_13_14(%o1)
  285.  
  286.         cmp     %g3, 1
  287.         st      %g3, [%o0 + V4F_COUNT]
  288.         bl      3f
  289.          clr    %o1
  290.  
  291.         be      2f
  292.          andn   %g3, 1, %o2
  293.  
  294. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  295.         add     %g1, %o5, %g1           ! IEU0
  296.         ld      [%g1 + 0x00], %f4       ! LSU   Group
  297.         add     %o1, 2, %o1             ! IEU0
  298.         add     %g1, %o5, %g1           ! IEU1
  299.         fmuls   %f0, M0, %f1            ! FGM   Group
  300.         fmuls   %f0, M1, %f2            ! FGM   Group
  301.         fmuls   %f0, M2, %f3            ! FGM   Group
  302.         fmuls   %f4, M0, %f5            ! FGM   Group
  303.         fadds   %f1, M12, %f1           ! FGA   Group, f1 available
  304.         st      %f1, [%g2 + 0x00]       ! LSU
  305.         fmuls   %f4, M1, %f6            ! FGM
  306.         fadds   %f2, M13, %f2           ! FGA   Group, f2 available
  307.         st      %f2, [%g2 + 0x04]       ! LSU
  308.         fmuls   %f4, M2, %f7            ! FGM
  309.         fadds   %f3, M14, %f3           ! FGA   Group, f3 available
  310.         st      %f3, [%g2 + 0x08]       ! LSU
  311.         fadds   %f5, M12, %f5           ! FGA   Group, f5 available
  312.         st      %f5, [%g2 + 0x10]       ! LSU
  313.         fadds   %f6, M13, %f6           ! FGA   Group, f6 available
  314.         st      %f6, [%g2 + 0x14]       ! LSU
  315.         fadds   %f7, M14, %f7           ! FGA   Group, f7 available
  316.         st      %f7, [%g2 + 0x18]       ! LSU
  317.         cmp     %o1, %o2                ! IEU1
  318.         bne     1b                      ! CTI
  319.          add    %g2, 0x20, %g2          ! IEU0  Group
  320.  
  321.         cmp     %o1, %g3
  322.         be      3f
  323.          nop
  324.  
  325. 2:      ld      [%g1 + 0x00], %f0
  326.         fmuls   %f0, M0, %f1
  327.         fmuls   %f0, M1, %f2
  328.         fmuls   %f0, M2, %f3
  329.         fadds   %f1, M12, %f1
  330.         st      %f1, [%g2 + 0x00]
  331.         fadds   %f2, M13, %f2
  332.         st      %f2, [%g2 + 0x04]
  333.         fadds   %f3, M14, %f3
  334.         st      %f3, [%g2 + 0x08]
  335.  
  336. 3:
  337.         ba      __set_v4f_3
  338.          nop
  339.  
  340.         .globl  _mesa_sparc_transform_points1_3d_no_rot
  341. _mesa_sparc_transform_points1_3d_no_rot:
  342.         ld      [%o2 + V4F_STRIDE], %o5
  343.         LDPTR   [%o2 + V4F_START], %g1
  344.         LDPTR   [%o0 + V4F_START], %g2
  345.         ld      [%o2 + V4F_COUNT], %g3
  346.  
  347.         LDMATRIX_0_12_13_14(%o1)
  348.  
  349.         cmp     %g3, 1
  350.         st      %g3, [%o0 + V4F_COUNT]
  351.         bl      3f
  352.          clr    %o1
  353.  
  354.         be      2f
  355.          andn   %g3, 1, %o2
  356.  
  357. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  358.         add     %g1, %o5, %g1           ! IEU0
  359.         ld      [%g1 + 0x00], %f2       ! LSU   Group
  360.         add     %o1, 2, %o1             ! IEU0
  361.         add     %g1, %o5, %g1           ! IEU1
  362.         fmuls   %f0, M0, %f1            ! FGM   Group
  363.         fmuls   %f2, M0, %f3            ! FGM   Group
  364.         fadds   %f1, M12, %f1           ! FGA   Group, 2 cycle stall, f1 available
  365.         st      %f1, [%g2 + 0x00]       ! LSU
  366.         fadds   %f3, M12, %f3           ! FGA   Group, f3 available
  367.         st      M13, [%g2 + 0x04]       ! LSU
  368.         st      M14, [%g2 + 0x08]       ! LSU   Group
  369.         st      %f3, [%g2 + 0x10]       ! LSU   Group
  370.         st      M13, [%g2 + 0x14]       ! LSU   Group
  371.         st      M14, [%g2 + 0x18]       ! LSU   Group
  372.         cmp     %o1, %o2                ! IEU1
  373.         bne     1b                      ! CTI
  374.          add    %g2, 0x20, %g2          ! IEU0  Group
  375.  
  376.         cmp     %o1, %g3
  377.         be      3f
  378.          nop
  379.  
  380. 2:      ld      [%g1 + 0x00], %f0
  381.         fmuls   %f0, M0, %f1
  382.         fadds   %f1, M12, %f1
  383.         st      %f1, [%g2 + 0x00]
  384.         st      M13, [%g2 + 0x04]
  385.         st      M14, [%g2 + 0x08]
  386.  
  387. 3:
  388.         ba      __set_v4f_3
  389.          nop
  390.  
  391.         .globl  _mesa_sparc_transform_points1_perspective
  392. _mesa_sparc_transform_points1_perspective:
  393.         ld      [%o2 + V4F_STRIDE], %o5
  394.         LDPTR   [%o2 + V4F_START], %g1
  395.         LDPTR   [%o0 + V4F_START], %g2
  396.         ld      [%o2 + V4F_COUNT], %g3
  397.  
  398.         LDMATRIX_0_14(%o1)
  399.  
  400.         cmp     %g3, 1
  401.         st      %g3, [%o0 + V4F_COUNT]
  402.         bl      3f
  403.          clr    %o1
  404.  
  405.         be      2f
  406.          andn   %g3, 1, %o2
  407.  
  408. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  409.         add     %g1, %o5, %g1           ! IEU0
  410.         ld      [%g1 + 0x00], %f2       ! LSU   Group
  411.         add     %o1, 2, %o1             ! IEU0
  412.         add     %g1, %o5, %g1           ! IEU1
  413.         fmuls   %f0, M0, %f1            ! FGM   Group
  414.         st      %f1, [%g2 + 0x00]       ! LSU
  415.         fmuls   %f2, M0, %f3            ! FGM   Group
  416.         st      %g0, [%g2 + 0x04]       ! LSU
  417.         st      M14, [%g2 + 0x08]       ! LSU   Group
  418.         st      %g0, [%g2 + 0x0c]       ! LSU   Group
  419.         st      %f3, [%g2 + 0x10]       ! LSU   Group
  420.         st      %g0, [%g2 + 0x14]       ! LSU   Group
  421.         st      M14, [%g2 + 0x18]       ! LSU   Group
  422.         st      %g0, [%g2 + 0x1c]       ! LSU   Group
  423.         cmp     %o1, %o2                ! IEU1
  424.         bne     1b                      ! CTI
  425.          add    %g2, 0x20, %g2          ! IEU0  Group
  426.  
  427.         cmp     %o1, %g3
  428.         be      3f
  429.          nop
  430.  
  431. 2:      ld      [%g1 + 0x00], %f0
  432.         fmuls   %f0, M0, %f1
  433.         st      %f1, [%g2 + 0x00]
  434.         st      %g0, [%g2 + 0x04]
  435.         st      M14, [%g2 + 0x08]
  436.         st      %g0, [%g2 + 0x0c]
  437.  
  438. 3:
  439.         ba      __set_v4f_4
  440.          nop
  441.  
  442.         .globl  _mesa_sparc_transform_points2_general
  443. _mesa_sparc_transform_points2_general:
  444.         ld      [%o2 + V4F_STRIDE], %o5
  445.         LDPTR   [%o2 + V4F_START], %g1
  446.         LDPTR   [%o0 + V4F_START], %g2
  447.         ld      [%o2 + V4F_COUNT], %g3
  448.  
  449.         LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(%o1)
  450.  
  451.         cmp     %g3, 0
  452.         st      %g3, [%o0 + V4F_COUNT]
  453.         be      2f
  454.          clr    %o1
  455.  
  456. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  457.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  458.         add     %o1, 1, %o1             ! IEU0
  459.         add     %g1, %o5, %g1           ! IEU1
  460.         fmuls   %f0, M0, %f2            ! FGM   Group
  461.         fmuls   %f0, M1, %f3            ! FGM   Group
  462.         fmuls   %f0, M2, %f4            ! FGM   Group
  463.         fmuls   %f0, M3, %f5            ! FGM   Group
  464.         fadds   %f2, M12, %f2           ! FGA   Group   f2 available
  465.         fmuls   %f1, M4, %f6            ! FGM
  466.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  467.         fmuls   %f1, M5, %f7            ! FGM
  468.         fadds   %f4, M14, %f4           ! FGA   Group   f4 available
  469.         fmuls   %f1, M6, %f8            ! FGM
  470.         fadds   %f5, M15, %f5           ! FGA   Group   f5 available
  471.         fmuls   %f1, M7, %f9            ! FGM
  472.         fadds   %f2, %f6, %f2           ! FGA   Group   f6 available
  473.         st      %f2, [%g2 + 0x00]       ! LSU
  474.         fadds   %f3, %f7, %f3           ! FGA   Group   f7 available
  475.         st      %f3, [%g2 + 0x04]       ! LSU
  476.         fadds   %f4, %f8, %f4           ! FGA   Group   f8 available
  477.         st      %f4, [%g2 + 0x08]       ! LSU
  478.         fadds   %f5, %f9, %f5           ! FGA   Group   f9 available
  479.         st      %f5, [%g2 + 0x0c]       ! LSU
  480.         cmp     %o1, %g3                ! IEU1
  481.         bne     1b                      ! CTI
  482.          add    %g2, 0x10, %g2          ! IEU0  Group
  483. 2:
  484.         ba      __set_v4f_4
  485.          nop
  486.  
  487.         .globl  _mesa_sparc_transform_points2_identity
  488. _mesa_sparc_transform_points2_identity:
  489.         cmp     %o2, %o0
  490.         be      3f
  491.          ld     [%o2 + V4F_STRIDE], %o5
  492.         LDPTR   [%o2 + V4F_START], %g1
  493.         LDPTR   [%o0 + V4F_START], %g2
  494.         ld      [%o2 + V4F_COUNT], %g3
  495.  
  496.         cmp     %g3, 0
  497.         st      %g3, [%o0 + V4F_COUNT]
  498.         be      2f
  499.          clr    %o1
  500.  
  501. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  502.         add     %o1, 1, %o1             ! IEU0
  503.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  504.         add     %g1, %o5, %g1           ! IEU0
  505.         cmp     %o1, %g3                ! IEU1
  506.         st      %f0, [%g2 + 0x00]       ! LSU   Group
  507.         st      %f1, [%g2 + 0x04]       ! LSU   Group
  508.         bne     1b                      ! CTI
  509.          add    %g2, 0x10, %g2          ! IEU0
  510. 2:
  511.         ba      __set_v4f_2
  512.          nop
  513.  
  514. 3:      retl
  515.          nop
  516.  
  517.         .globl  _mesa_sparc_transform_points2_2d
  518. _mesa_sparc_transform_points2_2d:
  519.         ld      [%o2 + V4F_STRIDE], %o5
  520.         LDPTR   [%o2 + V4F_START], %g1
  521.         LDPTR   [%o0 + V4F_START], %g2
  522.         ld      [%o2 + V4F_COUNT], %g3
  523.  
  524.         LDMATRIX_0_1_4_5_12_13(%o1)
  525.  
  526.         cmp     %g3, 1
  527.         st      %g3, [%o0 + V4F_COUNT]
  528.         bl      3f
  529.          clr    %o1
  530.  
  531.         be      2f
  532.          andn   %g3, 1, %o2
  533.  
  534. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  535.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  536.         add     %o1, 2, %o1             ! IEU0
  537.         add     %g1, %o5, %g1           ! IEU1
  538.         fmuls   %f0, M0, %f2            ! FGM
  539.         ld      [%g1 + 0x00], %f8       ! LSU   Group
  540.         fmuls   %f0, M1, %f3            ! FGM
  541.         ld      [%g1 + 0x04], %f9       ! LSU   Group
  542.         fmuls   %f1, M4, %f6            ! FGM
  543.         fmuls   %f1, M5, %f7            ! FGM   Group
  544.         add     %g1, %o5, %g1           ! IEU0
  545.         fmuls   %f8, M0, %f10           ! FGM   Group   f2 available
  546.         fadds   %f2, M12, %f2           ! FGA
  547.         fmuls   %f8, M1, %f11           ! FGM   Group   f3 available
  548.         fadds   %f3, M13, %f3           ! FGA
  549.         fmuls   %f9, M4, %f12           ! FGM   Group
  550.         fmuls   %f9, M5, %f13           ! FGM   Group
  551.         fadds   %f10, M12, %f10         ! FGA   Group   f2, f10 available
  552.         fadds   %f2, %f6, %f2           ! FGA   Group   f3, f11 available
  553.         st      %f2, [%g2 + 0x00]       ! LSU
  554.         fadds   %f11, M13, %f11         ! FGA   Group   f12 available
  555.         fadds   %f3, %f7, %f3           ! FGA   Group   f13 available
  556.         st      %f3, [%g2 + 0x04]       ! LSU
  557.         fadds   %f10, %f12, %f10        ! FGA   Group   f10 available
  558.         st      %f10, [%g2 + 0x10]      ! LSU
  559.         fadds   %f11, %f13, %f11        ! FGA   Group   f11 available
  560.         st      %f11, [%g2 + 0x14]      ! LSU
  561.         cmp     %o1, %o2                ! IEU1
  562.         bne     1b                      ! CTI
  563.          add    %g2, 0x20, %g2          ! IEU0  Group
  564.  
  565.         cmp     %o1, %g3
  566.         be      3f
  567.          nop
  568.  
  569. 2:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  570.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  571.         fmuls   %f0, M0, %f2            ! FGM   Group
  572.         fmuls   %f0, M1, %f3            ! FGM   Group
  573.         fmuls   %f1, M4, %f6            ! FGM   Group
  574.         fmuls   %f1, M5, %f7            ! FGM   Group
  575.         fadds   %f2, M12, %f2           ! FGA   Group   f2 available
  576.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  577.         fadds   %f2, %f6, %f2           ! FGA   Group   2 cycle stall, f2 available
  578.         st      %f2, [%g2 + 0x00]       ! LSU
  579.         fadds   %f3, %f7, %f3           ! FGA   Group   f3 available
  580.         st      %f3, [%g2 + 0x04]       ! LSU
  581.  
  582. 3:
  583.         ba      __set_v4f_2
  584.          nop
  585.  
  586.         .globl  _mesa_sparc_transform_points2_2d_no_rot
  587. _mesa_sparc_transform_points2_2d_no_rot:
  588.         ld      [%o2 + V4F_STRIDE], %o5
  589.         LDPTR   [%o2 + V4F_START], %g1
  590.         LDPTR   [%o0 + V4F_START], %g2
  591.         ld      [%o2 + V4F_COUNT], %g3
  592.  
  593.         LDMATRIX_0_5_12_13(%o1)
  594.  
  595.         cmp     %g3, 1
  596.         st      %g3, [%o0 + V4F_COUNT]
  597.         bl      3f
  598.          clr    %o1
  599.  
  600.         be      2f
  601.          andn   %g3, 1, %o2
  602.  
  603. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  604.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  605.         add     %o1, 2, %o1             ! IEU0
  606.         add     %g1, %o5, %g1           ! IEU1
  607.         ld      [%g1 + 0x00], %f4       ! LSU   Group
  608.         fmuls   %f0, M0, %f2            ! FGM
  609.         ld      [%g1 + 0x04], %f5       ! LSU   Group
  610.         fmuls   %f1, M5, %f3            ! FGM
  611.         fmuls   %f4, M0, %f6            ! FGM   Group
  612.         add     %g1, %o5, %g1           ! IEU0
  613.         fmuls   %f5, M5, %f7            ! FGM   Group
  614.         fadds   %f2, M12, %f2           ! FGA   Group   f2 available
  615.         st      %f2, [%g2 + 0x00]       ! LSU
  616.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  617.         st      %f3, [%g2 + 0x04]       ! LSU
  618.         fadds   %f6, M12, %f6           ! FGA   Group   f6 available
  619.         st      %f6, [%g2 + 0x10]       ! LSU
  620.         fadds   %f7, M13, %f7           ! FGA   Group   f7 available
  621.         st      %f7, [%g2 + 0x14]       ! LSU
  622.         cmp     %o1, %o2                ! IEU1
  623.         bne     1b                      ! CTI
  624.          add    %g2, 0x20, %g2          ! IEU0  Group
  625.  
  626.         cmp     %o1, %g3
  627.         be      3f
  628.          nop
  629.  
  630. 2:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  631.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  632.         fmuls   %f0, M0, %f2            ! FGM   Group
  633.         fmuls   %f1, M5, %f3            ! FGM   Group
  634.         fadds   %f2, M12, %f2           ! FGA   Group, 2 cycle stall, f2 available
  635.         st      %f2, [%g2 + 0x00]       ! LSU
  636.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  637.         st      %f3, [%g2 + 0x04]       ! LSU
  638.  
  639. 3:
  640.         ba      __set_v4f_2
  641.          nop
  642.  
  643.         /* orig: 12 cycles */
  644.         .globl  _mesa_sparc_transform_points2_3d
  645. _mesa_sparc_transform_points2_3d:
  646.         ld      [%o2 + V4F_STRIDE], %o5
  647.         ld      [%o2 + V4F_START], %g1
  648.         ld      [%o0 + V4F_START], %g2
  649.         ld      [%o2 + V4F_COUNT], %g3
  650.  
  651.         LDMATRIX_0_1_2_3_4_5_6_12_13_14(%o1)
  652.  
  653.         cmp     %g3, 1
  654.         st      %g3, [%o0 + V4F_COUNT]
  655.         bl      3f
  656.          clr    %o1
  657.  
  658.         be      2f
  659.          andn   %g3, 1, %o2
  660.  
  661. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  662.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  663.         add     %o1, 2, %o1             ! IEU0
  664.         add     %g1, %o5, %g1           ! IEU1
  665.         ld      [%g1 + 0x00], %f9       ! LSU   Group
  666.         fmuls   %f0, M0, %f2            ! FGM
  667.         ld      [%g1 + 0x04], %f10      ! LSU   Group
  668.         fmuls   %f0, M1, %f3            ! FGM
  669.         fmuls   %f0, M2, %f4            ! FGM   Group
  670.         add     %g1, %o5, %g1           ! IEU0
  671.         fmuls   %f1, M4, %f6            ! FGM   Group
  672.         fmuls   %f1, M5, %f7            ! FGM   Group   f2 available
  673.         fadds   %f2, M12, %f2           ! FGA
  674.         fmuls   %f1, M6, %f8            ! FGM   Group   f3 available
  675.         fadds   %f3, M13, %f3           ! FGA
  676.         fmuls   %f9, M0, %f11           ! FGM   Group   f4 available
  677.         fadds   %f4, M14, %f4           ! FGA
  678.         fmuls   %f9, M1, %f12           ! FGM   Group   f6 available
  679.         fmuls   %f9, M2, %f13           ! FGM   Group   f2, f7 available
  680.         fadds   %f2, %f6, %f2           ! FGA
  681.         st      %f2, [%g2 + 0x00]       ! LSU
  682.         fmuls   %f10, M4, %f14          ! FGM   Group   f3, f8 available
  683.         fadds   %f3, %f7, %f3           ! FGA
  684.         st      %f3, [%g2 + 0x04]       ! LSU
  685.         fmuls   %f10, M5, %f15          ! FGM   Group   f4, f11 available
  686.         fadds   %f11, M12, %f11         ! FGA
  687.         fmuls   %f10, M6, %f0           ! FGM   Group   f12 available
  688.         fadds   %f12, M13, %f12         ! FGA
  689.         fadds   %f13, M14, %f13         ! FGA   Group   f13 available
  690.         fadds   %f4, %f8, %f4           ! FGA   Group   f14 available
  691.         st      %f4, [%g2 + 0x08]       ! LSU
  692.         fadds   %f11, %f14, %f11        ! FGA   Group   f15, f11 available
  693.         st      %f11, [%g2 + 0x10]      ! LSU
  694.         fadds   %f12, %f15, %f12        ! FGA   Group   f0, f12 available
  695.         st      %f12, [%g2 + 0x14]      ! LSU
  696.         fadds   %f13, %f0, %f13         ! FGA   Group   f13 available
  697.         st      %f13, [%g2 + 0x18]      ! LSU
  698.  
  699.         cmp     %o1, %o2                ! IEU1
  700.         bne     1b                      ! CTI
  701.          add    %g2, 0x20, %g2          ! IEU0  Group
  702.  
  703.         cmp     %o1, %g3
  704.         be      3f
  705.          nop
  706.  
  707. 2:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  708.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  709.         fmuls   %f0, M0, %f2            ! FGM   Group
  710.         fmuls   %f0, M1, %f3            ! FGM   Group
  711.         fmuls   %f0, M2, %f4            ! FGM   Group
  712.         fmuls   %f1, M4, %f6            ! FGM   Group
  713.         fmuls   %f1, M5, %f7            ! FGM   Group   f2 available
  714.         fadds   %f2, M12, %f2           ! FGA
  715.         fmuls   %f1, M6, %f8            ! FGM   Group   f3 available
  716.         fadds   %f3, M13, %f3           ! FGA
  717.         fadds   %f4, M14, %f4           ! FGA   Group   f4 available
  718.         fadds   %f2, %f6, %f2           ! FGA   Group   stall, f2, f6, f7 available
  719.         st      %f2, [%g2 + 0x00]       ! LSU
  720.         fadds   %f3, %f7, %f3           ! FGA   Group   f3, f8 available
  721.         st      %f3, [%g2 + 0x04]       ! LSU
  722.         fadds   %f4, %f8, %f4           ! FGA   Group   f4 available
  723.         st      %f4, [%g2 + 0x08]       ! LSU
  724.  
  725. 3:
  726.         ba      __set_v4f_3
  727.          nop
  728.  
  729.         .globl  _mesa_sparc_transform_points2_3d_no_rot
  730. _mesa_sparc_transform_points2_3d_no_rot:
  731.         ld      [%o2 + V4F_STRIDE], %o5
  732.         LDPTR   [%o2 + V4F_START], %g1
  733.         LDPTR   [%o0 + V4F_START], %g2
  734.         ld      [%o2 + V4F_COUNT], %g3
  735.  
  736.         LDMATRIX_0_5_12_13_14(%o1)
  737.  
  738.         cmp     %g3, 1
  739.         st      %g3, [%o0 + V4F_COUNT]
  740.         bl      3f
  741.          clr    %o3
  742.  
  743.         be      2f
  744.          andn   %g3, 1, %o2
  745.  
  746. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  747.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  748.         add     %o3, 2, %o3             ! IEU0
  749.         add     %g1, %o5, %g1           ! IEU1
  750.         ld      [%g1 + 0x00], %f4       ! LSU   Group
  751.         fmuls   %f0, M0, %f2            ! FGM
  752.         ld      [%g1 + 0x04], %f5       ! LSU   Group
  753.         fmuls   %f1, M5, %f3            ! FGM
  754.         fmuls   %f4, M0, %f6            ! FGM   Group
  755.         add     %g1, %o5, %g1           ! IEU0
  756.         fmuls   %f5, M5, %f7            ! FGM   Group
  757.         fadds   %f2, M12, %f2           ! FGA   Group   f2 available
  758.         st      %f2, [%g2 + 0x00]       ! LSU
  759.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  760.         st      %f3, [%g2 + 0x04]       ! LSU
  761.         fadds   %f6, M12, %f6           ! FGA   Group   f6 available
  762.         st      M14, [%g2 + 0x08]       ! LSU
  763.         fadds   %f7, M13, %f7           ! FGA   Group   f7 available
  764.         st      %f6, [%g2 + 0x10]       ! LSU
  765.         st      %f7, [%g2 + 0x14]       ! LSU   Group
  766.         st      M14, [%g2 + 0x18]       ! LSU   Group
  767.         cmp     %o3, %o2                ! IEU1
  768.         bne     1b                      ! CTI
  769.          add    %g2, 0x20, %g2          ! IEU0  Group
  770.  
  771.         cmp     %o3, %g3
  772.         be      3f
  773.          nop
  774.  
  775. 2:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  776.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  777.         fmuls   %f0, M0, %f2            ! FGM   Group
  778.         fmuls   %f1, M5, %f3            ! FGM   Group
  779.         fadds   %f2, M12, %f2           ! FGA   Group, 2 cycle stall, f2 available
  780.         st      %f2, [%g2 + 0x00]       ! LSU
  781.         fadds   %f3, M13, %f3           ! FGA   Group   f3 available
  782.         st      %f3, [%g2 + 0x04]       ! LSU
  783.         st      M14, [%g2 + 0x08]       ! LSU   Group
  784.  
  785. 3:      ld      [%o1 + (14 * 0x4)], %g3
  786.         cmp     %g3, 0
  787.         bne     __set_v4f_3
  788.          nop
  789.         ba      __set_v4f_2
  790.          nop
  791.  
  792.         .globl  _mesa_sparc_transform_points2_perspective
  793. _mesa_sparc_transform_points2_perspective:
  794.         ld      [%o2 + V4F_STRIDE], %o5
  795.         LDPTR   [%o2 + V4F_START], %g1
  796.         LDPTR   [%o0 + V4F_START], %g2
  797.         ld      [%o2 + V4F_COUNT], %g3
  798.  
  799.         LDMATRIX_0_5_14(%o1)
  800.  
  801.         cmp     %g3, 0
  802.         st      %g3, [%o0 + V4F_COUNT]
  803.         be      2f
  804.          clr    %o1
  805.  
  806. 1:      ld      [%g1 + 0x00], %f0
  807.         ld      [%g1 + 0x04], %f1
  808.         add     %o1, 1, %o1
  809.         add     %g1, %o5, %g1
  810.         fmuls   %f0, M0, %f2
  811.         st      %f2, [%g2 + 0x00]
  812.         fmuls   %f1, M5, %f3
  813.         st      %f3, [%g2 + 0x04]
  814.         st      M14, [%g2 + 0x08]
  815.         st      %g0, [%g2 + 0x0c]
  816.         cmp     %o1, %g3
  817.         bne     1b
  818.          add    %g2, 0x10, %g2
  819. 2:
  820.         ba      __set_v4f_4
  821.          nop
  822.  
  823.         .globl  _mesa_sparc_transform_points3_general
  824. _mesa_sparc_transform_points3_general:
  825.         ld      [%o2 + V4F_STRIDE], %o5
  826.         LDPTR   [%o2 + V4F_START], %g1
  827.         LDPTR   [%o0 + V4F_START], %g2
  828.         ld      [%o2 + V4F_COUNT], %g3
  829.  
  830.         LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
  831.  
  832.         cmp     %g3, 0
  833.         st      %g3, [%o0 + V4F_COUNT]
  834.         be      2f
  835.          clr    %o1
  836.  
  837. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  838.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  839.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  840.         add     %o1, 1, %o1             ! IEU0
  841.         add     %g1, %o5, %g1           ! IEU1
  842.         fmuls   %f0, M0, %f3            ! FGM
  843.         fmuls   %f1, M4, %f7            ! FGM   Group
  844.         fmuls   %f0, M1, %f4            ! FGM   Group
  845.         fmuls   %f1, M5, %f8            ! FGM   Group
  846.         fmuls   %f0, M2, %f5            ! FGM   Group   f3 available
  847.         fmuls   %f1, M6, %f9            ! FGM   Group   f7 available
  848.         fadds   %f3, %f7, %f3           ! FGA
  849.         fmuls   %f0, M3, %f6            ! FGM   Group   f4 available
  850.         fmuls   %f1, M7, %f10           ! FGM   Group   f8 available
  851.         fadds   %f4, %f8, %f4           ! FGA
  852.         fmuls   %f2, M8, %f7            ! FGM   Group   f5 available
  853.         fmuls   %f2, M9, %f8            ! FGM   Group   f9,f3 available
  854.         fadds   %f5, %f9, %f5           ! FGA
  855.         fmuls   %f2, M10, %f9           ! FGM   Group   f6 available
  856.         fadds   %f6, %f10, %f6          ! FGA   Group   f10,f4 available
  857.         fmuls   %f2, M11, %f10          ! FGM
  858.         fadds   %f3, M12, %f3           ! FGA   Group   f7 available
  859.         fadds   %f4, M13, %f4           ! FGA   Group   f8,f5 available
  860.         fadds   %f5, M14, %f5           ! FGA   Group   f9 available
  861.         fadds   %f6, M15, %f6           ! FGA   Group   f10,f6 available
  862.         fadds   %f3, %f7, %f3           ! FGA   Group   f3 available
  863.         st      %f3, [%g2 + 0x00]       ! LSU
  864.         fadds   %f4, %f8, %f4           ! FGA   Group   f4 available
  865.         st      %f4, [%g2 + 0x04]       ! LSU
  866.         fadds   %f5, %f9, %f5           ! FGA   Group   f5 available
  867.         st      %f5, [%g2 + 0x08]       ! LSU
  868.         fadds   %f6, %f10, %f6          ! FGA   Group   f6 available
  869.         st      %f6, [%g2 + 0x0c]       ! LSU
  870.         cmp     %o1, %g3                ! IEU1
  871.         bne     1b                      ! CTI
  872.          add    %g2, 0x10, %g2          ! IEU0  Group
  873. 2:
  874.         ba      __set_v4f_4
  875.          nop
  876.  
  877.         .globl  _mesa_sparc_transform_points3_identity
  878. _mesa_sparc_transform_points3_identity:
  879.         ld      [%o2 + V4F_STRIDE], %o5
  880.         LDPTR   [%o2 + V4F_START], %g1
  881.         LDPTR   [%o0 + V4F_START], %g2
  882.         ld      [%o2 + V4F_COUNT], %g3
  883.  
  884.         cmp     %g3, 0
  885.         st      %g3, [%o0 + V4F_COUNT]
  886.         be      2f
  887.          clr    %o1
  888.  
  889. 1:      ld      [%g1 + 0x00], %f0
  890.         ld      [%g1 + 0x04], %f1
  891.         ld      [%g1 + 0x08], %f2
  892.         add     %o1, 1, %o1
  893.         add     %g1, %o5, %g1
  894.         cmp     %o1, %g3
  895.         st      %f0, [%g2 + 0x00]
  896.         st      %f1, [%g2 + 0x04]
  897.         st      %f2, [%g2 + 0x08]
  898.         bne     1b
  899.          add    %g2, 0x10, %g2
  900. 2:
  901.         ba      __set_v4f_3
  902.          nop
  903.  
  904.         .globl  _mesa_sparc_transform_points3_2d
  905. _mesa_sparc_transform_points3_2d:
  906.         ld      [%o2 + V4F_STRIDE], %o5
  907.         LDPTR   [%o2 + V4F_START], %g1
  908.         LDPTR   [%o0 + V4F_START], %g2
  909.         ld      [%o2 + V4F_COUNT], %g3
  910.  
  911.         LDMATRIX_0_1_4_5_12_13(%o1)
  912.  
  913.         cmp     %g3, 0
  914.         st      %g3, [%o0 + V4F_COUNT]
  915.         be      2f
  916.          clr    %o1
  917.  
  918. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  919.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  920.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  921.         add     %o1, 1, %o1             ! IEU0
  922.         add     %g1, %o5, %g1           ! IEU1
  923.         fmuls   %f0, M0, %f3            ! FGM
  924.         fmuls   %f0, M1, %f4            ! FGM   Group
  925.         fmuls   %f1, M4, %f6            ! FGM   Group
  926.         fmuls   %f1, M5, %f7            ! FGM   Group
  927.         fadds   %f3, M12, %f3           ! FGA   Group   f3 available
  928.         fadds   %f4, M13, %f4           ! FGA   Group   f4 available
  929.         fadds   %f3, %f6, %f3           ! FGA   Group   f6 available
  930.         st      %f3, [%g2 + 0x00]       ! LSU
  931.         fadds   %f4, %f7, %f4           ! FGA   Group   f7 available
  932.         st      %f4, [%g2 + 0x04]       ! LSU
  933.         st      %f2, [%g2 + 0x08]       ! LSU   Group
  934.         cmp     %o1, %g3                ! IEU1
  935.         bne     1b                      ! CTI
  936.          add    %g2, 0x10, %g2          ! IEU0  Group
  937. 2:
  938.         ba      __set_v4f_3
  939.          nop
  940.  
  941.         .globl  _mesa_sparc_transform_points3_2d_no_rot
  942. _mesa_sparc_transform_points3_2d_no_rot:
  943.         ld      [%o2 + V4F_STRIDE], %o5
  944.         LDPTR   [%o2 + V4F_START], %g1
  945.         LDPTR   [%o0 + V4F_START], %g2
  946.         ld      [%o2 + V4F_COUNT], %g3
  947.  
  948.         LDMATRIX_0_5_12_13(%o1)
  949.  
  950.         cmp     %g3, 0
  951.         st      %g3, [%o0 + V4F_COUNT]
  952.         be      2f
  953.          clr    %o1
  954.  
  955. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  956.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  957.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  958.         add     %o1, 1, %o1             ! IEU0
  959.         add     %g1, %o5, %g1           ! IEU1
  960.         fmuls   %f0, M0, %f3            ! FGM
  961.         fmuls   %f1, M5, %f4            ! FGM   Group
  962.         st      %f2, [%g2 + 0x08]       ! LSU
  963.         fadds   %f3, M12, %f3           ! FGA   Group
  964.         st      %f3, [%g2 + 0x00]       ! LSU
  965.         fadds   %f4, M13, %f4           ! FGA   Group
  966.         st      %f4, [%g2 + 0x04]       ! LSU
  967.         cmp     %o1, %g3                ! IEU1
  968.         bne     1b                      ! CTI
  969.          add    %g2, 0x10, %g2          ! IEU0  Group
  970. 2:
  971.         ba      __set_v4f_3
  972.          nop
  973.  
  974.         .globl  _mesa_sparc_transform_points3_3d
  975. _mesa_sparc_transform_points3_3d:
  976.         ld      [%o2 + V4F_STRIDE], %o5
  977.         LDPTR   [%o2 + V4F_START], %g1
  978.         LDPTR   [%o0 + V4F_START], %g2
  979.         ld      [%o2 + V4F_COUNT], %g3
  980.  
  981.         LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
  982.  
  983.         cmp     %g3, 0
  984.         st      %g3, [%o0 + V4F_COUNT]
  985.         be      2f
  986.          clr    %o1
  987.  
  988. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  989.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  990.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  991.         add     %o1, 1, %o1             ! IEU0
  992.         add     %g1, %o5, %g1           ! IEU1
  993.         fmuls   %f0, M0, %f3            ! FGM
  994.         fmuls   %f1, M4, %f6            ! FGM   Group
  995.         fmuls   %f0, M1, %f4            ! FGM   Group
  996.         fmuls   %f1, M5, %f7            ! FGM   Group
  997.         fmuls   %f0, M2, %f5            ! FGM   Group   f3 available
  998.         fmuls   %f1, M6, %f8            ! FGM   Group   f6 available
  999.         fadds   %f3, %f6, %f3           ! FGA
  1000.         fmuls   %f2, M8, %f9            ! FGM   Group   f4 available
  1001.         fmuls   %f2, M9, %f10           ! FGM   Group   f7 available
  1002.         fadds   %f4, %f7, %f4           ! FGA
  1003.         fmuls   %f2, M10, %f11          ! FGM   Group   f5 available
  1004.         fadds   %f5, %f8, %f5           ! FGA   Group   f8, f3 available
  1005.         fadds   %f3, %f9, %f3           ! FGA   Group   f9 available
  1006.         fadds   %f4, %f10, %f4          ! FGA   Group   f10, f4 available
  1007.         fadds   %f5, %f11, %f5          ! FGA   Group   stall, f11, f5 available
  1008.         fadds   %f3, M12, %f3           ! FGA   Group   f3 available
  1009.         st      %f3, [%g2 + 0x00]       ! LSU
  1010.         fadds   %f4, M13, %f4           ! FGA   Group   f4 available
  1011.         st      %f4, [%g2 + 0x04]       ! LSU
  1012.         fadds   %f5, M14, %f5           ! FGA   Group   f5 available
  1013.         st      %f5, [%g2 + 0x08]       ! LSU
  1014.         cmp     %o1, %g3                ! IEU1
  1015.         bne     1b                      ! CTI
  1016.          add    %g2, 0x10, %g2          ! IEU0  Group
  1017. 2:
  1018.         ba      __set_v4f_3
  1019.          nop
  1020.  
  1021.         .globl  _mesa_sparc_transform_points3_3d_no_rot
  1022. _mesa_sparc_transform_points3_3d_no_rot:
  1023.         ld      [%o2 + V4F_STRIDE], %o5
  1024.         LDPTR   [%o2 + V4F_START], %g1
  1025.         LDPTR   [%o0 + V4F_START], %g2
  1026.         ld      [%o2 + V4F_COUNT], %g3
  1027.  
  1028.         LDMATRIX_0_5_10_12_13_14(%o1)
  1029.  
  1030.         cmp     %g3, 0
  1031.         st      %g3, [%o0 + V4F_COUNT]
  1032.         be      2f
  1033.          clr    %o1
  1034.  
  1035. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1036.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1037.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1038.         add     %o1, 1, %o1             ! IEU0
  1039.         add     %g1, %o5, %g1           ! IEU1
  1040.         cmp     %o1, %g3                ! IEU1  Group
  1041.         fmuls   %f0, M0, %f3            ! FGM
  1042.         fmuls   %f1, M5, %f4            ! FGM   Group
  1043.         fmuls   %f2, M10, %f5           ! FGM   Group
  1044.         fadds   %f3, M12, %f3           ! FGA   Group, stall, f3 available
  1045.         st      %f3, [%g2 + 0x00]       ! LSU
  1046.         fadds   %f4, M13, %f4           ! FGA   Group, f4 available
  1047.         st      %f4, [%g2 + 0x04]       ! LSU
  1048.         fadds   %f5, M14, %f5           ! FGA   Group, f5 available
  1049.         st      %f5, [%g2 + 0x08]       ! LEU
  1050.         bne     1b                      ! CTI
  1051.          add    %g2, 0x10, %g2          ! IEU0  Group
  1052. 2:
  1053.         ba      __set_v4f_3
  1054.          nop
  1055.  
  1056.         .globl  _mesa_sparc_transform_points3_perspective
  1057. _mesa_sparc_transform_points3_perspective:
  1058.         ld      [%o2 + V4F_STRIDE], %o5
  1059.         LDPTR   [%o2 + V4F_START], %g1
  1060.         LDPTR   [%o0 + V4F_START], %g2
  1061.         ld      [%o2 + V4F_COUNT], %g3
  1062.  
  1063.         LDMATRIX_0_5_8_9_10_14(%o1)
  1064.  
  1065.         cmp     %g3, 0
  1066.         st      %g3, [%o0 + V4F_COUNT]
  1067.         be      2f
  1068.          clr    %o1
  1069.  
  1070. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1071.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1072.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1073.         add     %o1, 1, %o1             ! IEU0
  1074.         add     %g1, %o5, %g1           ! IEU1
  1075.         fmuls   %f0, M0, %f3            ! FGM
  1076.         fmuls   %f2, M8, %f6            ! FGM   Group
  1077.         fmuls   %f1, M5, %f4            ! FGM   Group
  1078.         fmuls   %f2, M9, %f7            ! FGM   Group
  1079.         fmuls   %f2, M10, %f5           ! FGM   Group   f3 available
  1080.         fadds   %f3, %f6, %f3           ! FGA   Group   f6 available
  1081.         st      %f3, [%g2 + 0x00]       ! LSU
  1082.         fadds   %f4, %f7, %f4           ! FGA   Group   stall, f4, f7 available
  1083.         st      %f4, [%g2 + 0x04]       ! LSU
  1084.         fadds   %f5, M14, %f5           ! FGA   Group
  1085.         st      %f5, [%g2 + 0x08]       ! LSU
  1086.         fnegs   %f2, %f6                ! FGA   Group
  1087.         st      %f6, [%g2 + 0x0c]       ! LSU
  1088.         cmp     %o1, %g3                ! IEU1
  1089.         bne     1b                      ! CTI
  1090.          add    %g2, 0x10, %g2          ! IEU0  Group
  1091. 2:
  1092.         ba      __set_v4f_4
  1093.          nop
  1094.  
  1095.         .globl  _mesa_sparc_transform_points4_general
  1096. _mesa_sparc_transform_points4_general:
  1097.         ld      [%o2 + V4F_STRIDE], %o5
  1098.         LDPTR   [%o2 + V4F_START], %g1
  1099.         LDPTR   [%o0 + V4F_START], %g2
  1100.         ld      [%o2 + V4F_COUNT], %g3
  1101.  
  1102.         LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(%o1)
  1103.  
  1104.         cmp     %g3, 0
  1105.         st      %g3, [%o0 + V4F_COUNT]
  1106.         be      2f
  1107.          clr    %o1
  1108.  
  1109. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1110.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1111.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1112.         ld      [%g1 + 0x0c], %f3       ! LSU   Group
  1113.         add     %o1, 1, %o1             ! IEU0
  1114.         add     %g1, %o5, %g1           ! IEU1
  1115.         fmuls   %f0, M0, %f4            ! FGM   Group
  1116.         fmuls   %f1, M4, %f8            ! FGM   Group
  1117.         fmuls   %f0, M1, %f5            ! FGM   Group
  1118.         fmuls   %f1, M5, %f9            ! FGM   Group
  1119.         fmuls   %f0, M2, %f6            ! FGM   Group   f4 available
  1120.         fmuls   %f1, M6, %f10           ! FGM   Group   f8 available
  1121.         fadds   %f4, %f8, %f4           ! FGA
  1122.         fmuls   %f0, M3, %f7            ! FGM   Group   f5 available
  1123.         fmuls   %f1, M7, %f11           ! FGM   Group   f9 available
  1124.         fadds   %f5, %f9, %f5           ! FGA
  1125.         fmuls   %f2, M8, %f12           ! FGM   Group   f6 available
  1126.         fmuls   %f2, M9, %f13           ! FGM   Group   f10, f4 available
  1127.         fadds   %f6, %f10, %f6          ! FGA
  1128.         fmuls   %f2, M10, %f14          ! FGM   Group   f7 available
  1129.         fmuls   %f2, M11, %f15          ! FGM   Group   f11, f5 available
  1130.         fadds   %f7, %f11, %f7          ! FGA
  1131.         fmuls   %f3, M12, %f8           ! FGM   Group   f12 available
  1132.         fadds   %f4, %f12, %f4          ! FGA
  1133.         fmuls   %f3, M13, %f9           ! FGM   Group   f13, f6 available
  1134.         fadds   %f5, %f13, %f5          ! FGA
  1135.         fmuls   %f3, M14, %f10          ! FGM   Group   f14 available
  1136.         fadds   %f6, %f14, %f6          ! FGA
  1137.         fmuls   %f3, M15, %f11          ! FGM   Group   f15, f7 available
  1138.         fadds   %f7, %f15, %f7          ! FGA
  1139.         fadds   %f4, %f8, %f4           ! FGA   Group   f8, f4 available
  1140.         st      %f4, [%g2 + 0x00]       ! LSU
  1141.         fadds   %f5, %f9, %f5           ! FGA   Group   f9, f5 available
  1142.         st      %f5, [%g2 + 0x04]       ! LSU
  1143.         fadds   %f6, %f10, %f6          ! FGA   Group   f10, f6 available
  1144.         st      %f6, [%g2 + 0x08]       ! LSU
  1145.         fadds   %f7, %f11, %f7          ! FGA   Group   f11, f7 available
  1146.         st      %f7, [%g2 + 0x0c]       ! LSU
  1147.         cmp     %o1, %g3                ! IEU1
  1148.         bne     1b                      ! CTI
  1149.          add    %g2, 0x10, %g2          ! IEU0  Group
  1150. 2:
  1151.         ba      __set_v4f_4
  1152.          nop
  1153.  
  1154.         .globl  _mesa_sparc_transform_points4_identity
  1155. _mesa_sparc_transform_points4_identity:
  1156.         ld      [%o2 + V4F_STRIDE], %o5
  1157.         LDPTR   [%o2 + V4F_START], %g1
  1158.         LDPTR   [%o0 + V4F_START], %g2
  1159.         ld      [%o2 + V4F_COUNT], %g3
  1160.  
  1161.         cmp     %g3, 0
  1162.         st      %g3, [%o0 + V4F_COUNT]
  1163.         be      2f
  1164.          clr    %o1
  1165.  
  1166. 1:      ld      [%g1 + 0x00], %f0
  1167.         ld      [%g1 + 0x04], %f1
  1168.         ld      [%g1 + 0x08], %f2
  1169.         add     %o1, 1, %o1
  1170.         ld      [%g1 + 0x0c], %f3
  1171.         add     %g1, %o5, %g1
  1172.         st      %f0, [%g2 + 0x00]
  1173.         st      %f1, [%g2 + 0x04]
  1174.         st      %f2, [%g2 + 0x08]
  1175.         cmp     %o1, %g3
  1176.         st      %f3, [%g2 + 0x0c]
  1177.         bne     1b
  1178.          add    %g2, 0x10, %g2
  1179. 2:
  1180.         ba      __set_v4f_4
  1181.          nop
  1182.  
  1183.         .globl  _mesa_sparc_transform_points4_2d
  1184. _mesa_sparc_transform_points4_2d:
  1185.         ld      [%o2 + V4F_STRIDE], %o5
  1186.         LDPTR   [%o2 + V4F_START], %g1
  1187.         LDPTR   [%o0 + V4F_START], %g2
  1188.         ld      [%o2 + V4F_COUNT], %g3
  1189.  
  1190.         LDMATRIX_0_1_4_5_12_13(%o1)
  1191.  
  1192.         cmp     %g3, 0
  1193.         st      %g3, [%o0 + V4F_COUNT]
  1194.         be      2f
  1195.          clr    %o1
  1196.  
  1197. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1198.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1199.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1200.         ld      [%g1 + 0x0c], %f3       ! LSU   Group
  1201.         add     %o1, 1, %o1             ! IEU0
  1202.         add     %g1, %o5, %g1           ! IEU1
  1203.         fmuls   %f0, M0, %f4            ! FGM
  1204.         fmuls   %f1, M4, %f8            ! FGM   Group
  1205.         fmuls   %f0, M1, %f5            ! FGM   Group
  1206.         fmuls   %f1, M5, %f9            ! FGM   Group   f4 available
  1207.         fmuls   %f3, M12, %f12          ! FGM   Group
  1208.         fmuls   %f3, M13, %f13          ! FGM   Group   f8 available
  1209.         fadds   %f4, %f8, %f4           ! FGA
  1210.         fadds   %f5, %f9, %f5           ! FGA   Group   stall, f5, f9 available
  1211.         fadds   %f4, %f12, %f4          ! FGA   Group   2 cycle stall, f4, f12, f13 avail
  1212.         st      %f4, [%g2 + 0x00]       ! LSU
  1213.         fadds   %f5, %f13, %f5          ! FGA   Group   f5 available
  1214.         st      %f5, [%g2 + 0x04]       ! LSU
  1215.         st      %f2, [%g2 + 0x08]       ! LSU   Group
  1216.         st      %f3, [%g2 + 0x0c]       ! LSU   Group
  1217.         cmp     %o1, %g3                ! IEU1
  1218.         bne     1b                      ! CTI
  1219.          add    %g2, 0x10, %g2          ! IEU0  Group
  1220. 2:
  1221.         ba      __set_v4f_4
  1222.          nop
  1223.  
  1224.         .globl  _mesa_sparc_transform_points4_2d_no_rot
  1225. _mesa_sparc_transform_points4_2d_no_rot:
  1226.         ld      [%o2 + V4F_STRIDE], %o5
  1227.         LDPTR   [%o2 + V4F_START], %g1
  1228.         LDPTR   [%o0 + V4F_START], %g2
  1229.         ld      [%o2 + V4F_COUNT], %g3
  1230.  
  1231.         LDMATRIX_0_1_4_5_12_13(%o1)
  1232.  
  1233.         cmp     %g3, 0
  1234.         st      %g3, [%o0 + V4F_COUNT]
  1235.         be      2f
  1236.          clr    %o1
  1237.  
  1238. 1:      ld      [%g1 + 0x00], %f0
  1239.         ld      [%g1 + 0x04], %f1
  1240.         ld      [%g1 + 0x08], %f2
  1241.         ld      [%g1 + 0x0c], %f3
  1242.         add     %o1, 1, %o1
  1243.         add     %g1, %o5, %g1
  1244.         fmuls   %f0, M0, %f4
  1245.         fmuls   %f3, M12, %f8
  1246.         fmuls   %f1, M5, %f5
  1247.         fmuls   %f3, M13, %f9
  1248.         fadds   %f4, %f8, %f4
  1249.         st      %f4, [%g2 + 0x00]
  1250.         fadds   %f5, %f9, %f5
  1251.         st      %f5, [%g2 + 0x04]
  1252.         st      %f2, [%g2 + 0x08]
  1253.         st      %f3, [%g2 + 0x0c]
  1254.         cmp     %o1, %g3
  1255.         bne     1b
  1256.          add    %g2, 0x10, %g2
  1257. 2:
  1258.         ba      __set_v4f_4
  1259.          nop
  1260.  
  1261.         .globl  _mesa_sparc_transform_points4_3d
  1262. _mesa_sparc_transform_points4_3d:
  1263.         ld      [%o2 + V4F_STRIDE], %o5
  1264.         LDPTR   [%o2 + V4F_START], %g1
  1265.         LDPTR   [%o0 + V4F_START], %g2
  1266.         ld      [%o2 + V4F_COUNT], %g3
  1267.  
  1268.         LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(%o1)
  1269.  
  1270.         cmp     %g3, 0
  1271.         st      %g3, [%o0 + V4F_COUNT]
  1272.         be      2f
  1273.          clr    %o1
  1274.  
  1275. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1276.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1277.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1278.         ld      [%g1 + 0x0c], %f3       ! LSU   Group
  1279.         add     %o1, 1, %o1             ! IEU0
  1280.         add     %g1, %o5, %g1           ! IEU1
  1281.         fmuls   %f0, M0, %f4            ! FGM
  1282.         fmuls   %f1, M4, %f7            ! FGM   Group
  1283.         fmuls   %f0, M1, %f5            ! FGM   Group
  1284.         fmuls   %f1, M5, %f8            ! FGM   Group
  1285.         fmuls   %f0, M2, %f6            ! FGM   Group   f4 available
  1286.         fmuls   %f1, M6, %f9            ! FGM   Group   f7 available
  1287.         fadds   %f4, %f7, %f4           ! FGA
  1288.         fmuls   %f2, M8, %f10           ! FGM   Group   f5 available
  1289.         fmuls   %f2, M9, %f11           ! FGM   Group   f8 available
  1290.         fadds   %f5, %f8, %f5           ! FGA
  1291.         fmuls   %f2, M10, %f12          ! FGM   Group   f6 available
  1292.         fmuls   %f3, M12, %f13          ! FGM   Group   f9, f4 available
  1293.         fadds   %f6, %f9, %f6           ! FGA
  1294.         fmuls   %f3, M13, %f14          ! FGM   Group   f10 available
  1295.         fadds   %f4, %f10, %f4          ! FGA
  1296.         fmuls   %f3, M14, %f15          ! FGM   Group   f11, f5 available
  1297.         fadds   %f5, %f11, %f5          ! FGA
  1298.         fadds   %f6, %f12, %f6          ! FGA   Group   stall, f12, f13, f6 available
  1299.         fadds   %f4, %f13, %f4          ! FGA   Group   f14, f4 available
  1300.         st      %f4, [%g2 + 0x00]       ! LSU
  1301.         fadds   %f5, %f14, %f5          ! FGA   Group   f15, f5 available
  1302.         st      %f5, [%g2 + 0x04]       ! LSU
  1303.         fadds   %f6, %f15, %f6          ! FGA   Group   f6 available
  1304.         st      %f6, [%g2 + 0x08]       ! LSU
  1305.         st      %f3, [%g2 + 0x0c]       ! LSU   Group
  1306.         cmp     %o1, %g3                ! IEU1
  1307.         bne     1b                      ! CTI
  1308.          add    %g2, 0x10, %g2          ! IEU0  Group
  1309. 2:
  1310.         ba      __set_v4f_4
  1311.          nop
  1312.  
  1313.         .globl  _mesa_sparc_transform_points4_3d_no_rot
  1314. _mesa_sparc_transform_points4_3d_no_rot:
  1315.         ld      [%o2 + V4F_STRIDE], %o5
  1316.         LDPTR   [%o2 + V4F_START], %g1
  1317.         LDPTR   [%o0 + V4F_START], %g2
  1318.         ld      [%o2 + V4F_COUNT], %g3
  1319.  
  1320.         LDMATRIX_0_5_10_12_13_14(%o1)
  1321.  
  1322.         cmp     %g3, 0
  1323.         st      %g3, [%o0 + V4F_COUNT]
  1324.         be      2f
  1325.          clr    %o1
  1326.  
  1327. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1328.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1329.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1330.         ld      [%g1 + 0x0c], %f3       ! LSU   Group
  1331.         add     %o1, 1, %o1             ! IEU0
  1332.         add     %g1, %o5, %g1           ! IEU1
  1333.         fmuls   %f0, M0, %f4            ! FGM
  1334.         fmuls   %f3, M12, %f7           ! FGM   Group
  1335.         fmuls   %f1, M5, %f5            ! FGM   Group
  1336.         fmuls   %f3, M13, %f8           ! FGM   Group
  1337.         fmuls   %f2, M10, %f6           ! FGM   Group   f4 available
  1338.         fmuls   %f3, M14, %f9           ! FGM   Group   f7 available
  1339.         fadds   %f4, %f7, %f4           ! FGA
  1340.         st      %f4, [%g2 + 0x00]       ! LSU
  1341.         fadds   %f5, %f8, %f5           ! FGA   Group   stall, f5, f8 available
  1342.         st      %f5, [%g2 + 0x04]       ! LSU
  1343.         fadds   %f6, %f9, %f6           ! FGA   Group   stall, f6, f9 available
  1344.         st      %f6, [%g2 + 0x08]       ! LSU
  1345.         st      %f3, [%g2 + 0x0c]       ! LSU   Group
  1346.         cmp     %o1, %g3                ! IEU1
  1347.         bne     1b                      ! CTI
  1348.          add    %g2, 0x10, %g2          ! IEU0  Group
  1349. 2:
  1350.         ba      __set_v4f_4
  1351.          nop
  1352.  
  1353.         .globl  _mesa_sparc_transform_points4_perspective
  1354. _mesa_sparc_transform_points4_perspective:
  1355.         ld      [%o2 + V4F_STRIDE], %o5
  1356.         LDPTR   [%o2 + V4F_START], %g1
  1357.         LDPTR   [%o0 + V4F_START], %g2
  1358.         ld      [%o2 + V4F_COUNT], %g3
  1359.  
  1360.         LDMATRIX_0_5_8_9_10_14(%o1)
  1361.  
  1362.         cmp     %g3, 0
  1363.         st      %g3, [%o0 + V4F_COUNT]
  1364.         be      2f
  1365.          clr    %o1
  1366.  
  1367. 1:      ld      [%g1 + 0x00], %f0       ! LSU   Group
  1368.         ld      [%g1 + 0x04], %f1       ! LSU   Group
  1369.         ld      [%g1 + 0x08], %f2       ! LSU   Group
  1370.         ld      [%g1 + 0x0c], %f3       ! LSU   Group
  1371.         add     %o1, 1, %o1             ! IEU0
  1372.         add     %g1, %o5, %g1           ! IEU1
  1373.         fmuls   %f0, M0, %f4            ! FGM
  1374.         fmuls   %f2, M8, %f7            ! FGM   Group
  1375.         fmuls   %f1, M5, %f5            ! FGM   Group
  1376.         fmuls   %f2, M9, %f8            ! FGM   Group
  1377.         fmuls   %f2, M10, %f6           ! FGM   Group   f4 available
  1378.         fmuls   %f3, M14, %f9           ! FGM   Group   f7 available
  1379.         fadds   %f4, %f7, %f4           ! FGA
  1380.         st      %f4, [%g2 + 0x00]       ! LSU
  1381.         fadds   %f5, %f8, %f5           ! FGA   Group   stall, f5, f8 available
  1382.         st      %f5, [%g2 + 0x04]       ! LSU
  1383.         fadds   %f6, %f9, %f6           ! FGA   Group   stall, f6, f9 available
  1384.         st      %f6, [%g2 + 0x08]       ! LSU
  1385.         fnegs   %f2, %f7                ! FGA   Group
  1386.         st      %f7, [%g2 + 0x0c]       ! LSU
  1387.         cmp     %o1, %g3                ! IEU1
  1388.         bne     1b                      ! CTI
  1389.          add    %g2, 0x10, %g2          ! IEU0  Group
  1390. 2:
  1391.         ba      __set_v4f_4
  1392.          nop
  1393.