search for: idx_2

Displaying 6 results from an estimated 6 matches for "idx_2".

Did you mean: idx_r
2019 Jul 23
2
[RFC] A new multidimensional array indexing intrinsic
...esentation of what's being proposed would help. > > Here's a best guess, switching the indexed base type to a non-integer for illustration purposes: > > %arrayidx = call i64 @llvm.multidim.array.index.i64.p0f64.i64.i64.i64.i64 double* %A, i64 %str_1, i64 %idx_1, i64 %str_2, i64 %idx_2 > > According to the RFC, that would get lowered to this: > > %mul1 = mul nsw i64 %str_1, %idx_1 > %mul2 = mul1 nsw i64 %str_2, %idx_2 > %total = add nsw i64 %mul2, %mul1 > %arrayidx = getelementptr inbounds double, double* %A, i64 %total, !multidim !1 > > The pro...
2019 Jul 22
1
[RFC] A new multidimensional array indexing intrinsic
...= llvm.multidim.array.index.* <ty> <ty>* <ptrval> {<stride>, <idx>}* > > It isn't clear to me what that means. The later example is also in a somewhat generalized form: > > %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2 > > Trying to expand this into something concrete it looks to me like the extra value-less type argument ('i64' immediately following the intrinsic name) won't work, and if I'm reading it correctly that's a necessary element. The GEP instruction accepts a raw type as a pse...
2019 Jul 22
2
[RFC] A new multidimensional array indexing intrinsic
...he index expression computed by the lowered GEP is guaranteed to be in a canonical form which allows the analysis > to infer stride and index sizes. > > A multidim index of the form: > ``` > %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2 > ``` > > is lowered to: > > ``` > %mul1 = mul nsw i64 %str_1, %idx_1 > %mul2 = mul1 nsw i64 %str_2, %idx_2 > %total = add nsw i64 %mul2, %mul1 > %arrayidx = getelementptr inbounds i64, i64* %A, i64 %total, !multidim !1 > ``` > wi...
2019 Jul 21
6
[RFC] A new multidimensional array indexing intrinsic
...data. This metadata will indicate that the index expression computed by the lowered GEP is guaranteed to be in a canonical form which allows the analysis to infer stride and index sizes. A multidim index of the form: ``` %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2 ``` is lowered to: ``` %mul1 = mul nsw i64 %str_1, %idx_1 %mul2 = mul1 nsw i64 %str_2, %idx_2 %total = add nsw i64 %mul2, %mul1 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %total, !multidim !1 ``` with guarantees that the first term in each multiplication is the stride and the second ter...
2019 Jul 22
2
[RFC] A new multidimensional array indexing intrinsic
...ndex expression computed by the lowered GEP is guaranteed to be in a canonical form which allows the analysis >> to infer stride and index sizes. >> >> A multidim index of the form: >> ``` >> %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2 >> ``` >> >> is lowered to: >> >> ``` >> %mul1 = mul nsw i64 %str_1, %idx_1 >> %mul2 = mul1 nsw i64 %str_2, %idx_2 >> %total = add nsw i64 %mul2, %mul1 >> %arrayidx = getelementptr inbounds i64, i64* %A, i64 %total, !multidim !1 >> ``` &gt...
2019 Jul 25
0
[RFC] A new multidimensional array indexing intrinsic
...uted by the lowered GEP is guaranteed to be in a canonical form which allows the analysis >>> to infer stride and index sizes. >>> >>> A multidim index of the form: >>> ``` >>> %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2 >>> ``` >>> >>> is lowered to: >>> >>> ``` >>> %mul1 = mul nsw i64 %str_1, %idx_1 >>> %mul2 = mul1 nsw i64 %str_2, %idx_2 >>> %total = add nsw i64 %mul2, %mul1 >>> %arrayidx = getelementptr inbounds i64, i64* %A, i64 %...