[PATCH] D73194: [FPEnv][ARM] Add lowering of STRICT_FSETCC and STRICT_FSETCCS

John Brawn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 31 05:38:10 PST 2020


john.brawn added a comment.

In D73194#1851155 <https://reviews.llvm.org/D73194#1851155>, @samparker wrote:

> Even when adding SDNPHasChain to the node description?


That was with SDNPHasChain. After some more investigation though it turns out the problem there was when I was generating the CMPFPE I was putting the chain at the end when it should be at the start, which means when ISel was happening it wasn't being moved to the end, which meant InstrEmitter wasn't noticing it and handling it correctly.

It turns out though that having chain and glue appears to have a different problem. After ISel we currently have:

    t22: i32,glue = VCMPS t3, t6, TargetConstant:i32<14>, Register:i32 $noreg
  t23: i32,glue = FMSTAT TargetConstant:i32<14>, Register:i32 $noreg, t22:1

but adding a chain we have:

    t20: i32,ch,glue = VCMPES t3, t6, TargetConstant:i32<14>, Register:i32 $noreg, t0
  t21: i32,glue = FMSTAT TargetConstant:i32<14>, Register:i32 $noreg, t20

FMSTAT is using t20 which is the i32 output of the VCMPES, but it should be using t20:2, the glue output of the VCMPES, and this causes problems later. I'm not sure what even is responsible for making this happen - it looks like it's either in the ARMGenDAGISel.inc table, or the code which interprets the table.


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

https://reviews.llvm.org/D73194





More information about the llvm-commits mailing list