Lines Matching defs:operand
63 /* Extracts an operand value from an instruction. */
66 s390_extract_operand (unsigned char *insn, const struct s390_operand *operand)
71 /* Extract fragments of the operand byte for byte. */
72 insn += operand->shift / 8;
73 bits = (operand->shift & 7) + operand->bits;
83 val &= ((1U << (operand->bits - 1)) << 1) - 1;
86 if (operand->bits == 20 && operand->shift == 20)
89 /* Sign extend value if the operand is signed or pc relative. */
90 if ((operand->flags & (S390_OPERAND_SIGNED | S390_OPERAND_PCREL))
91 && (val & (1U << (operand->bits - 1))))
92 val |= (-1U << (operand->bits - 1)) << 1;
94 /* Double value if the operand is pc relative. */
95 if (operand->flags & S390_OPERAND_PCREL)
99 if (operand->flags & S390_OPERAND_LENGTH)
155 const struct s390_operand *operand;
181 operand = s390_operands + *opindex;
182 value = s390_extract_operand (buffer, operand);
184 if ((operand->flags & S390_OPERAND_INDEX) && value == 0)
186 if ((operand->flags & S390_OPERAND_BASE) &&
196 if (operand->flags & S390_OPERAND_GPR)
198 else if (operand->flags & S390_OPERAND_FPR)
200 else if (operand->flags & S390_OPERAND_AR)
202 else if (operand->flags & S390_OPERAND_CR)
204 else if (operand->flags & S390_OPERAND_PCREL)
206 else if (operand->flags & S390_OPERAND_SIGNED)
211 if (operand->flags & S390_OPERAND_DISP)
215 else if (operand->flags & S390_OPERAND_BASE)