mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-21 18:54:02 +00:00

We now verify that memory access functions imported via JSON are indeed defined for the full iteration domain. Before this change we accidentally imported memory mappings such as i -> i / 127, which only defined a mapped for values of i that are evenly divisible by 127, but which did not define any mapping for the remaining values, with the result that isl just generated an access expression that had undefined behavior for all the unmapped values. In the incorrect test cases, we now either use floor(i/127) or we use p/127 and provide the information that p is indeed a multiple of 127. llvm-svn: 239024
38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
{
|
|
"context" : "[N, p] -> { : N >= -9223372036854775808 and N <= 9223372036854775807 and p >= -9223372036854775808 and p <= 9223372036854775807 and (p % 127) = 0}",
|
|
"name" : "for.cond => for.end",
|
|
"statements" : [
|
|
{
|
|
"accesses" : [
|
|
{
|
|
"kind" : "read",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_A[i0 % 127] }"
|
|
},
|
|
{
|
|
"kind" : "read",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_B[floor(i0 / 127)] }"
|
|
},
|
|
{
|
|
"kind" : "read",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_A[p % 127] }"
|
|
},
|
|
{
|
|
"kind" : "read",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_B[p / 127] }"
|
|
},
|
|
{
|
|
"kind" : "read",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_C[i0] }"
|
|
},
|
|
{
|
|
"kind" : "write",
|
|
"relation" : "[N, p] -> { Stmt_for_body[i0] -> MemRef_C[i0] }"
|
|
}
|
|
],
|
|
"domain" : "[N, p] -> { Stmt_for_body[i0] : i0 >= 0 and N >= 1 and i0 <= -1 + N }",
|
|
"name" : "Stmt_for_body",
|
|
"schedule" : "[N, p] -> { Stmt_for_body[i0] -> [i0] }"
|
|
}
|
|
]
|
|
}
|