Moves data depending on the flag condition.
The following can be specified for imm4:
The cmov machine instruction takes an immediate value in the range of 0 to 15 (0x0 to 0xF) as the first operand. |
The following can be specified for imm:
Compares the flag condition indicated by the value of the lower 4 bits of the value of the constant expression specified by the first operand with the current flag condition. If a match is found, the register value specified by the second operand is stored in the register specified by the fourth operand; otherwise, the register value specified by the third operand is stored in the register specified by the fourth operand.
Compares the flag condition indicated by the value of the lower 4 bits of the constant expression specified by the first operand with the current flag condition. If a match is found, the value of the absolute expression specified by the second operand is stored in the register specified by the fourth operand; otherwise, the register value specified by the third operand is stored in the register specified by the fourth operand.
Compares the flag condition indicated by string cnd with the current flag condition. If a match is found, the register value specified by the first operand is stored in the register specified by the third operand; otherwise, the register value specified by the second operand is stored in the register specified by the third operand.
Compares the flag condition indicated by string cnd with the current flag condition. If a match is found, the value of the absolute expression specified by the first operand is stored in the register specified by the third operand; otherwise, the register value specified by the second operand is stored in the register specified by the third operand.
If the instruction is executed in syntax "cmov imm4, reg1, reg2, reg3", the assembler generates one cmov machine instructionNote. |
The cmov machine instruction takes a register or immediate value in the range of -16 to +15 (0xFFFFFFF0 to 0xF) as the second operand. |
If the following is specified as imm in syntax "cmov imm4, imm, reg2, reg3", the assembler generates one cmov machine instruction. |
If the following is specified as imm in syntax "cmov imm4, imm, reg2, reg3", the assembler executes instruction expansion to generate multiple machine instructions. |
Absolute expression exceeding the range of -16 to +15, but within the range of -32,768 to +32,767 |
If all the lower 16 bits of the value of imm are 0
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
Relative expression having !label or %label, or that having $label for a label with a definition in the sdata/sbss-attribute section |
If the instruction is executed in syntax "cmovcnd reg1, ret2, reg3", the assembler generates the corresponding cmov instruction (see "Table 5.31 cmovcnd Instruction List") and converts it to syntax "cmov imm4, reg1, reg2, reg3". |
If the following is specified as imm in syntax "cmovcnd imm, reg2, reg3", the assembler generates the corresponding cmov instruction (see "Table 5.31 cmovcnd Instruction List") and converts it to syntax "cmov imm4, imm, reg2, reg3". |
If the following is specified as imm in syntax "cmovcnd imm, reg2, reg3", the assembler converts it to syntax "cmov imm4, imm, reg2, reg3", and executes instruction expansion to generate multiple machine instructions. |
Absolute expression exceeding the range of -16 to +15, but within the range of -32,768 to +32,767 |
If all the lower 16 bits of the value of imm are 0
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
Relative expression having !label or %label, or that having $label for a label with a definition in the sdata/sbss-attribute section |
If a constant expression having a value exceeding 4 bits is specified as imm4 of the cmov instruction, the assembler outputs the following message. |