[PATCH] D102842: [Verifier] Fail on invalid indices for {insert,extract} vector intrinsics
David Sherwood via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 21 04:48:31 PDT 2021
david-arm added inline comments.
================
Comment at: llvm/test/CodeGen/AArch64/sve-extract-vector.ll:15
; Goes through memory currently; idx != 0.
define <2 x i64> @extract_v2i64_nxv2i64_idx1(<vscale x 2 x i64> %vec) nounwind {
; CHECK-LABEL: extract_v2i64_nxv2i64_idx1:
----------------
I think the name needs updating to idx2 now?
================
Comment at: llvm/test/CodeGen/AArch64/sve-extract-vector.ll:48
; Goes through memory currently; idx != 0.
define <4 x i32> @extract_v4i32_nxv4i32_idx1(<vscale x 4 x i32> %vec) nounwind {
; CHECK-LABEL: extract_v4i32_nxv4i32_idx1:
----------------
Same here
================
Comment at: llvm/test/CodeGen/AArch64/sve-insert-vector.ll:112
; CHECK-NEXT: st1h { z0.h }, p0, [sp]
-; CHECK-NEXT: stur q1, [sp, #2]
+; CHECK-NEXT: str q1, [x9, x8]
; CHECK-NEXT: ld1h { z0.h }, p0/z, [sp]
----------------
This is just FYI and not caused by your patch, but suppose vscale = 1 and we clamp the index of 8 to 7. The `str q1, [x9, x8]` instruction actually ends up storing out 128 bits starting from index 7, which is beyond the end of temporary stack space. It looks like we could be corrupting the stack!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102842/new/
https://reviews.llvm.org/D102842
More information about the llvm-commits
mailing list