[LLVMdev] Handling Masked Vector Operations
Nadav Rotem
nrotem at apple.com
Thu May 2 09:48:55 PDT 2013
Hi David,
>
> It seems the only solution is to create an intrinsic:
>
> llvm_int_load_masked mask, [addr]
>
> But this unnecessarily shuts down optimization.
>
I think that using intrinsics is the right solution. I imagine that most interesting load/store optimizations happen before vectorization, so I am not sure how much we can gain by optimizing masked load/stores.
> Similar problems exist with any trapping instruction (div, mod, etc.).
> It gets even worse when you consider than any floating point operation
> can trap on a signalling NaN input.
For DIV/MOD you can blend the inputs BEFORE the operation. You can place ones or zeros depending on the operation.
>
> So are there any ideas out there for how to efficiently handle this?
> We've talked about llvm and masks before and it's clear that there is
> strong resistance to adding masks to the IR.
Yes. I think that the consensus is that we don't need to predicate the IR itself to support MIC-like processors.
Thanks,
Nadav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130502/22bbda6f/attachment.html>
More information about the llvm-dev
mailing list