================
@@ -2286,7 +2286,7 @@ let SVETargetGuard = "sve2p1", SMETargetGuard = 
InvalidMode in {
   def SVTBLQ : SInst<"svtblq[_{d}]", "ddu", "cUcsUsiUilUlbhfd", MergeNone, 
"aarch64_sve_tblq">;
   def SVTBXQ : SInst<"svtbxq[_{d}]", "dddu", "cUcsUsiUilUlbhfd", MergeNone, 
"aarch64_sve_tbxq">;
   // EXTQ
-  def EXTQ : SInst<"svextq[_{d}]", "dddk", "cUcsUsiUilUlbhfd", MergeNone, 
"aarch64_sve_extq", [], [ImmCheck<2, ImmCheck0_15>]>;
+  def EXTQ : SInst<"svextq[_{d}]", "dddk", "cUcsUsiUilUlbhfd", MergeNone, 
"aarch64_sve_extq", [], [ImmCheck<2, ImmCheckLaneIndex, 0>]>;
----------------
SpencerAbson wrote:

[`extq` 
](https://developer.arm.com/documentation/ddi0602/2024-09/SVE-Instructions/EXTQ--Extract-vector-segment-from-each-pair-of-quadword-vector-segments-?lang=en)
 differs from 
[`ext`](https://developer.arm.com/documentation/ddi0602/2024-09/SVE-Instructions/EXT--Extract-vector-from-pair-of-vectors-?lang=en)
 in that the immediate is relative to a single 128-bit vector segment, rather 
than the possibly 2048-bit vector.

We have `ImmCheckExtact` for `ext`:
>`def ImmCheckExtract             : ImmCheckType<2>;  // 
>0..(2048/sizeinbits(elt) - 1)`

But I believe we need to use `ImmCheckLaneIndex` here
> `def ImmCheckExtract             : ImmCheckType<2>;  // 
> 0..(2048/sizeinbits(elt) - 1)`

https://github.com/llvm/llvm-project/pull/115340
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to