13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * SPARC assembly matrix code. 33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef _SPARC_MATRIX_H 63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define _SPARC_MATRIX_H 73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __arch64__ 93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDPTR ldx 103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MAT_M 0x00 113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MAT_INV 0x08 123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_DATA 0x00 133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_START 0x08 143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_COUNT 0x10 153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_STRIDE 0x14 163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_SIZE 0x18 173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_FLAGS 0x1c 183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#else 193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDPTR ld 203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MAT_M 0x00 213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MAT_INV 0x04 223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_DATA 0x00 233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_START 0x04 243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_COUNT 0x08 253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_STRIDE 0x0c 263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_SIZE 0x10 273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define V4F_FLAGS 0x14 283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VEC_SIZE_1 1 313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VEC_SIZE_2 3 323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VEC_SIZE_3 7 333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VEC_SIZE_4 15 343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M0 %f16 363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M1 %f17 373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M2 %f18 383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M3 %f19 393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M4 %f20 403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M5 %f21 413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M6 %f22 423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M7 %f23 433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M8 %f24 443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M9 %f25 453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M10 %f26 463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M11 %f27 473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M12 %f28 483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M13 %f29 493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M14 %f30 503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define M15 %f31 513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ 533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 2 * 0x4)], M2; \ 553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (14 * 0x4)], M14 573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_12_13(BASE) \ 593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12 613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_12_13(BASE) \ 633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12 653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_12_13_14(BASE) \ 673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 2 * 0x4)], M2; \ 693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_12_13_14(BASE) \ 733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_14(BASE) \ 783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \ 823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 2 * 0x4)], M2; \ 843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 6 * 0x4)], M6; \ 863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (14 * 0x4)], M14 883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_12_13(BASE) \ 903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12 933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ 953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 2 * 0x4)], M2; \ 973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 6 * 0x4)], M6; \ 993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 1003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_12_13_14(BASE) \ 1033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 1063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_14(BASE) \ 1093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \ 1143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 1153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 2 * 0x4)], M2; \ 1163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 1173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 6 * 0x4)], M6; \ 1183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 8 * 0x4)], M8; \ 1193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (10 * 0x4)], M10; \ 1203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 1213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (14 * 0x4)], M14 1223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_4_5_12_13(BASE) \ 1243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 1253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 1263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12 1273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_12_13(BASE) \ 1293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12 1323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \ 1343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 1353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 2 * 0x4)], M2; \ 1363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 1373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 6 * 0x4)], M6; \ 1383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 8 * 0x4)], M8; \ 1393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (10 * 0x4)], M10 1403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ 1423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 0 * 0x4)], M0; \ 1433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 2 * 0x4)], M2; \ 1443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 4 * 0x4)], M4; \ 1453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 6 * 0x4)], M6; \ 1463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 8 * 0x4)], M8; \ 1473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (10 * 0x4)], M10; \ 1483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 1493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_10(BASE) \ 1523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (10 * 0x4)], M10; \ 1553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_10_12_13_14(BASE) \ 1573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (10 * 0x4)], M10; \ 1603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + (12 * 0x4)], M12; \ 1613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define LDMATRIX_0_5_8_9_10_14(BASE) \ 1643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 0 * 0x4)], M0; \ 1653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + ( 5 * 0x4)], M5; \ 1663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ldd [BASE + ( 8 * 0x4)], M8; \ 1673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (10 * 0x4)], M10; \ 1683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ld [BASE + (14 * 0x4)], M14 1693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* !(_SPARC_MATRIX_H) */ 171