The x86-64 instruction set can execute 64-bit * 64-bit up to 128 bits using one command ( mul for unsigned imul for each of them with one operand), so I would say that to some extent this x86 instruction set includes some support for 128-bit integers.
If your instruction set does not have instructions for 64-bit * from 64-bit to 128-bit, you need a few instructions to emulate this .
This is why 128-bit * 128-bit for lower 128-bit operations can be performed with small instructions from x86-64. For example, using GCC
__int128 mul(__int128 a, __int128 b) { return a*b; }
creates this assembly
imulq %rdx, %rsi movq %rdi, %rax imulq %rdi, %rcx mulq %rdx addq %rsi, %rcx addq %rcx, %rdx
which uses one 64-bit * 64-bit and 128-bit instructions, two 64-bit * 64-bit and lower 64-bit instructions, and two 64-bit add-ons.
source share