Hi Guys,

In LLVM codegen,a typical binary operation instruction is defined something like below:

" def _rr: NVPTXInst<(outs Int1Regs:$dst), (ins Int1Regs:$a, Int1Regs:$b),

“xor.pred \t$dst, $a, $b;”,

[(set Int1Regs:$dst, (OpNode Int1Regs:$a, Int1Regs:$b))]>;

“

which takes two inputs and write the result to the $dst register.

Then how to define a binary instruction which returns two results, one is written to the $dst register, and the other one is written to one of the inputs? I mean, to implement something like:

”

Type sincos( Type input, Type * cosVal)

“

the instruction will compute sin and cos value of input, return the sin result and write the cos result to cosVal.

Is there anything special constraints or something I should put onto the cos register?

Best

Kevin