On Sunday, 18 July 2021 at 16:32:46 UTC, Basile B. wrote:
Yeah I can confirm it's aweful. Took me hours to understand how to use it a bit (my PL has [an interface](https://styx-lang.gitlab.io/styx/primary_expressions.html#asmexpression) for LLVM asm)

You need to add a "x" to the constraint string

    return __asm!int4("paddd $1,$0","=x,x,x",a, b);

- **=x** says "returns in whatever is has to"
- **x** (1) is the constraint for input `a`, which is passed as operand **$0** - **x** (2) is the constraint for input `b`, which is passed as operand **$1**

So the thing to get is that the output constraint does not consume anything else, it is standalone.

Thanks.

Indeed that seems to work even when inline and optimized. Registers are spilled to stack. A minor concern is what happens when the enclosing function is extern(C) => https://d.godbolt.org/z/s6dM3a3de
I need to check that more...

Reply via email to