19a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul/* 29a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul * SPARC assembly matrix code. 39a90cd40c6e510484e018afd087a4c239b616ee0Brian Paul */ 4775355a88a0927e2e3a855036c26950397a61d7bdavem 5775355a88a0927e2e3a855036c26950397a61d7bdavem#ifndef _SPARC_MATRIX_H 6775355a88a0927e2e3a855036c26950397a61d7bdavem#define _SPARC_MATRIX_H 7775355a88a0927e2e3a855036c26950397a61d7bdavem 89f23a3a1bff6c8af93e651273c9887bbf119f555Ian Romanick#ifdef __arch64__ 9775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDPTR ldx 10775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_M 0x00 11775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_INV 0x08 12775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_DATA 0x00 13775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_START 0x08 14775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_COUNT 0x10 15775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_STRIDE 0x14 16775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_SIZE 0x18 17775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_FLAGS 0x1c 18775355a88a0927e2e3a855036c26950397a61d7bdavem#else 19775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDPTR ld 20775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_M 0x00 21775355a88a0927e2e3a855036c26950397a61d7bdavem#define MAT_INV 0x04 22775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_DATA 0x00 23775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_START 0x04 24775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_COUNT 0x08 25775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_STRIDE 0x0c 26775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_SIZE 0x10 27775355a88a0927e2e3a855036c26950397a61d7bdavem#define V4F_FLAGS 0x14 28775355a88a0927e2e3a855036c26950397a61d7bdavem#endif 29775355a88a0927e2e3a855036c26950397a61d7bdavem 30775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_1 1 31775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_2 3 32775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_3 7 33775355a88a0927e2e3a855036c26950397a61d7bdavem#define VEC_SIZE_4 15 347943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 357943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M0 %f16 367943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M1 %f17 377943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M2 %f18 387943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M3 %f19 397943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M4 %f20 407943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M5 %f21 417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M6 %f22 427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M7 %f23 437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M8 %f24 447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M9 %f25 457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M10 %f26 467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M11 %f27 477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M12 %f28 487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M13 %f29 497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M14 %f30 507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define M15 %f31 517943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 527943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ 537943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 547943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 2 * 0x4)], M2; \ 557943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (14 * 0x4)], M14 577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_12_13(BASE) \ 597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12 617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_12_13(BASE) \ 637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12 657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_12_13_14(BASE) \ 677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 2 * 0x4)], M2; \ 697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 707943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 717943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 727943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_12_13_14(BASE) \ 737943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 747943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 757943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 767943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 777943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_14(BASE) \ 787943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 797943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 807943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 817943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \ 827943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 837943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 2 * 0x4)], M2; \ 847943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 4 * 0x4)], M4; \ 857943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 6 * 0x4)], M6; \ 867943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 877943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (14 * 0x4)], M14 887943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 897943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13(BASE) \ 907943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 917943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 927943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12 937943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 947943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ 957943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 967943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 2 * 0x4)], M2; \ 977943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 4 * 0x4)], M4; \ 987943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 6 * 0x4)], M6; \ 997943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 1007943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1017943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1027943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13_14(BASE) \ 1037943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 1047943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 1057943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 1067943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1077943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1087943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_14(BASE) \ 1097943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 1107943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 1117943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1127943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1137943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \ 1147943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 1157943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 2 * 0x4)], M2; \ 1167943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 4 * 0x4)], M4; \ 1177943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 6 * 0x4)], M6; \ 1187943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 8 * 0x4)], M8; \ 1197943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (10 * 0x4)], M10; \ 1207943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 1217943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (14 * 0x4)], M14 1227943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1237943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_4_5_12_13(BASE) \ 1247943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 1257943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 4 * 0x4)], M4; \ 1267943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12 1277943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1287943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_12_13(BASE) \ 1297943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 1307943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 1317943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12 1327943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 133775355a88a0927e2e3a855036c26950397a61d7bdavem#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \ 134775355a88a0927e2e3a855036c26950397a61d7bdavem ldd [BASE + ( 0 * 0x4)], M0; \ 135775355a88a0927e2e3a855036c26950397a61d7bdavem ld [BASE + ( 2 * 0x4)], M2; \ 136775355a88a0927e2e3a855036c26950397a61d7bdavem ldd [BASE + ( 4 * 0x4)], M4; \ 137775355a88a0927e2e3a855036c26950397a61d7bdavem ld [BASE + ( 6 * 0x4)], M6; \ 138775355a88a0927e2e3a855036c26950397a61d7bdavem ldd [BASE + ( 8 * 0x4)], M8; \ 139775355a88a0927e2e3a855036c26950397a61d7bdavem ld [BASE + (10 * 0x4)], M10 140775355a88a0927e2e3a855036c26950397a61d7bdavem 1417943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ 1427943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 0 * 0x4)], M0; \ 1437943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 2 * 0x4)], M2; \ 1447943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 4 * 0x4)], M4; \ 1457943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 6 * 0x4)], M6; \ 1467943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 8 * 0x4)], M8; \ 1477943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (10 * 0x4)], M10; \ 1487943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 1497943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1507943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1516f365c21d796310a9ea70d8420e6879eb5abb6aedavem#define LDMATRIX_0_5_10(BASE) \ 1526f365c21d796310a9ea70d8420e6879eb5abb6aedavem ld [BASE + ( 0 * 0x4)], M0; \ 1536f365c21d796310a9ea70d8420e6879eb5abb6aedavem ld [BASE + ( 5 * 0x4)], M5; \ 1546f365c21d796310a9ea70d8420e6879eb5abb6aedavem ld [BASE + (10 * 0x4)], M10; \ 1556f365c21d796310a9ea70d8420e6879eb5abb6aedavem 1567943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_10_12_13_14(BASE) \ 1577943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 1587943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 1597943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (10 * 0x4)], M10; \ 1607943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + (12 * 0x4)], M12; \ 1617943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1627943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 1637943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul#define LDMATRIX_0_5_8_9_10_14(BASE) \ 1647943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 0 * 0x4)], M0; \ 1657943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + ( 5 * 0x4)], M5; \ 1667943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ldd [BASE + ( 8 * 0x4)], M8; \ 1677943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (10 * 0x4)], M10; \ 1687943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul ld [BASE + (14 * 0x4)], M14 1697943b349d696f8030f0d2f836ad42a762f4c6026Brian Paul 170775355a88a0927e2e3a855036c26950397a61d7bdavem#endif /* !(_SPARC_MATRIX_H) */ 171