x86: Remove DI/SI registers from x86_64 integer return registers
The x86-64 ABI only uses AX/DX and XMM0/XMM1 for function returns, so GCC now reflects that.
GCC now limits the number of registers used for function return values to 2 in 64-bit mode, aligning with the x86-64 ABI. The DI and SI registers were removed from the x86_64_int_return_registers list. This change simplifies register allocation for return values and makes the code more maintainable by adhering to the ABI.
In Details
The x86-64 ABI specifies that only AX/DX register pairs and XMM0/XMM1 register pairs are used for function return values in 64-bit mode. The x86_64_int_return_registers array in config/i386/i386.cc incorrectly included DI and SI registers. This commit removes these registers and updates related functions like ix86_function_value_regno_p and function_value_64 to reflect the accurate ABI, improving code generation and maintainability.
For Context
When a function returns a value, the compiler needs to decide which registers to use to pass that value back to the caller. The x86-64 calling convention dictates that specific registers (AX/DX for integers, XMM0/XMM1 for floating-point) are used for this purpose. This commit updates GCC's internal representation of these rules to match the standard, ensuring correct code generation and interoperability with other tools and libraries that adhere to the same convention. This avoids potential issues with function calls returning incorrect values when compiled with GCC.