Subversion Repositories Kolibri OS

Rev

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

  1. /*
  2.  * SPARC assembly matrix code.
  3.  */
  4.  
  5. #ifndef _SPARC_MATRIX_H
  6. #define _SPARC_MATRIX_H
  7.  
  8. #ifdef __arch64__
  9. #define LDPTR           ldx
  10. #define MAT_M           0x00
  11. #define MAT_INV         0x08
  12. #define V4F_DATA        0x00
  13. #define V4F_START       0x08
  14. #define V4F_COUNT       0x10
  15. #define V4F_STRIDE      0x14
  16. #define V4F_SIZE        0x18
  17. #define V4F_FLAGS       0x1c
  18. #else
  19. #define LDPTR           ld
  20. #define MAT_M           0x00
  21. #define MAT_INV         0x04
  22. #define V4F_DATA        0x00
  23. #define V4F_START       0x04
  24. #define V4F_COUNT       0x08
  25. #define V4F_STRIDE      0x0c
  26. #define V4F_SIZE        0x10
  27. #define V4F_FLAGS       0x14
  28. #endif
  29.  
  30. #define VEC_SIZE_1      1
  31. #define VEC_SIZE_2      3
  32. #define VEC_SIZE_3      7
  33. #define VEC_SIZE_4      15
  34.  
  35. #define M0              %f16
  36. #define M1              %f17
  37. #define M2              %f18
  38. #define M3              %f19
  39. #define M4              %f20
  40. #define M5              %f21
  41. #define M6              %f22
  42. #define M7              %f23
  43. #define M8              %f24
  44. #define M9              %f25
  45. #define M10             %f26
  46. #define M11             %f27
  47. #define M12             %f28
  48. #define M13             %f29
  49. #define M14             %f30
  50. #define M15             %f31
  51.  
  52. #define LDMATRIX_0_1_2_3_12_13_14_15(BASE)      \
  53.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  54.         ldd     [BASE + ( 2 * 0x4)], M2;        \
  55.         ldd     [BASE + (12 * 0x4)], M12;       \
  56.         ldd     [BASE + (14 * 0x4)], M14
  57.  
  58. #define LDMATRIX_0_1_12_13(BASE)                \
  59.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  60.         ldd     [BASE + (12 * 0x4)], M12
  61.  
  62. #define LDMATRIX_0_12_13(BASE)                  \
  63.         ld      [BASE + ( 0 * 0x4)], M0;        \
  64.         ldd     [BASE + (12 * 0x4)], M12
  65.  
  66. #define LDMATRIX_0_1_2_12_13_14(BASE)           \
  67.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  68.         ld      [BASE + ( 2 * 0x4)], M2;        \
  69.         ldd     [BASE + (12 * 0x4)], M12;       \
  70.         ld      [BASE + (14 * 0x4)], M14
  71.  
  72. #define LDMATRIX_0_12_13_14(BASE)               \
  73.         ld      [BASE + ( 0 * 0x4)], M0;        \
  74.         ldd     [BASE + (12 * 0x4)], M12;       \
  75.         ld      [BASE + (14 * 0x4)], M14
  76.  
  77. #define LDMATRIX_0_14(BASE)                     \
  78.         ld      [BASE + ( 0 * 0x4)], M0;        \
  79.         ld      [BASE + (14 * 0x4)], M14
  80.  
  81. #define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \
  82.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  83.         ldd     [BASE + ( 2 * 0x4)], M2;        \
  84.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  85.         ldd     [BASE + ( 6 * 0x4)], M6;        \
  86.         ldd     [BASE + (12 * 0x4)], M12;       \
  87.         ldd     [BASE + (14 * 0x4)], M14
  88.  
  89. #define LDMATRIX_0_5_12_13(BASE)                \
  90.         ld      [BASE + ( 0 * 0x4)], M0;        \
  91.         ld      [BASE + ( 5 * 0x4)], M5;        \
  92.         ldd     [BASE + (12 * 0x4)], M12
  93.  
  94. #define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE)   \
  95.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  96.         ldd     [BASE + ( 2 * 0x4)], M2;        \
  97.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  98.         ld      [BASE + ( 6 * 0x4)], M6;        \
  99.         ldd     [BASE + (12 * 0x4)], M12;       \
  100.         ld      [BASE + (14 * 0x4)], M14
  101.  
  102. #define LDMATRIX_0_5_12_13_14(BASE)             \
  103.         ld      [BASE + ( 0 * 0x4)], M0;        \
  104.         ld      [BASE + ( 5 * 0x4)], M5;        \
  105.         ldd     [BASE + (12 * 0x4)], M12;       \
  106.         ld      [BASE + (14 * 0x4)], M14
  107.  
  108. #define LDMATRIX_0_5_14(BASE)                   \
  109.         ld      [BASE + ( 0 * 0x4)], M0;        \
  110.         ld      [BASE + ( 5 * 0x4)], M5;        \
  111.         ld      [BASE + (14 * 0x4)], M14
  112.  
  113. #define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \
  114.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  115.         ldd     [BASE + ( 2 * 0x4)], M2;        \
  116.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  117.         ldd     [BASE + ( 6 * 0x4)], M6;        \
  118.         ldd     [BASE + ( 8 * 0x4)], M8;        \
  119.         ldd     [BASE + (10 * 0x4)], M10;       \
  120.         ldd     [BASE + (12 * 0x4)], M12;       \
  121.         ldd     [BASE + (14 * 0x4)], M14
  122.  
  123. #define LDMATRIX_0_1_4_5_12_13(BASE)            \
  124.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  125.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  126.         ldd     [BASE + (12 * 0x4)], M12
  127.  
  128. #define LDMATRIX_0_5_12_13(BASE)                \
  129.         ld      [BASE + ( 0 * 0x4)], M0;        \
  130.         ld      [BASE + ( 5 * 0x4)], M5;        \
  131.         ldd     [BASE + (12 * 0x4)], M12
  132.  
  133. #define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \
  134.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  135.         ld      [BASE + ( 2 * 0x4)], M2;        \
  136.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  137.         ld      [BASE + ( 6 * 0x4)], M6;        \
  138.         ldd     [BASE + ( 8 * 0x4)], M8;        \
  139.         ld      [BASE + (10 * 0x4)], M10
  140.  
  141. #define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \
  142.         ldd     [BASE + ( 0 * 0x4)], M0;        \
  143.         ld      [BASE + ( 2 * 0x4)], M2;        \
  144.         ldd     [BASE + ( 4 * 0x4)], M4;        \
  145.         ld      [BASE + ( 6 * 0x4)], M6;        \
  146.         ldd     [BASE + ( 8 * 0x4)], M8;        \
  147.         ld      [BASE + (10 * 0x4)], M10;       \
  148.         ldd     [BASE + (12 * 0x4)], M12;       \
  149.         ld      [BASE + (14 * 0x4)], M14
  150.  
  151. #define LDMATRIX_0_5_10(BASE)                   \
  152.         ld      [BASE + ( 0 * 0x4)], M0;        \
  153.         ld      [BASE + ( 5 * 0x4)], M5;        \
  154.         ld      [BASE + (10 * 0x4)], M10;       \
  155.  
  156. #define LDMATRIX_0_5_10_12_13_14(BASE)          \
  157.         ld      [BASE + ( 0 * 0x4)], M0;        \
  158.         ld      [BASE + ( 5 * 0x4)], M5;        \
  159.         ld      [BASE + (10 * 0x4)], M10;       \
  160.         ldd     [BASE + (12 * 0x4)], M12;       \
  161.         ld      [BASE + (14 * 0x4)], M14
  162.  
  163. #define LDMATRIX_0_5_8_9_10_14(BASE)            \
  164.         ld      [BASE + ( 0 * 0x4)], M0;        \
  165.         ld      [BASE + ( 5 * 0x4)], M5;        \
  166.         ldd     [BASE + ( 8 * 0x4)], M8;        \
  167.         ld      [BASE + (10 * 0x4)], M10;       \
  168.         ld      [BASE + (14 * 0x4)], M14
  169.  
  170. #endif /* !(_SPARC_MATRIX_H) */
  171.