================ @@ -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