Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

Proposal "Big Integer" Instructions

Sirisian
Beginner
294 Views

This is more of a discussion, not a real proposal, because I can't find anyone familiar with this topic. I'll keep this short.

For some background I've had code I wrote over a decade ago that performs integer-only computation in order to bypass floating point issues. (To get exact results). The issue is one piece of it requires up to 512-bit integer math.

The basic operations I'd want for unsigned values (though I understand signed might be more useful) are addition, subtraction, multiplication, and division/modulus. 512 might complicate this without 1024-bit registers?

I'd also like comparison operators and associated conditional move instructions.

    ADD SUB MUL DIV CMP CMOVcc
128  1   1   1   1   1   30
256  1   1   1   1   1   30
512  1   1   1   1   1   30

I don't actually need all the 90 CMOVcc variants, but I'd understand if the standards process forces an all or nothing implementation.

My goal with these new instructions would be performance related as such operations require a lot of instructions.

Have such extensions been proposed before? Is there a fundamental issue (like the carry operations)? Or is it a lack of uses to justify the opcode complexity? Or lack of compiler interest? Or something else?

 

If this is viable now, is there a way to find engineers that could create a formal proposal to push this through Intel and AMD's process for new extensions?

0 Kudos
1 Reply
Thomas_W_Intel
Employee
32 Views

Most likely such instructions have not been implemented  because there is no high demand for them. In other words, the die area for an efficient implementation is rather spent on other features. Instead other instructions have been realized to support the software implementation of long integer arithmetic, e.g. ADX and MULX. See New Instructions Supporting Large Integer Arithmetic on Intel® Architecture Processors for examples how to use them.

You might also want to check is libraries like GMP can serve your needs.

0 Kudos
Reply