skan added a comment.

In D70157#1775481 <https://reviews.llvm.org/D70157#1775481>, @fedor.sergeev 
wrote:

> In D70157#1775016 <https://reviews.llvm.org/D70157#1775016>, @annita.zhang 
> wrote:
>
> > > The point is that we have explicit requirement at the start and we have a 
> > > lowering into 16-byte sequence that we need to be preserved exactly as it 
> > > is.
> > >  Essentially what we need is  a "protection" for this sequence from any 
> > > changes by machinery that generates the binary code.
> > >  How can we protect a particular byte sequence from being changed by this 
> > > branch aligner?
> >
> > No, in general we can't. The current solution is based on assembler to 
> > insert prefix or nop before the cross (or against) boundary branches. It 
> > can only ensure the explicit alignment specified by directive, but not any 
> > implicit alignment. I don't think any fixup based on assembler can do it. 
> > On the other hand, any code sequence after the alignment directive or even 
> > just in a function has some kind of implicit alignment. It's hard for 
> > assembler to tell which implicit alignment to preserve. The preferred way 
> > is to use explicit alignment directive to specify it.
> >
> > For your scenario, a NOP padding is more controllable. NOP padding will be 
> > inserted just before the branch instructions (or macro fusion branch 
> > instructions). So if there's no branches (or macro fusion branches) in your 
> > code sequence, there will be no NOP inserted.
>
>
> What if I insert explicit align(8) right *after* the sequence?


If your insert explicit `.align 8` after the sequence, and the sequence doesn't 
has any branch to be aligned, the current solution won't change the sequence.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70157/new/

https://reviews.llvm.org/D70157



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to