A method of processing values in a data processing system, the method comprising: receiving a plurality of sub-instructions of an instruction of a program, wherein the instruction defines a plurality of operations, and wherein each of the sub-instructions defines a constituent operation of the plurality of operations; receiving an indication for at least one intermediate value generated by execution of one of the sub-instructions that indicates whether the intermediate value is to be stored in a general purpose register; determining whether the intermediate value is forwarded to a previous execution stage from another execution stage that executed the sub-instruction that generated the intermediate value, wherein the previous execution stage and the other execution stage that generated the intermediate value are arranged in a pipeline structure; determining whether the intermediate value is to be stored in the GPR based at least in part on the received indication and the determination of whether the intermediate value is forwarded to the previous execution stage; and one of: avoiding the storage of the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is forwarded to the previous execution stage, storing the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is not forwarded to the previous execution stage, or storing the intermediate value in the GPR if the received indication indicates that the intermediate value is to be stored in the GPR. receiving a plurality of sub-instructions of an instruction of a program, wherein the instruction defines a plurality of operations, and wherein each of the sub-instructions defines a constituent operation of the plurality of operations; receiving an indication for at least one intermediate value generated by execution of one of the sub-instructions that indicates whether the intermediate value is to be stored in a general purpose register; determining whether the intermediate value is forwarded to a previous execution stage from another execution stage that executed the sub-instruction that generated the intermediate value, wherein the previous execution stage and the other execution stage that generated the intermediate value are arranged in a pipeline structure; determining whether the intermediate value is to be stored in the GPR based at least in part on the received indication and the determination of whether the intermediate value is forwarded to the previous execution stage; and one of: avoiding the storage of the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is forwarded to the previous execution stage, storing the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is not forwarded to the previous execution stage, or storing the intermediate value in the GPR if the received indication indicates that the intermediate value is to be stored in the GPR. avoiding the storage of the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is forwarded to the previous execution stage, storing the intermediate value in the GPR if the received indication indicates that the intermediate value is not to be stored in the GPR and it is determined that the intermediate value is not forwarded to the previous execution stage, or storing the intermediate value in the GPR if the received indication indicates that the intermediate value is to be stored in the GPR.