[llvm-dev] Ok with mismatch between dead-markings in BUNDLE and bundled instructions?

Quentin Colombet via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 27 15:01:53 PDT 2017


> On Jun 27, 2017, at 2:51 PM, Matthias Braun via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> 
>> On Jun 27, 2017, at 2:44 PM, Krzysztof Parzyszek via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> 
>> On 6/27/2017 4:35 PM, Quentin Colombet via llvm-dev wrote:
>>> Yeah I was reading this as “only the non-touched part are dead”, and that’s what I’d like to see in the representation longer. Obviously, the register is not dead as a whole here :)
>> 
>> I think that having two defs for the same register, one dead and one not dead simply doesn't make sense. We already assume that a register is live if at least a part of it is live, so if it's "dead", it should mean that the whole thing is dead.
> Without subregister I would agree. However with subregisters and aliases in play you can express more situations. Like for example:
> 
>    %rax<dead>, %eax = ...
> 
> could mean the instruction writes the full rax register but we are only gonna read eax later.

That sounds like an alias to:
%rax<def-undef, subeax> = …

Which sounds fine. Though I am not suggesting we want to move to this dead model for such situation.

> That said I am not sure whether we actually need it, and if llvm works that way today. Given how subtle all of this is there is also a high danger that we won't get the bahviour consistent.

I agree that consistent behavior is important and I also think we probably cannot model what we want with the current representation. What I would like to see if that we don’t sit on potentially useful information, like this part of the register is dead, because it is convenient implementation-wise. I am not saying that’s what you're suggesting!
I agree that at the end of the day we want something that works and that is understandable. To me having the semantic of dead being this can be killed if the instruction does not have side effects sounded easy enough to understand.

What is your proposal for the semantic?

(IIRC the dead flag is required for values that are never used and the proposed fix somehow goes against that.)

> 
> - Matthias
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list