i386: Unify predicate check for ACE tmm register
Simplifies register checking for ACE builtins on i386, fixing a bug with non-constant operands.
This commit refactors the ix86_expand_ace_builtin function on the i386 architecture to unify the predicate check for the tmm register. It revises the logic to avoid an unnecessary INTVAL check when operands are not constant, resolving a bug reported in PR127264. A new test case is included to verify the fix.
In Details
The ix86_expand_ace_builtin function's logic for checking the validity of tmm registers used with ACE (Advanced Cryptography Engine) builtins has been unified. Previously, it performed an INTVAL check even for non-constant operands, which was unnecessary and potentially problematic. This change simplifies the predicate logic, ensuring the check is only applied when appropriate and resolving PR127264.
- i386
- The original 32-bit Intel x86 instruction set architecture. Compilers often target specific microarchitectural features or extensions on top of this base.
- ACE
- Advanced Cryptography Engine, a set of hardware instructions on some Intel processors designed to accelerate cryptographic operations.
- tmm register
- A specific register on the x86 architecture, likely related to Intel's Total Memory Management or a similar feature, used in conjunction with ACE instructions.
- predicate check
- A condition or test within the compiler that determines if a certain operation or code generation path is valid or applicable, often based on operand types, values, or target architecture features.
- INTVAL
- Likely refers to an internal compiler representation or check for integer constant values of operands.