via llvm-dev
2021-Jan-29 04:12 UTC
[llvm-dev] Q. about GlobalISel and order of instructions
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
Quentin Colombet via llvm-dev
2021-Jan-29 18:32 UTC
[llvm-dev] Q. about GlobalISel and order of instructions
Hi Paul, Thanks for the heads-up!> On Jan 28, 2021, at 8:12 PM, via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > 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.That’s definitely broken!> > If the order I'm seeing is wrong (and it's just a standard dump > of a MachineFunction) then can somebody fix it?Are these the tests you marked as FIXME in the PR you’ve linked? Cheers, -Quentin> It will sure > make a lot less churn in the unittest. > > Thanks, > --paulr > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev