[llvm-dev] Liveness of AL, AH and AX in x86 backend
Quentin Colombet via llvm-dev
llvm-dev at lists.llvm.org
Wed May 25 12:22:02 PDT 2016
> On May 25, 2016, at 11:44 AM, Krzysztof Parzyszek <kparzysz at codeaurora.org> wrote:
>
> On 5/25/2016 12:35 PM, Quentin Colombet wrote:
>>
>> Doing that would say that we override the other lanes of EAX, which is
>> not what we want. In what cases, do we need to add those implicit arguments?
>
> If you had
> AL<def> = ...
> AH<def> = ...
> ... = AX
>
> you'd need implicit uses/defs to define AX.
I see. We would need that support if we would spill the value only partially, which we don’t :).
> This sort of thing happens on Hexagon very often: general purpose registers can be paired into 64-bit registers (and used as a whole in 64-bit instructions) and it is not uncommon that the elements of the pair will be defined individually.
>
> In the above case you'd need something like
> AL<def> = ..., AX<imp-def>
> AH<def> = ..., AX<imp-def>, AX<imp-use>
> ... = AX
>
> I was trying to replicate a similar situation in the X86 backend to see what it would do.
Sounds hard to reproduce.
> However, this is not needed anymore, because subregister liveness tracking looks very promising in eliminating this problem altogether. Now, if only the anti-dep problem was fixed, things would look peachy... :)
Heh.
>
> -Krzysztof
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
More information about the llvm-dev
mailing list