[clang] [llvm] [AArch64][llvm] Add support for FEAT_HINTE for Armv9.6 onwards (PR #206905)

Jonathan Thackray via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 1 08:56:38 PDT 2026


================
@@ -192,6 +192,13 @@ std::string AArch64SysReg::genericRegisterString(uint32_t Bits) {
          utostr(CRm) + "_" + utostr(Op2);
 }
 
+bool AArch64SysReg::isHINTESystemRegisterEncoding(uint32_t Bits) {
----------------
jthackray wrote:

Yes, it's because the `HINTE` encoding space overlaps with the system register encoding space. It's related to your change https://github.com/llvm/llvm-project/pull/185709 (but which you reverted in https://github.com/llvm/llvm-project/pull/201137) but slightly different as you removed bit 20, whereas this change only carves out the `HINTE` space.

Without it, `hinte #0` disassembles to `msr S0_0_C2_C0_0, x0`:
```
  printf '[0x00,0x20,0x00,0xd5]\n' | llvm-mc -triple=aarch64 -disassemble --mattr=-hinte --show-encoding
	msr	S0_0_C2_C0_0, x0                // encoding: [0x00,0x20,0x00,0xd5]
```
and with it:
```
%   printf '[0x00,0x20,0x00,0xd5]\n' | rel/bin/llvm-mc -triple=aarch64 -disassemble --mattr=+hinte --show-encoding
	hinte	#0                              // encoding: [0x00,0x20,0x00,0xd5]
```

https://github.com/llvm/llvm-project/pull/206905


More information about the cfe-commits mailing list