.version 6.5
.target sm_30
.address_size 64

.func (.reg .f32 out) foobar(.reg .f32 x, .reg .f32 y)
{
    add.f32     out, x, y;
    ret;
}

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

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

    ld.u64          temp, [in_addr];
	add.u64		    temp2, temp, 1;
    mov.u64         f_addr, foobar;
    add.u64		    temp2, temp2, f_addr;
    st.u64          [out_addr], temp2;
	ret;
}
