gromero commented on issue #13856: URL: https://github.com/apache/tvm/issues/13856#issuecomment-1413860335
> > @Mousius haha ok, that explains all :-) well, not all exactly, I confess I'm still intrigued by the "impossible constraint" error. Of course the define `-DARM_MATH_AUTOVECTORIZE` avoids the inline asm in question, but I could not make sense why the constraint is impossible here. I'm wondering if it's due to a register allocation issue in this particular function where the inline asm is... > > Update on this, it's the use of `-mfloat-abi=hard`, this leads me to think that the compiler is using up more of the registers which the `asm` block would be using rather than passing in soft float mode thinking @Mousius yeah, interesting. Also the `Te` constraint will force using just the even registers from `r0` to `r14` accordingly to this [doc](https://developer.arm.com/documentation/101754/0617/armclang-Reference/armclang-Inline-Assembler/Inline-assembly-constraint-strings/Constraint-codes-for-AArch32-state?lang=en). But I have neither looked at the generated asm code for that function nor checked exactly why that constraint is in place for those machine instructions. I realized also that if `r14` is removed from the clobber list at least one more `Te` constraint is allowed (does not throw the impossible constraint error), which also points to lack of general purpose registers in the inline asm scope. I'm not sure if gcc autovectorizing is kicking in and doing better than this inline asm. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
