.version 6.5
.target sm_30
.address_size 64

.visible .entry mad_s32(
	.param .u64 input,
	.param .u64 output
)
{
	.reg .u64 	    in_addr;
    .reg .u64 	    out_addr;
    .reg .s32 	    dst;
    .reg .s32 	    src1;
    .reg .s32 	    src2;
    .reg .s32 	    src3;

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

    ld.s32          src1, [in_addr];
    ld.s32          src2, [in_addr+4];
    ld.s32          src3, [in_addr+8];
	mad.lo.s32      dst, src1, src2, src3;
    st.s32          [out_addr], dst;
    st.s32          [out_addr+4], dst;
    st.s32          [out_addr+8], dst;
	ret;
}
