.version 6.5
.target sm_30
.address_size 64

.func (.reg .u64 a, .reg .u64 b) do_something(
    .reg .u64 x
)
{
    add.u64 a, x, 1;
    add.u64 b, x, 2;
    ret;
}

.visible .entry multiple_return(
    .param .u64 input,
    .param .u64 output
)
{
    .reg .u64    in_addr;
    .reg .u64    out_addr;
    .reg .u64    temp;
    .reg .u64    temp2;
    .reg .u64    temp3;

    ld.param.u64 in_addr, [input];
    ld.param.u64 out_addr, [output];

    ld.u64       temp, [in_addr];
    call         (temp2, temp3), do_something, (temp);
    st.u64       [out_addr], temp2;
    st.u64       [out_addr+8], temp3;
    ret;
}
