Skip to content

[POLYBENCH][CASE STUDY] trmm: use outer indvars as inner bounds #21

@kumasento

Description

@kumasento
  for (i = 0; i < _PB_M; i++)
     for (j = 0; j < _PB_N; j++) {
        for (k = i+1; k < _PB_M; k++)
           B[i][j] += A[k][i] * B[k][j];
        B[i][j] = alpha * B[i][j];
     }

Plain LLVM failed to process this -

ERROR: [SYNCHK 200-43] in function 'kernel_trmm': use or assignment of a non-static pointer 'indvars' (this pointer may refer to different memory locations).
ERROR: [SYNCHK 200-41] in function 'kernel_trmm': unsupported pointer reinterpretation from type 'i64*' to type '[600 x i64]*' on variable 'indvars'

After polyhedral transformation it could work -

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions