[llvm] [MachineVerifier] Improve G_EXTRACT_SUBVECTOR checking (PR #109202)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 18 15:30:38 PDT 2024


================
@@ -19,35 +20,35 @@ body:             |
     ; CHECK: Destination type must be a vector
     %5:_(s32) = G_EXTRACT_SUBVECTOR %2, 0
 
-    ; CHECK: First source must be a vector
+    ; CHECK: Source must be a vector
     %6:_(<vscale x 2 x s32>) = G_EXTRACT_SUBVECTOR %0, 0
 
     %7:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF
 
     ; CHECK: Element type of vectors must be the same
     %8:_(<vscale x 2 x s32>) = G_EXTRACT_SUBVECTOR %7, 0
 
-    ; CHECK: Index must be a multiple of the destination vector's minimum vector length
+    ; CHECK: Destination vector must be smaller than source vector
     %9:_(<vscale x 4 x s32>) = G_EXTRACT_SUBVECTOR  %1, 3
 
-    ; CHECK: Index must be a multiple of the destination vector's minimum vector length
+    ; CHECK: Destination vector must be smaller than source vector
     %10:_(<vscale x 4 x s32>) = G_EXTRACT_SUBVECTOR  %1, 2
 
-    ; CHECK: Source type and index must not cause extract to overrun to the destination type
+    ; CHECK: Destination type and index must not cause extract to overrun the source vector
     %11:_(<vscale x 1 x s32>) = G_EXTRACT_SUBVECTOR  %1, 4
 
     %12:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF
 
-    ; CHECK: Source type and index must not cause extract to overrun to the destination type
+    ; CHECK: Destination type and index must not cause extract to overrun the source vector
     %13:_(<vscale x 3 x s32>) = G_EXTRACT_SUBVECTOR  %12, 3
 
     %14:_(<2 x s32>) = G_IMPLICIT_DEF
     %15:_(<4 x s32>) = G_IMPLICIT_DEF
 
-    ; CHECK: Source type and index must not cause extract to overrun to the destination type
+    ; CHECK: Destination type and index must not cause extract to overrun the source vector
     %16:_(<2 x s32>) = G_EXTRACT_SUBVECTOR  %14, 4
 
-    ; CHECK: Source type and index must not cause extract to overrun to the destination type
+    ; CHECK: Destination type and index must not cause extract to overrun the source vector
----------------
topperc wrote:

The overrun is reading off the end of the source vector. The number of elements to read is determined by the destination, so you can't write too many elements to it.

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


More information about the llvm-commits mailing list