Atomic Operations: new value?

Hi,
I know that using atomic operations the returned value is the old values of memory location, how can I have the new value?

// Min Example

old_val = atomicMin(address, val);

new_val = min(val, old_val);

// Add Example

old_val = atomicAdd(address, val);

new_val = val + old_val;

... and so on ...