labrinea added a comment.

In D94098#2865372 <https://reviews.llvm.org/D94098#2865372>, @efriedma wrote:

> I'm confused what your goal here is, exactly.  The point of allowing 512-bit 
> inline asm operands is presumably to allow writing efficient code involving 
> inline asm... but you're intentionally destroying any potential efficiency by 
> forcing it to be passed/returned in memory.  If the user wanted to do that, 
> they could just use an "m" constraint.
>
> It looks like SelectionDAG currently crashes if you try to pass an array as 
> an inline asm operand, but that should be possible to fix, I think.

I have explained in the description why I am doing this: i512 is not a 
qualified type and so it is not possible to emit the store instruction required 
for output operands (line 2650 in the original code of 
clang/lib/CodeGen/CGStmt.cpp). As I said clang has already tests in place for 
this case (clang/test/CodeGen/X86/x86_64-PR42672.c - function big_struct), so I 
don't see how I am destroying the efficient codegen, which only applies to 
small sized integers (because they have a qualified type). Can you suggest a 
better solution?

Regarding the Selection DAG, my patches https://reviews.llvm.org/D94096 and 
https://reviews.llvm.org/D94097 are adding support for this use case in the 
backend. @t.p.northover has raised a concern there too, so maybe my original 
set of patches (including a dedicated IR type) in the RFC 
https://lists.llvm.org/pipermail/llvm-dev/2020-November/146860.html were a 
better fit?


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

https://reviews.llvm.org/D94098

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to