| 166 | } |
| 167 | |
| 168 | static ExprId GetFloat(LowLevelILFunction& il, InstructionOperand& operand, int float_sz) |
| 169 | { |
| 170 | if (operand.operandClass == FIMM32) |
| 171 | { |
| 172 | switch (float_sz) |
| 173 | { |
| 174 | case 2: |
| 175 | return il.FloatConstRaw(2, operand.immediate); |
| 176 | case 4: |
| 177 | return il.FloatConstSingle(*(float*)&(operand.immediate)); |
| 178 | case 8: |
| 179 | return il.FloatConstDouble(*(float*)&(operand.immediate)); |
| 180 | default: |
| 181 | break; |
| 182 | } |
| 183 | } |
| 184 | else if (operand.operandClass == REG) |
| 185 | { |
| 186 | return il.FloatConvert( |
| 187 | float_sz, ExtractRegister(il, operand, 0, REGSZ_O(operand), false, REGSZ_O(operand))); |
| 188 | } |
| 189 | |
| 190 | return il.Unimplemented(); |
| 191 | } |
| 192 | |
| 193 | static ExprId GetShiftedRegister( |
| 194 | LowLevelILFunction& il, InstructionOperand& operand, size_t regNum, size_t resultSize) |
no test coverage detected