roy rosen <roy.1ro...@gmail.com> writes:

> I am trying to demonstrate my port capabilities.
> I am writing an application which needs to use instructions like max
> a,b,c,d,e,f where a,b,c are inputs and d,e,f are outputs.
> Is that possible to write an intrinsic function for that?
> I think not because that means that I need to pass d,e,f by reference
> which means that they would be in memory and not in a register as
> meant by the instruction.

That is correct.  An intrinsic function is a normal function.  If you
want it to have multiple outputs, you need to pass in addresses, or you
need to have it return a struct.

I'm a bit curious as to why a function named max would have multiple
outputs.

> Is there any port with such an example?

Not to my knowledge.  I wrote a private port in which some intrinsics
returned a struct, and to keep everything out of memory I added
additional intrinsics to retrieve elements of the struct.  It's awkward
to use but the resulting code is fine.

> So, I thought of implementing that with inline assembly but here I
> encounter a different problem: The compiler does not understand the
> instruction given in inline assembly and therefore it does not
> parallelize it with other insns.

Yes.

> Is there any other solution for that which I don't see?

I can't think of anything.

Ian

Reply via email to