Methods, apparatuses, and systems are presented for updating data in
memory while executing multiple threads of instructions, involving
receiving a single instruction from one of a plurality of concurrently
executing threads of instructions, in response to the single instruction
received, reading data from a specific memory location, performing an
operation involving the data read from the memory location to generate a
result, and storing the result to the specific memory location, without
requiring separate load and store instructions, and in response to the
single instruction received, precluding another one of the plurality of
threads of instructions from altering data at the specific memory
location while reading of the data from the specific memory location,
performing the operation involving the data, and storing the result to
the specific memory location.