¿Puedo usar las unidades AVX FMA para hacer multiplicaciones enteras de 52 bits con exactitud de bit?

AXV2 no tiene multiplicaciones de enteros con fuentes mayores de 32 bits. Sí ofrece32 x 32 -> 32 multiplica, así como32 x 32 -> 64$432 x 32 -> 325$

Digamos que necesito una multiplicación sin signo con entradas mayores de 32 bits, pero menores o iguales a 52 bits. ¿Puedo usar simplemente el punto flotante?DP multiplicar o instrucciones FMA, y ¿será la salida exacta en bits cuando las entradas enteras y los resultados se puedan representar en 52 bits o menos (es decir, en el rango [0, 2 ^ 52-1])?

¿Qué tal el caso más general donde quiero los 104 bits del producto? ¿O el caso en que el producto entero toma más de 52 bits (es decir, el producto tiene valores distintos de cero en índices de bits> 52), pero solo quiero los 52 bits bajos? En este último caso, elMUL me dará bits más altos y redondeará algunos de los bits más bajos (¿quizás eso es con lo que ayuda IFMA?).

Editar: de hecho, tal vez podría hacer cualquier cosa hasta 2 ^ 53, basado enesta respuesta - Había olvidado que el liderazgo implicado1 antes de que la mantisa efectivamente te dé otro bit.

1 Curiosamente, el producto de 64 bitsPMULDQ la operación tiene la mitad de la latencia y el doble del rendimiento de 32 bitsPMULLD versión, como Mysticialexplica en los comentarios

Respuestas a la pregunta(3)

Su respuesta a la pregunta