Visible to Intel only — GUID: iga1409260938251
Ixiasoft
Visible to Intel only — GUID: iga1409260938251
Ixiasoft
2.3.3.1. Floating Point Custom Instruction 2 Component
- Add
- Subtract
- Multiply
- Divide
- Square root
- Comparison
- Integer conversion
- Minimum
- Maximum
- Negate
- Absolute
Other floating-point operations (including double-precision operations) are implemented with software emulation. The component requires the following device resources:
- ~2,500 4-input LEs
- 9 x 9 bit multipliers
- 3x M9K memories
In the following table, a and b are assumed to be single-precision floating-point values.
Operation 2 | N 3 | Cycles | Result | Subnormal | Rounding | GCC Inference |
---|---|---|---|---|---|---|
fdivs | 255 | 16 | a ÷ b | Flush to 0 | Nearest | a / b |
fsubs | 254 | 5 | a – b | Flush to 0 | Faithful | a – b |
fadds | 253 | 5 | a + b | Flush to 0 | Faithful | a + b |
fmuls | 252 | 4 | a x b | Flush to 0 | Faithful | a * b |
fsqrts | 251 | 8 | Flush to 0 | Faithful | sqrtf() 4 | |
floatis | 250 | 4 | int_to_float(a) | Not applicable | Not applicable | Casting |
fixsi | 249 | 2 | float_to_int(a) | Flush to 0 | Truncation | Casting |
round | 248 | 2 | float_to_int(a) | Flush to 0 | Nearest | lroundf()4 |
Reserved | 234 to 247 | Undefined | Undefined | |||
fmins | 233 | 1 | (a < b) ? a : b | Supported | None | fminf()4 |
fmaxs | 232 | 1 | (a < b) ? b : a | Supported | None | fmaxf()4 |
fcmplts | 231 | 1 | (a < b) ? 1 : 0 | Supported | None | a < b |
fcmples | 230 | 1 | (a ≤ b) ? 1 : 0 | Supported | None | a <= b |
fcmpgts | 229 | 1 | (a > b) ? 1 : 0 | Supported | None | a > b |
fcmpges | 228 | 1 | (a ≥ b) ? 1 : 0 | Supported | None | a >= b |
fcmpeqs | 227 | 1 | (a = b) ? 1 : 0 | Supported | None | a == b |
fcmpnes | 226 | 1 | (a ≠ b) ? 1 : 0 | Supported | None | a != b |
fnegs | 225 | 1 | -a | Supported | None | -a |
fabss | 224 | 1 | |a| | Supported | None | fabsf() |
The cycles column specifies the number of cycles required to execute the instruction. A combinatorial custom instruction takes 1 cycle. A multi-cycle custom instruction requires at least 2 cycles. An N-cycle multi-cycle custom instruction has N - 2 register stages inside the custom instruction because the Nios II processor registers the result from the custom instruction and allows another cycle for g wire delays in the source operand bypass multiplexers. The number of cycles does not include the extra cycles (maximum of 2) that an instruction following the multi-cycle custom instruction is stalled by the Nios II/f if the instruction uses the result within 2 cycles. These extra cycles occur because multi-cycle instructions are late result instructions
In Qsys, the Floating Point Hardware 2 component is under Embedded Processors on the Component Library tab.
The Nios II Software Build Tools (SBT) include software support for the Floating Point Custom Instruction 2 component. When the Floating Point Custom Instruction 2 component is present in hardware, the Nios II compiler compiles the software codes to use the custom instructions for floating point operations.