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]

Reply via email to