[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