[llvm-dev] Q. about GlobalISel and order of instructions
    via llvm-dev 
    llvm-dev at lists.llvm.org
       
    Thu Jan 28 20:12:14 PST 2021
    
    
  
Hello Global ISel fans,
I am trying to patch up some unittests that accidentally weren't
actually running (https://reviews.llvm.org/D95257).  A number of
these look like all the right instructions are coming out, but
they aren't "in the right order."  That is, I see some tests
expect something along the lines of
    %2:_(s16) = G_TRUNC
    %3:_(s10) = G_TRUNC %2:_(s16)
    %4:_(s10) = G_SEXT_INREG %3:_(s10)
    %5:_(s16) = G_SEXT %4:_(s10)
That is, each instruction feeds nicely into the next one.
But what I'm actually seeing is reordered:
    %5:_(s16) = G_SEXT %4:_(s10)
    %2:_(s16) = G_TRUNC
    %4:_(s10) = G_SEXT_INREG %3:_(s10)
    %3:_(s10) = G_TRUNC %2:_(s16)
Now, I can certainly patch up the test to match the order I see,
but...  Is that actually correct?  Naively it looks like we have
uses preceding defs, which just looks weird.
If the order I'm seeing is wrong (and it's just a standard dump
of a MachineFunction) then can somebody fix it?  It will sure
make a lot less churn in the unittest.
Thanks,
--paulr
    
    
More information about the llvm-dev
mailing list