1. A computer implemented method comprising: decoding an instruction having fields for an address, a register location containing a set of indices, a register location for a mask comprising a set of mask elements, and a destination register location; executing the decoded instruction by: generating a set of addresses from the set of indices and the address field for at least each corresponding mask element having a first value; allocating storage in a buffer for each of the set of addresses being generated; copying a set of data elements corresponding to the set of addresses being generated to the buffer; and accessing an address from the set of addresses to store a corresponding data element if a corresponding mask element has said first value in the destination register location; and changing the values of corresponding mask elements from the first value to a second value responsive to completion of their respective stores.