.version 6.5 .target sm_30 .address_size 64 .visible .entry atom_cas( .param .u64 input, .param .u64 output ) { .reg .u64 in_addr; .reg .u64 out_addr; .reg .u32 temp1; .reg .u32 temp2; ld.param.u64 in_addr, [input]; ld.param.u64 out_addr, [output]; ld.u32 temp1, [in_addr]; atom.cas.b32 temp1, [in_addr+4], temp1, 100; ld.u32 temp2, [in_addr+4]; st.u32 [out_addr], temp1; st.u32 [out_addr+4], temp2; ret; }