Ho dato un'occhiata al manuale dello sviluppatore del software x64 e sembra che le istruzioni {MIN | MAX} {S | P} {S | D} incorporate non implementino le funzioni chiamate minNum e maxNum nello standard IEEE 754, nonostante Intel sostenga nello stesso documento che le proprie CPU sono pienamente conformi.Architettura Intel e conformità IEEE 754 (minNum e maxNum)?
operazioniIntel restituiscono sempre il secondo operando se uno degli operandi è un QNAN e nessuno dei due è uno Snan, mentre minNum e MAXNUM restituiscono il altro operando, vale a dire:
IEE 754:
minNum(1.0, QNaN) -> 1.0
minNum(QNaN, 1.0) -> 1.0
Intel x64:
MIN(1.0, QNaN) -> QNaN
MIN(QNaN, 1.0) -> 1.0
Ho ragione che di serie -le funzioni minNum/maxNum conformi devono essere emulate con un'ulteriore verifica del primo operando e non possono essere tradotte direttamente nelle istruzioni corrispondenti?
tutti * * pretese di essere compatibile con IEEE 754 ... –
Ricerca di 'IEEE' nel manuale di riferimento di istruzioni Intel trova un paio di casi in cui è fatto riferimento per istruzioni legacy x87: 'FPREM' (resto) arrotonda in modo diverso da IEEE, ma' FPREM1' "calcola il resto specificato nello standard IEEE 754". Quindi credo che nel corso della giornata, Intel ha aggiunto una nuova versione di un'istruzione per fare l'arrotondamento al modo specificato da IEEE. È possibile che possano introdurre nuove versioni delle istruzioni SSE 'min' e' max', dal momento che probabilmente c'è spazio per altri opcode negli spazi di codifica VEX (AVX) ed EVEX (AVX512). –