Displaying 5 results from an estimated 5 matches for "trickty".
Did you mean:
tricksy
2013 May 10
4
[LLVMdev] Predicated Vector Operations
...k, VectorReg:$src1, VectorReg:$src2,
> VectorReg:$oldvalue),
> "add $dst {$mask}, $src1, $src2",
> [(set v16i32:$dst, (vselect v16i1:$mask, (add v16i32:$src1,
> v16i32:$src2), v16i32:$oldvalue))]>;
> }
Ok, but where does $oldvalue come from? That is the trickty part as far
as I can see and is why this isn't quite the same as handling
two-address instructions.
I agree that the pattern itself is straightforward. It's bascially what
I've written here.
-David
2013 May 10
0
[LLVMdev] Predicated Vector Operations
...g:$src2,
>> VectorReg:$oldvalue),
>> "add $dst {$mask}, $src1, $src2",
>> [(set v16i32:$dst, (vselect v16i1:$mask, (add v16i32:$src1,
>> v16i32:$src2), v16i32:$oldvalue))]>;
>> }
>
> Ok, but where does $oldvalue come from? That is the trickty part as far
> as I can see and is why this isn't quite the same as handling
> two-address instructions.
>From the semantics of your program?
%tx = select %mask, %x, <0.0, 0.0, 0.0 ...>
%ty = select %mask, %y, <0.0, 0.0, 0.0 ...>
%sum = fadd %tx, %ty
%newvalue = select %m...
2013 May 11
0
[LLVMdev] Predicated Vector Operations
...:$src2,
>> VectorReg:$oldvalue),
>> "add $dst {$mask}, $src1, $src2",
>> [(set v16i32:$dst, (vselect v16i1:$mask, (add v16i32:$src1,
>> v16i32:$src2), v16i32:$oldvalue))]>;
>> }
>
> Ok, but where does $oldvalue come from? That is the trickty part as far
> as I can see and is why this isn't quite the same as handling
> two-address instructions.
I may be missing some important detail here, but I assumed $oldvalue
and $dst were just SSA names for the same variable. For example,
given the following snippet for a compute kernel:...
2013 May 10
0
[LLVMdev] Predicated Vector Operations
Ah, I think I get it now. This was mentioned earlier in the thread,
but it didn't click at the time. It sounds like I can do instruction
selection with a pattern like (omitting selection of the sources):
let Constraints = "$dst = $oldvalue" in {
def MASKEDARITH : MyInstruction<
(outs VectorReg:$dst),
(ins MaskReg:$mask, VectorReg:$src1, VectorReg:$src2,
2013 May 09
2
[LLVMdev] Predicated Vector Operations
On May 9, 2013, at 3:05 PM, Jeff Bush <jeffbush001 at gmail.com> wrote:
> On Thu, May 9, 2013 at 8:10 AM, <dag at cray.com> wrote:
>> Jeff Bush <jeffbush001 at gmail.com> writes:
>>
>>> %tx = select %mask, %x, <0.0, 0.0, 0.0 ...>
>>> %ty = select %mask, %y, <0.0, 0.0, 0.0 ...>
>>> %sum = fadd %tx, %ty
>>> %newvalue