[llvm-dev] Endianness for multi-word types
Tim Shen via llvm-dev
llvm-dev at lists.llvm.org
Tue Dec 1 15:00:24 PST 2015
On Tue, Dec 1, 2015 at 2:00 PM Tim Northover <t.p.northover at gmail.com>
> On 1 December 2015 at 13:41, Tim Shen via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> > As a simple solution, when see a LLVM IR bitcast, instead of generating
> > (ISD::BITCAST x), can we generate (exchange_hi_lo (ISD::BITCAST x))
> An LLVM bitcast is defined to be equivalent to a store/load pair.
> Changing that for ISD::BITCAST would be very surprising, and I
> wouldn't recommend it. It's a very useful invariant for reasoning
> about what should happen.
> When we had to work around similar endian nightmares in ARM I think we
> ended up creating AArch64ISD::NVCAST to represent a true nop cast.
This works as well, so:
(bitcast (fabs x)) -> (exchange_hi_lo (and (nvcast x) (not signbit))).
Should I move AArch64ISD::NVCAST to ISD?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev