[syntax tree] added syntactic support for dereferencing

This commit is contained in:
Philippe Tillet
2019-01-10 23:53:27 -05:00
parent b5c8c25d43
commit 80d019ec16
12 changed files with 128 additions and 45 deletions

View File

@@ -20,19 +20,25 @@ extern translation_unit *ast_root;
const char src[] =
"\
void test(fp32 *A, fp32 *B, fp32 *C, int32 M, int32 N, int32 K){\
void test(fp32 *a, fp32 *b, fp32 *c, int32 M, int32 N, int32 K){\
int32 rx[16] = get_global_range[16](0);\
int32 ry[16] = get_global_range[16](1);\
int32 rk[8] = 0 ... 8;\
fp32 c[16, 16] = 0;\
int32 rka[8] = 0 ... 8;\
int32 rkb[8] = 0 ... 8;\
fp32 C[16, 16] = 0;\
int32 k;\
fp32* pa[16, 8] = A + rx[:, newaxis] + rk[newaxis, :]*M;\
fp32* pb[16, 8] = B + ry[:, newaxis] + rk[newaxis, :]*K;\
fp32* pa[16, 8] = a + rx[:, newaxis] + rka[newaxis, :]*M;\
fp32* pb[16, 8] = b + ry[:, newaxis] + rkb[newaxis, :]*K;\
fp32* pc[16, 16];\
for(k = 0; k < K; k = k + 8){\
fp32 a[16, 8] = *pa;\
fp32 b[16, 8] = *pb;\
pa = pa + 8;\
fp32 A[16, 8] = *pa;\
fp32 B[16, 8] = *pb;\
C = dot(A, B, C);\
pa = pa + 8*M;\
pb = pb + 8*K;\
}\
pc = c + rx[:, newaxis] + ry[newaxis, :];\
*pc = C;\
}\
";