[llvm] [RFC][IR] Support vector splats in `ConstantPointerNull` (PR #195486)
via llvm-commits
llvm-commits at lists.llvm.org
Sat May 2 15:55:09 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 134109 tests passed
* 3223 tests skipped
* 12 tests failed
## Failed Tests
(click on a test name to see its output)
### LLVM
<details>
<summary>LLVM.CodeGen/AArch64/arm64_32.ll</summary>
```
Exit Code: 2
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=arm64_32-apple-ios7.0 C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll -filetype=obj -o - -disable-post-ra -frame-pointer=non-leaf | c:\_work\llvm-project\llvm-project\build\bin\llvm-objdump.exe --private-headers - | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll --check-prefix=CHECK-MACHO
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=arm64_32-apple-ios7.0 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' -filetype=obj -o - -disable-post-ra -frame-pointer=non-leaf
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-objdump.exe' --private-headers -
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' --check-prefix=CHECK-MACHO
# note: command had no output on stdout or stderr
# RUN: at line 4
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=arm64_32-apple-ios7.0 C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll -o - -aarch64-enable-atomic-cfg-tidy=0 -disable-post-ra -frame-pointer=non-leaf | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll --check-prefix=CHECK --check-prefix=CHECK-OPT
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=arm64_32-apple-ios7.0 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' -o - -aarch64-enable-atomic-cfg-tidy=0 -disable-post-ra -frame-pointer=non-leaf
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' --check-prefix=CHECK --check-prefix=CHECK-OPT
# note: command had no output on stdout or stderr
# RUN: at line 5
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=arm64_32-apple-ios7.0 C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll -o - -fast-isel -aarch64-enable-atomic-cfg-tidy=0 -disable-post-ra -frame-pointer=non-leaf | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll --check-prefix=CHECK --check-prefix=CHECK-FAST
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=arm64_32-apple-ios7.0 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' -o - -fast-isel -aarch64-enable-atomic-cfg-tidy=0 -disable-post-ra -frame-pointer=non-leaf
# .---command stderr------------
# | Assertion failed: VT == MVT::i64 && "Expected 64-bit pointers", file C:\_work\llvm-project\llvm-project\llvm\lib\Target\AArch64\AArch64FastISel.cpp, line 541
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
# | Stack dump:
# | 0. Program arguments: c:\\_work\\llvm-project\\llvm-project\\build\\bin\\llc.exe -mtriple=arm64_32-apple-ios7.0 C:\\_work\\llvm-project\\llvm-project\\llvm\\test\\CodeGen\\AArch64\\arm64_32.ll -o - -fast-isel -aarch64-enable-atomic-cfg-tidy=0 -disable-post-ra -frame-pointer=non-leaf
# | 1. Running pass 'Function Pass Manager' on module 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll'.
# | 2. Running pass 'AArch64 Instruction Selection' on function '@test_pointer_vec_store'
# | Exception Code: 0xC000001D
# | #0 0x00007ff627da5626 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2de5626)
# | #1 0x00007ff9d997bb04 (C:\Windows\System32\ucrtbase.dll+0x7bb04)
# | #2 0x00007ff9d997cad1 (C:\Windows\System32\ucrtbase.dll+0x7cad1)
# | #3 0x00007ff9d997e4a1 (C:\Windows\System32\ucrtbase.dll+0x7e4a1)
# | #4 0x00007ff9d997e6e1 (C:\Windows\System32\ucrtbase.dll+0x7e6e1)
# | #5 0x00007ff6296e719b (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x472719b)
# | #6 0x00007ff627e0def8 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2e4def8)
# | #7 0x00007ff627e0dc25 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2e4dc25)
# | #8 0x00007ff6296ec2d7 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x472c2d7)
# | #9 0x00007ff627e18ee1 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2e58ee1)
# | #10 0x00007ff6256a0f3b (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x6e0f3b)
# | #11 0x00007ff62569dd25 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x6ddd25)
# | #12 0x00007ff62569ada4 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x6dada4)
# | #13 0x00007ff625a659d3 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0xaa59d3)
# | #14 0x00007ff6254aaa59 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4eaa59)
# | #15 0x00007ff6254b34ed (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4f34ed)
# | #16 0x00007ff6254ab6d8 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4eb6d8)
# | #17 0x00007ff624fc747f (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x747f)
# | #18 0x00007ff629939390 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4979390)
# | #19 0x00007ff9df904cb0 (C:\Windows\System32\KERNEL32.DLL+0x14cb0)
# | #20 0x00007ff9ebd5edcb (C:\Windows\SYSTEM32\ntdll.dll+0x7edcb)
# `-----------------------------
# error: command failed with exit status: 0xc000001d
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll' --check-prefix=CHECK --check-prefix=CHECK-FAST
# .---command stderr------------
# | FileCheck error: '<stdin>' is empty.
# | FileCheck command line: c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\arm64_32.ll --check-prefix=CHECK --check-prefix=CHECK-FAST
# `-----------------------------
# error: command failed with exit status: 2
--
```
</details>
<details>
<summary>LLVM.Transforms/CodeGenPrepare/AArch64/reduce-or-opt.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -codegenprepare -S < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll -mtriple=aarch64-none-linux-gnu -mattr=+sve | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -codegenprepare -S -mtriple=aarch64-none-linux-gnu -mattr=+sve
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll:13:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[COND:%.*]] = icmp eq <2 x ptr> [[WIDE_LOAD]], zeroinitializer
# | ^
# | <stdin>:13:53: note: scanning from here
# | %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:13:53: note: with "WIDE_LOAD" equal to "%wide.load"
# | %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:14:2: note: possible intended match here
# | %cond = icmp eq <2 x ptr> %wide.load, splat (ptr null)
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll:51:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[COND:%.*]] = icmp eq <2 x ptr> [[WIDE_LOAD]], zeroinitializer
# | ^
# | <stdin>:33:53: note: scanning from here
# | %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:33:53: note: with "WIDE_LOAD" equal to "%wide.load"
# | %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:34:2: note: possible intended match here
# | %cond = icmp eq <2 x ptr> %wide.load, splat (ptr null)
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll:99:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[COND:%.*]] = icmp eq <vscale x 2 x ptr> [[WIDE_LOAD]], zeroinitializer
# | ^
# | <stdin>:59:62: note: scanning from here
# | %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:59:62: note: with "WIDE_LOAD" equal to "%wide.load"
# | %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:60:2: note: possible intended match here
# | %cond = icmp eq <vscale x 2 x ptr> %wide.load, splat (ptr null)
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll:143:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[COND:%.*]] = icmp eq <vscale x 2 x ptr> [[WIDE_LOAD]], zeroinitializer
# | ^
# | <stdin>:83:62: note: scanning from here
# | %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:83:62: note: with "WIDE_LOAD" equal to "%wide.load"
# | %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | ^
# | <stdin>:84:2: note: possible intended match here
# | %cond = icmp eq <vscale x 2 x ptr> %wide.load, splat (ptr null)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\CodeGenPrepare\AArch64\reduce-or-opt.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 8: br label %vector.body
# | 9:
# | 10: vector.body: ; preds = %vector.body, %entry
# | 11: %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
# | 12: %arrayidx = getelementptr inbounds ptr, ptr %src, i64 %index
# | 13: %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | next:13'0 X error: no match found
# | next:13'1 with "WIDE_LOAD" equal to "%wide.load"
# | 14: %cond = icmp eq <2 x ptr> %wide.load, splat (ptr null)
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:13'2 ? possible intended match
# | 15: %index.next = add nuw i64 %index, 2
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 16: %or.reduc = tail call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> %cond)
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 17: %iv.cmp = icmp eq i64 %index.next, 4
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 18: %exit.cond = or i1 %or.reduc, %iv.cmp
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 19: br i1 %exit.cond, label %middle.split, label %vector.body
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 28: br label %vector.body
# | 29:
# | 30: vector.body: ; preds = %vector.body, %entry
# | 31: %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
# | 32: %arrayidx = getelementptr inbounds ptr, ptr %src, i64 %index
# | 33: %wide.load = load <2 x ptr>, ptr %arrayidx, align 8
# | next:51'0 X error: no match found
# | next:51'1 with "WIDE_LOAD" equal to "%wide.load"
# | 34: %cond = icmp eq <2 x ptr> %wide.load, splat (ptr null)
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:51'2 ? possible intended match
# | 35: %index.next = add nuw i64 %index, 2
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 36: %or.reduc = tail call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> %cond)
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 37: %iv.cmp = icmp eq i64 %index.next, 4
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 38: %exit.cond = or i1 %or.reduc, %iv.cmp
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 39: br i1 %exit.cond, label %middle.split, label %vector.body
# | next:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 54: br label %vector.body
# | 55:
# | 56: vector.body: ; preds = %vector.body, %entry
# | 57: %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
# | 58: %arrayidx = getelementptr inbounds ptr, ptr %src, i64 %index
# | 59: %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | next:99'0 X error: no match found
# | next:99'1 with "WIDE_LOAD" equal to "%wide.load"
# | 60: %cond = icmp eq <vscale x 2 x ptr> %wide.load, splat (ptr null)
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:99'2 ? possible intended match
# | 61: %0 = tail call i64 @llvm.vscale.i64()
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 62: %1 = shl nuw nsw i64 %0, 1
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 63: %index.next = add nuw i64 %index, %1
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 64: %or.reduc = tail call i1 @llvm.vector.reduce.or.nxv2i1(<vscale x 2 x i1> %cond)
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 65: %iv.cmp = icmp eq i64 %index.next, 4
# | next:99'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 78: br label %vector.body
# | 79:
# | 80: vector.body: ; preds = %vector.body, %entry
# | 81: %index = phi i64 [ 0, %entry ], [ %index.next, %vector.body ]
# | 82: %arrayidx = getelementptr inbounds ptr, ptr %src, i64 %index
# | 83: %wide.load = load <vscale x 2 x ptr>, ptr %arrayidx, align 8
# | next:143'0 X error: no match found
# | next:143'1 with "WIDE_LOAD" equal to "%wide.load"
# | 84: %cond = icmp eq <vscale x 2 x ptr> %wide.load, splat (ptr null)
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:143'2 ? possible intended match
# | 85: %0 = tail call i64 @llvm.vscale.i64()
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 86: %1 = shl nuw nsw i64 %0, 1
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 87: %index.next = add nuw i64 %index, %1
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 88: %or.reduc = tail call i1 @llvm.vector.reduce.or.nxv2i1(<vscale x 2 x i1> %cond)
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 89: %iv.cmp = icmp eq i64 %index.next, 4
# | next:143'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/LoopVectorize/AArch64/epilog-vectorization-widen-inductions.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes='loop-vectorize' -force-vector-width=4 -enable-epilogue-vectorization -epilogue-vectorization-force-VF=2 -S C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=loop-vectorize -force-vector-width=4 -enable-epilogue-vectorization -epilogue-vectorization-force-VF=2 -S 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:22:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne <4 x ptr> [[VECTOR_GEP]], zeroinitializer
# | ^
# | <stdin>:22:78: note: scanning from here
# | %step.add = getelementptr i8, <4 x ptr> %vector.gep, <4 x i64> splat (i64 4)
# | ^
# | <stdin>:22:78: note: with "VECTOR_GEP" equal to "%vector.gep"
# | %step.add = getelementptr i8, <4 x ptr> %vector.gep, <4 x i64> splat (i64 4)
# | ^
# | <stdin>:23:2: note: possible intended match here
# | %2 = icmp ne <4 x ptr> %vector.gep, splat (ptr null)
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:138:114: error: undefined variable: PROF3
# | ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
# | ^
# | <stdin>:132:53: note: with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:132:53: note: with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:132:53: note: with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:168:2: note: possible intended match here
# | br i1 %exitcond, label %exit, label %loop, !llvm.loop !8
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:222:114: error: undefined variable: PROF3
# | ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
# | ^
# | <stdin>:212:53: note: with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:212:53: note: with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:212:53: note: with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:239:2: note: possible intended match here
# | br i1 %cmp.n11, label %exit, label %vec.epilog.scalar.ph
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:305:114: error: undefined variable: PROF3
# | ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
# | ^
# | <stdin>:291:53: note: with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:291:53: note: with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:291:53: note: with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:331:2: note: possible intended match here
# | br i1 %exitcond, label %exit, label %loop, !llvm.loop !14
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:417:92: error: undefined variable: PROF3
# | ; CHECK-NEXT: br i1 true, label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
# | ^
# | <stdin>:381:23: note: with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | vec.epilog.iter.check: ; preds = %middle.block
# | ^
# | <stdin>:381:23: note: with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | vec.epilog.iter.check: ; preds = %middle.block
# | ^
# | <stdin>:403:2: note: possible intended match here
# | br i1 true, label %exit, label %vec.epilog.scalar.ph
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll:504:114: error: undefined variable: PROF3
# | ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
# | ^
# | <stdin>:460:53: note: with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:460:53: note: with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:460:53: note: with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | ^
# | <stdin>:485:2: note: possible intended match here
# | br i1 %cmp.n10, label %exit, label %vec.epilog.scalar.ph
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\epilog-vectorization-widen-inductions.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 17: vector.body: ; preds = %vector.body, %vector.ph
# | 18: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
# | 19: %pointer.phi = phi ptr [ %ptr.start.1, %vector.ph ], [ %ptr.ind, %vector.body ]
# | 20: %vector.gep = getelementptr i8, ptr %pointer.phi, <4 x i64> <i64 0, i64 1, i64 2, i64 3>
# | 21: %1 = extractelement <4 x ptr> %vector.gep, i64 0
# | 22: %step.add = getelementptr i8, <4 x ptr> %vector.gep, <4 x i64> splat (i64 4)
# | next:22'0 X error: no match found
# | next:22'1 with "VECTOR_GEP" equal to "%vector.gep"
# | 23: %2 = icmp ne <4 x ptr> %vector.gep, splat (ptr null)
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:22'2 ? possible intended match
# | 24: %3 = extractelement <4 x i1> %2, i64 0
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 25: %4 = extractelement <4 x i1> %2, i64 1
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 26: %5 = extractelement <4 x i1> %2, i64 2
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 27: %6 = extractelement <4 x i1> %2, i64 3
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 28: %7 = icmp ne <4 x ptr> %step.add, splat (ptr null)
# | next:22'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 127: middle.block: ; preds = %vector.body
# | 128: %cmp.n = icmp eq i64 %N, %n.vec
# | 129: br i1 %cmp.n, label %exit, label %vec.epilog.iter.check
# | 130:
# | 131: vec.epilog.iter.check: ; preds = %middle.block
# | 132: %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | next:138'0 X error: match failed for invalid pattern
# | next:138'1 undefined variable: PROF3
# | next:138'2 with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | next:138'3 with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | next:138'4 with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | 133: br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph, !prof !3
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 134:
# | next:138'0 ~
# | 135: vec.epilog.ph: ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 136: %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 137: %n.mod.vf2 = urem i64 %N, 2
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 163: %iv.1 = phi i64 [ %bc.resume.val, %vec.epilog.scalar.ph ], [ %iv.1.next, %loop ]
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 164: %gep.A = getelementptr inbounds i64, ptr %A, i64 %iv.1
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 165: store i64 %iv.1, ptr %gep.A, align 4
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 166: %iv.1.next = add nuw nsw i64 %iv.1, 1
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 167: %exitcond = icmp eq i64 %iv.1.next, %N
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 168: br i1 %exitcond, label %exit, label %loop, !llvm.loop !8
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:138'5 ? possible intended match
# | 169:
# | next:138'0 ~
# | 170: exit: ; preds = %vec.epilog.middle.block, %middle.block, %loop
# | next:138'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 171: ret void
# | next:138'0 ~~~~~~~~~~
# | 172: }
# | next:138'0 ~~
# | 173:
# | next:138'0 ~
# | .
# | .
# | .
# | 207: middle.block: ; preds = %vector.body
# | 208: %cmp.n = icmp eq i64 %0, %n.vec
# | 209: br i1 %cmp.n, label %exit, label %vec.epilog.iter.check
# | 210:
# | 211: vec.epilog.iter.check: ; preds = %middle.block
# | 212: %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | next:222'0 X error: match failed for invalid pattern
# | next:222'1 undefined variable: PROF3
# | next:222'2 with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | next:222'3 with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | next:222'4 with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | 213: br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph, !prof !3
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 214:
# | next:222'0 ~
# | 215: vec.epilog.ph: ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 216: %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 217: %bc.resume.val = phi i64 [ %1, %vec.epilog.iter.check ], [ %start, %vector.main.loop.iter.check ]
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 234: %9 = icmp eq i64 %index.next9, %n.vec3
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 235: br i1 %9, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !10
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 236:
# | next:222'0 ~
# | 237: vec.epilog.middle.block: ; preds = %vec.epilog.vector.body
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 238: %cmp.n11 = icmp eq i64 %0, %n.vec3
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 239: br i1 %cmp.n11, label %exit, label %vec.epilog.scalar.ph
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:222'5 ? possible intended match
# | 240:
# | next:222'0 ~
# | 241: vec.epilog.scalar.ph: ; preds = %iter.check, %vec.epilog.iter.check, %vec.epilog.middle.block
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 242: %bc.resume.val12 = phi i64 [ %6, %vec.epilog.middle.block ], [ %1, %vec.epilog.iter.check ], [ %start, %iter.check ]
# | next:222'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 243: br label %loop
# | next:222'0 ~~~~~~~~~~~~~~~~
# | 244:
# | next:222'0 ~
# | .
# | .
# | .
# | 286: middle.block: ; preds = %vector.body
# | 287: %cmp.n = icmp eq i64 %N, %n.vec
# | 288: br i1 %cmp.n, label %exit, label %vec.epilog.iter.check
# | 289:
# | 290: vec.epilog.iter.check: ; preds = %middle.block
# | 291: %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | next:305'0 X error: match failed for invalid pattern
# | next:305'1 undefined variable: PROF3
# | next:305'2 with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | next:305'3 with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | next:305'4 with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | 292: br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph, !prof !3
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 293:
# | next:305'0 ~
# | 294: vec.epilog.ph: ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 295: %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 296: %n.mod.vf2 = urem i64 %N, 2
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 326: %add = add i64 %iv.2, 10
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 327: store i64 %add, ptr %gep.A, align 4
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 328: %iv.1.next = add nuw nsw i64 %iv.1, 1
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 329: %iv.2.next = add nuw nsw i64 %iv.1, 2
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 330: %exitcond = icmp eq i64 %iv.1.next, %N
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 331: br i1 %exitcond, label %exit, label %loop, !llvm.loop !14
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:305'5 ? possible intended match
# | 332:
# | next:305'0 ~
# | 333: exit: ; preds = %vec.epilog.middle.block, %middle.block, %loop
# | next:305'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 334: ret void
# | next:305'0 ~~~~~~~~~~
# | 335: }
# | next:305'0 ~~
# | 336:
# | next:305'0 ~
# | .
# | .
# | .
# | 376: br i1 %2, label %middle.block, label %vector.body, !llvm.loop !15
# | 377:
# | 378: middle.block: ; preds = %vector.body
# | 379: br i1 true, label %exit, label %vec.epilog.iter.check
# | 380:
# | 381: vec.epilog.iter.check: ; preds = %middle.block
# | next:417'0 X~~~~~~~~~~~~~~~~~~~~~~~~ error: match failed for invalid pattern
# | next:417'1 undefined variable: PROF3
# | next:417'2 with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | next:417'3 with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | 382: br i1 true, label %vec.epilog.scalar.ph, label %vec.epilog.ph, !prof !3
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 383:
# | next:417'0 ~
# | 384: vec.epilog.ph: ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 385: %vec.epilog.resume.val = phi i64 [ 10000, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 386: %3 = trunc i64 %vec.epilog.resume.val to i8
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 398: %vec.ind.next4 = add <2 x i8> %vec.ind2, splat (i8 2)
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 399: %5 = icmp eq i64 %index.next3, 10000
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 400: br i1 %5, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !16
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 401:
# | next:417'0 ~
# | 402: vec.epilog.middle.block: ; preds = %vec.epilog.vector.body
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 403: br i1 true, label %exit, label %vec.epilog.scalar.ph
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:417'4 ? possible intended match
# | 404:
# | next:417'0 ~
# | 405: vec.epilog.scalar.ph: ; preds = %iter.check, %vec.epilog.iter.check, %vec.epilog.middle.block
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 406: %bc.resume.val = phi i64 [ 10000, %vec.epilog.middle.block ], [ 10000, %vec.epilog.iter.check ], [ 0, %iter.check ]
# | next:417'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 407: br label %loop
# | next:417'0 ~~~~~~~~~~~~~~~~
# | 408:
# | next:417'0 ~
# | .
# | .
# | .
# | 455: %8 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %bin.rdx)
# | 456: %cmp.n = icmp eq i64 %0, %n.vec
# | 457: br i1 %cmp.n, label %exit, label %vec.epilog.iter.check
# | 458:
# | 459: vec.epilog.iter.check: ; preds = %middle.block
# | 460: %min.epilog.iters.check = icmp ult i64 %n.mod.vf, 2
# | next:504'0 X error: match failed for invalid pattern
# | next:504'1 undefined variable: PROF3
# | next:504'2 with "MIN_EPILOG_ITERS_CHECK" equal to "%min.epilog.iters.check"
# | next:504'3 with "VEC_EPILOG_SCALAR_PH" equal to "%vec.epilog.scalar.ph"
# | next:504'4 with "VEC_EPILOG_PH" equal to "%vec.epilog.ph"
# | 461: br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph, label %vec.epilog.ph, !prof !3
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 462:
# | next:504'0 ~
# | 463: vec.epilog.ph: ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 464: %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 465: %bc.merge.rdx = phi i32 [ %8, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | 480: br i1 %13, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !19
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 481:
# | next:504'0 ~
# | 482: vec.epilog.middle.block: ; preds = %vec.epilog.vector.body
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 483: %14 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> %12)
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 484: %cmp.n10 = icmp eq i64 %0, %n.vec5
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 485: br i1 %cmp.n10, label %exit, label %vec.epilog.scalar.ph
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:504'5 ? possible intended match
# | 486:
# | next:504'0 ~
# | 487: vec.epilog.scalar.ph: ; preds = %iter.check, %vec.epilog.iter.check, %vec.epilog.middle.block
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 488: %bc.resume.val = phi i64 [ %n.vec5, %vec.epilog.middle.block ], [ %n.vec, %vec.epilog.iter.check ], [ 0, %iter.check ]
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 489: %bc.merge.rdx11 = phi i32 [ %14, %vec.epilog.middle.block ], [ %8, %vec.epilog.iter.check ], [ 0, %iter.check ]
# | next:504'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 490: br label %loop
# | next:504'0 ~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/LoopVectorize/AArch64/sve-widen-phi.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -mtriple aarch64-linux-gnu -mattr=+sve -passes=loop-vectorize,instcombine -S -tail-folding-policy=dont-fold-tail < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\sve-widen-phi.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\sve-widen-phi.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -mtriple aarch64-linux-gnu -mattr=+sve -passes=loop-vectorize,instcombine -S -tail-folding-policy=dont-fold-tail
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\sve-widen-phi.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\sve-widen-phi.ll:309:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP6:%.*]] = icmp ne <vscale x 2 x ptr> [[VECTOR_GEP]], zeroinitializer
# | ^
# | <stdin>:234:59: note: scanning from here
# | %4 = extractelement <vscale x 2 x ptr> %vector.gep, i64 0
# | ^
# | <stdin>:234:59: note: with "VECTOR_GEP" equal to "%vector.gep"
# | %4 = extractelement <vscale x 2 x ptr> %vector.gep, i64 0
# | ^
# | <stdin>:235:2: note: possible intended match here
# | %5 = icmp ne <vscale x 2 x ptr> %vector.gep, splat (ptr null)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\AArch64\sve-widen-phi.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 229: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
# | 230: %pointer.phi = phi ptr [ %ptr, %vector.ph ], [ %ptr.ind, %vector.body ]
# | 231: %2 = call <vscale x 2 x i64> @llvm.stepvector.nxv2i64()
# | 232: %3 = shl <vscale x 2 x i64> %2, splat (i64 1)
# | 233: %vector.gep = getelementptr i8, ptr %pointer.phi, <vscale x 2 x i64> %3
# | 234: %4 = extractelement <vscale x 2 x ptr> %vector.gep, i64 0
# | next:309'0 X error: no match found
# | next:309'1 with "VECTOR_GEP" equal to "%vector.gep"
# | 235: %5 = icmp ne <vscale x 2 x ptr> %vector.gep, splat (ptr null)
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:309'2 ? possible intended match
# | 236: call void @llvm.masked.store.nxv2i16.p0(<vscale x 2 x i16> zeroinitializer, ptr align 2 %4, <vscale x 2 x i1> %5)
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 237: %index.next = add nuw i64 %index, %1
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 238: %6 = shl nuw nsw i64 %0, 2
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 239: %ptr.ind = getelementptr i8, ptr %pointer.phi, i64 %6
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 240: %7 = icmp eq i64 %index.next, 1024
# | next:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/LoopVectorize/RISCV/truncate-to-minimal-bitwidth-evl-crash.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=loop-vectorize -tail-folding-policy=prefer-fold-tail -mtriple=riscv64 -mattr=+v -S C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=loop-vectorize -tail-folding-policy=prefer-fold-tail -mtriple=riscv64 -mattr=+v -S 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll:18:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> zeroinitializer, <vscale x 8 x ptr> align 1 zeroinitializer, <vscale x 8 x i1> splat (i1 true), i32 [[TMP7]])
# | ^
# | <stdin>:15:82: note: scanning from here
# | %0 = call i32 @llvm.experimental.get.vector.length.i64(i64 %avl, i32 8, i1 true)
# | ^
# | <stdin>:15:82: note: with "TMP7" equal to "%0"
# | %0 = call i32 @llvm.experimental.get.vector.length.i64(i64 %avl, i32 8, i1 true)
# | ^
# | <stdin>:16:2: note: possible intended match here
# | call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> zeroinitializer, <vscale x 8 x ptr> align 1 splat (ptr null), <vscale x 8 x i1> splat (i1 true), i32 %0)
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll:120:12: error: undefined variable: LOOP0
# | ; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll:120:35: error: undefined variable: LOOP0
# | ; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
# | ^
# | <stdin>:99:2: note: possible intended match here
# | !0 = distinct !{!0, !1, !2}
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\truncate-to-minimal-bitwidth-evl-crash.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 10: vector.ph: ; preds = %entry
# | 11: br label %vector.body
# | 12:
# | 13: vector.body: ; preds = %vector.body, %vector.ph
# | 14: %avl = phi i64 [ 9, %vector.ph ], [ %avl.next, %vector.body ]
# | 15: %0 = call i32 @llvm.experimental.get.vector.length.i64(i64 %avl, i32 8, i1 true)
# | next:18'0 X error: no match found
# | next:18'1 with "TMP7" equal to "%0"
# | 16: call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> zeroinitializer, <vscale x 8 x ptr> align 1 splat (ptr null), <vscale x 8 x i1> splat (i1 true), i32 %0)
# | next:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:18'2 ? possible intended match
# | 17: %1 = zext i32 %0 to i64
# | next:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~
# | 18: %avl.next = sub nuw i64 %avl, %1
# | next:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 19: %2 = icmp eq i64 %avl.next, 0
# | next:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 20: br i1 %2, label %middle.block, label %vector.body, !llvm.loop !0
# | next:18'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 21:
# | next:18'0 ~
# | .
# | .
# | .
# | 75: %exitcond = icmp eq i32 %count.next, 0
# | 76: %iv.next = add i64 %iv, 1
# | 77: br i1 %exitcond, label %exit, label %loop, !llvm.loop !4
# | 78:
# | 79: exit: ; preds = %middle.block, %loop
# | 80: ret void
# | check:120'0 X error: match failed for invalid pattern
# | check:120'1 undefined variable: LOOP0
# | check:120'2 undefined variable: LOOP0
# | 81: }
# | check:120'0 ~~
# | 82:
# | check:120'0 ~
# | 83: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 84: declare i32 @llvm.experimental.get.vector.length.i64(i64, i32 immarg, i1 immarg) #1
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 85:
# | check:120'0 ~
# | .
# | .
# | .
# | 94:
# | check:120'0 ~
# | 95: attributes #0 = { "target-features"="+v" }
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 96: attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 97: attributes #2 = { nocallback nofree nosync nounwind willreturn }
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 98:
# | check:120'0 ~
# | 99: !0 = distinct !{!0, !1, !2}
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:120'3 ? possible intended match
# | 100: !1 = !{!"llvm.loop.isvectorized", i32 1}
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 101: !2 = !{!"llvm.loop.unroll.runtime.disable"}
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 102: !3 = distinct !{!3, !1, !2}
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 103: !4 = distinct !{!4, !2, !1}
# | check:120'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/LoopVectorize/RISCV/type-info-cache-evl-crash.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=loop-vectorize -tail-folding-policy=prefer-fold-tail -mtriple=riscv64 -mattr=+v -S C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=loop-vectorize -tail-folding-policy=prefer-fold-tail -mtriple=riscv64 -mattr=+v -S 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll:38:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: call void @llvm.vp.scatter.nxv8i16.nxv8p0(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x ptr> align 2 zeroinitializer, <vscale x 8 x i1> splat (i1 true), i32 [[TMP11]])
# | ^
# | <stdin>:36:182: note: scanning from here
# | call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> %8, <vscale x 8 x ptr> align 1 %broadcast.splat, <vscale x 8 x i1> splat (i1 true), i32 %2), !alias.scope !3, !noalias !0
# | ^
# | <stdin>:36:182: note: with "TMP11" equal to "%2"
# | call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> %8, <vscale x 8 x ptr> align 1 %broadcast.splat, <vscale x 8 x i1> splat (i1 true), i32 %2), !alias.scope !3, !noalias !0
# | ^
# | <stdin>:37:2: note: possible intended match here
# | call void @llvm.vp.scatter.nxv8i16.nxv8p0(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x ptr> align 2 splat (ptr null), <vscale x 8 x i1> splat (i1 true), i32 %2)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\RISCV\type-info-cache-evl-crash.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 31: %4 = zext <vscale x 8 x i8> %vp.op.load to <vscale x 8 x i32>
# | 32: %5 = ashr <vscale x 8 x i32> %4, zeroinitializer
# | 33: %6 = icmp ult <vscale x 8 x i32> %4, zeroinitializer
# | 34: %7 = select <vscale x 8 x i1> %6, <vscale x 8 x i32> %5, <vscale x 8 x i32> zeroinitializer
# | 35: %8 = trunc <vscale x 8 x i32> %7 to <vscale x 8 x i8>
# | 36: call void @llvm.vp.scatter.nxv8i8.nxv8p0(<vscale x 8 x i8> %8, <vscale x 8 x ptr> align 1 %broadcast.splat, <vscale x 8 x i1> splat (i1 true), i32 %2), !alias.scope !3, !noalias !0
# | next:38'0 X error: no match found
# | next:38'1 with "TMP11" equal to "%2"
# | 37: call void @llvm.vp.scatter.nxv8i16.nxv8p0(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x ptr> align 2 splat (ptr null), <vscale x 8 x i1> splat (i1 true), i32 %2)
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:38'2 ? possible intended match
# | 38: %9 = zext i32 %2 to i64
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~
# | 39: %current.iteration.next = add i64 %9, %index
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 40: %avl.next = sub nuw i64 %avl, %9
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 41: %10 = icmp eq i64 %avl.next, 0
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 42: br i1 %10, label %middle.block, label %vector.body, !llvm.loop !5
# | next:38'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/AArch64/InstructionsState-is-invalid-0.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=slp-vectorizer -S C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=slp-vectorizer -S 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll:15:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP4:%.*]] = icmp ult <4 x ptr> [[TMP3]], zeroinitializer
# | ^
# | <stdin>:12:91: note: scanning from here
# | %3 = shufflevector <4 x ptr> %2, <4 x ptr> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1>
# | ^
# | <stdin>:12:91: note: with "TMP3" equal to "%3"
# | %3 = shufflevector <4 x ptr> %2, <4 x ptr> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1>
# | ^
# | <stdin>:14:2: note: possible intended match here
# | %5 = and <4 x i1> %4, zeroinitializer
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\InstructionsState-is-invalid-0.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 7: vector.scevcheck:
# | 8: %scevgep = getelementptr i8, ptr %0, i64 4
# | 9: %scevgep3 = getelementptr i8, ptr null, i64 4
# | 10: %1 = insertelement <4 x ptr> poison, ptr %0, i32 1
# | 11: %2 = insertelement <4 x ptr> %1, ptr %scevgep, i32 0
# | 12: %3 = shufflevector <4 x ptr> %2, <4 x ptr> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1>
# | next:15'0 X error: no match found
# | next:15'1 with "TMP3" equal to "%3"
# | 13: %4 = icmp ult <4 x ptr> %3, splat (ptr null)
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 14: %5 = and <4 x i1> %4, zeroinitializer
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:15'2 ? possible intended match
# | 15: %6 = insertelement <4 x ptr> poison, ptr %0, i32 0
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 16: %7 = insertelement <4 x ptr> %6, ptr %scevgep3, i32 1
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 17: %8 = shufflevector <4 x ptr> %7, <4 x ptr> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1>
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 18: %9 = icmp ult <4 x ptr> %8, splat (ptr null)
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 19: %10 = and <4 x i1> %9, zeroinitializer
# | next:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/AArch64/long-non-power-of-2.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S --passes=slp-vectorizer -mtriple=arm64-apple-macosx15.0.0 < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\long-non-power-of-2.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\long-non-power-of-2.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S --passes=slp-vectorizer -mtriple=arm64-apple-macosx15.0.0
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\long-non-power-of-2.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\long-non-power-of-2.ll:42:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP23:%.*]] = icmp ult <2 x ptr> [[TMP22]], zeroinitializer
# | ^
# | <stdin>:41:81: note: scanning from here
# | %22 = insertelement <2 x ptr> <ptr poison, ptr null>, ptr %getelementptr, i32 0
# | ^
# | <stdin>:41:81: note: with "TMP22" equal to "%22"
# | %22 = insertelement <2 x ptr> <ptr poison, ptr null>, ptr %getelementptr, i32 0
# | ^
# | <stdin>:42:2: note: possible intended match here
# | %23 = icmp ult <2 x ptr> %22, splat (ptr null)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\long-non-power-of-2.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 36: %18 = shufflevector <2 x ptr> %1, <2 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
# | 37: %19 = shufflevector <4 x ptr> %17, <4 x ptr> %18, <4 x i32> <i32 4, i32 1, i32 2, i32 3>
# | 38: %20 = icmp ult <4 x ptr> %19, %7
# | 39: %21 = and <4 x i1> zeroinitializer, %20
# | 40: %icmp58 = icmp ult ptr %getelementptr, null
# | 41: %22 = insertelement <2 x ptr> <ptr poison, ptr null>, ptr %getelementptr, i32 0
# | next:42'0 X error: no match found
# | next:42'1 with "TMP22" equal to "%22"
# | 42: %23 = icmp ult <2 x ptr> %22, splat (ptr null)
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:42'2 ? possible intended match
# | 43: %24 = insertelement <8 x ptr> <ptr null, ptr null, ptr null, ptr null, ptr poison, ptr poison, ptr null, ptr null>, ptr %arg, i32 4
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 44: %25 = insertelement <8 x ptr> %24, ptr %arg1, i32 5
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 45: %26 = icmp ult <8 x ptr> %25, %4
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 46: %27 = insertelement <8 x i1> <i1 false, i1 poison, i1 poison, i1 poison, i1 poison, i1 poison, i1 false, i1 false>, i1 %icmp58, i32 1
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 47: %28 = shufflevector <2 x i1> %23, <2 x i1> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
# | next:42'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/AArch64/non-power-of-2-with-adjusted-gathers.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S --passes=slp-vectorizer -mtriple=arm64-apple-macosx15.0.0 < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\non-power-of-2-with-adjusted-gathers.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\non-power-of-2-with-adjusted-gathers.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S --passes=slp-vectorizer -mtriple=arm64-apple-macosx15.0.0
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\non-power-of-2-with-adjusted-gathers.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\non-power-of-2-with-adjusted-gathers.ll:21:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP4:%.*]] = icmp ult <8 x ptr> [[TMP2]], zeroinitializer
# | ^
# | <stdin>:20:32: note: scanning from here
# | %and15 = and i1 false, %icmp14
# | ^
# | <stdin>:20:32: note: with "TMP2" equal to "%2"
# | %and15 = and i1 false, %icmp14
# | ^
# | <stdin>:21:2: note: possible intended match here
# | %4 = icmp ult <8 x ptr> %2, splat (ptr null)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\AArch64\non-power-of-2-with-adjusted-gathers.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 15: %icmp7 = icmp ult ptr null, null
# | 16: %and = and i1 false, %icmp7
# | 17: %icmp11 = icmp ult ptr null, null
# | 18: %and12 = and i1 false, %icmp11
# | 19: %icmp14 = icmp ult ptr null, null
# | 20: %and15 = and i1 false, %icmp14
# | next:21'0 X error: no match found
# | next:21'1 with "TMP2" equal to "%2"
# | 21: %4 = icmp ult <8 x ptr> %2, splat (ptr null)
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:21'2 ? possible intended match
# | 22: %5 = insertelement <8 x i1> <i1 false, i1 poison, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>, i1 %arg2, i32 1
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 23: %6 = and <8 x i1> %4, %5
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 24: %7 = extractelement <8 x ptr> %2, i32 3
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 25: %icmp46 = icmp ult ptr %7, null
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 26: %and47 = and i1 false, %icmp46
# | next:21'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/RISCV/complex-loads.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S -mtriple riscv64-unknown-linux-gnu < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll --passes=slp-vectorizer -mattr=+v | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S -mtriple riscv64-unknown-linux-gnu --passes=slp-vectorizer -mattr=+v
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll'
# note: command had no output on stdout or stderr
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S -mtriple riscv64-unknown-linux-gnu < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll --passes=slp-vectorizer -mattr=+v -slp-threshold=-15 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll --check-prefix=THR15
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S -mtriple riscv64-unknown-linux-gnu --passes=slp-vectorizer -mattr=+v -slp-threshold=-15
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll' --check-prefix=THR15
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll:157:15: error: THR15-NEXT: expected string not found in input
# | ; THR15-NEXT: [[TMP0:%.*]] = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> align 1 zeroinitializer, <2 x i1> splat (i1 true), <2 x i8> poison)
# | ^
# | <stdin>:18:50: note: scanning from here
# | %arrayidx5.3 = getelementptr i8, ptr null, i64 4
# | ^
# | <stdin>:19:2: note: possible intended match here
# | %0 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> align 1 splat (ptr null), <2 x i1> splat (i1 true), <2 x i8> poison)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\complex-loads.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 13: %arrayidx5.1 = getelementptr i8, ptr %add.ptr644, i64 4
# | 14: %add.ptr.1 = getelementptr i8, ptr %add.ptr, i64 %idx.ext
# | 15: %add.ptr64.1 = getelementptr i8, ptr %add.ptr64, i64 %idx.ext63
# | 16: %arrayidx3.2 = getelementptr i8, ptr %add.ptr.1, i64 4
# | 17: %arrayidx5.2 = getelementptr i8, ptr %add.ptr64.1, i64 4
# | 18: %arrayidx5.3 = getelementptr i8, ptr null, i64 4
# | next:157'0 X error: no match found
# | 19: %0 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> align 1 splat (ptr null), <2 x i1> splat (i1 true), <2 x i8> poison)
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:157'1 ? possible intended match
# | 20: %1 = load <4 x i8>, ptr %pix1, align 1
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 21: %2 = zext <4 x i8> %1 to <4 x i32>
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 22: %3 = load <4 x i8>, ptr %pix2, align 1
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 23: %4 = zext <4 x i8> %3 to <4 x i32>
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 24: %5 = sub <4 x i32> %2, %4
# | next:157'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux -pass-remarks-output=C:\_work\llvm-project\llvm-project\build\test\Transforms\SLPVectorizer\RISCV\Output\remarks-insert-into-small-vector.ll.tmp -mattr=+v -slp-threshold=-10 < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\remarks-insert-into-small-vector.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\remarks-insert-into-small-vector.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux '-pass-remarks-output=C:\_work\llvm-project\llvm-project\build\test\Transforms\SLPVectorizer\RISCV\Output\remarks-insert-into-small-vector.ll.tmp' -mattr=+v -slp-threshold=-10
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\remarks-insert-into-small-vector.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\remarks-insert-into-small-vector.ll:20:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP5:%.*]] = call <2 x float> @llvm.masked.gather.v2f32.v2p0(<2 x ptr> align 4 zeroinitializer, <2 x i1> splat (i1 true), <2 x float> poison)
# | ^
# | <stdin>:8:36: note: scanning from here
# | %0 = load float, ptr null, align 4
# | ^
# | <stdin>:9:2: note: possible intended match here
# | %1 = call <2 x float> @llvm.masked.gather.v2f32.v2p0(<2 x ptr> align 4 splat (ptr null), <2 x i1> splat (i1 true), <2 x float> poison)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\remarks-insert-into-small-vector.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | 1: ; ModuleID = '<stdin>'
# | 2: source_filename = "<stdin>"
# | 3: target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
# | 4: target triple = "riscv64-unknown-linux"
# | 5:
# | 6: define void @test() #0 {
# | 7: entry:
# | 8: %0 = load float, ptr null, align 4
# | next:20'0 X error: no match found
# | 9: %1 = call <2 x float> @llvm.masked.gather.v2f32.v2p0(<2 x ptr> align 4 splat (ptr null), <2 x i1> splat (i1 true), <2 x float> poison)
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:20'1 ? possible intended match
# | 10: %2 = insertelement <2 x float> <float poison, float 0.000000e+00>, float %0, i32 0
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 11: %3 = fcmp ogt <2 x float> %2, %1
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 12: %4 = shufflevector <2 x i1> %3, <2 x i1> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 13: %5 = shufflevector <2 x float> %1, <2 x float> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 14: %6 = shufflevector <4 x float> %5, <4 x float> <float poison, float poison, float poison, float 0.000000e+00>, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
# | next:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/RISCV/strided-loads-with-external-indices.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S --passes=slp-vectorizer -slp-threshold=-50 -mtriple=riscv64-unknown-linux-gnu -mattr=+v < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\strided-loads-with-external-indices.ll| c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\strided-loads-with-external-indices.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S --passes=slp-vectorizer -slp-threshold=-50 -mtriple=riscv64-unknown-linux-gnu -mattr=+v
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\strided-loads-with-external-indices.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\strided-loads-with-external-indices.ll:13:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[TMP0:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> align 4 getelementptr ([[CLASS_A:%.*]], <2 x ptr> zeroinitializer, <2 x i64> <i64 0, i64 1>), <2 x i1> splat (i1 true), <2 x i32> poison)
# | ^
# | <stdin>:13:6: note: scanning from here
# | body: ; preds = %body, %entry
# | ^
# | <stdin>:14:2: note: possible intended match here
# | %0 = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> align 4 getelementptr (%class.A, <2 x ptr> splat (ptr null), <2 x i64> <i64 0, i64 1>), <2 x i1> splat (i1 true), <2 x i32> poison)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\SLPVectorizer\RISCV\strided-loads-with-external-indices.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 8: define void @test() #0 {
# | 9: entry:
# | 10: %sub4.i.i65.us = or i64 0, 1
# | 11: br label %body
# | 12:
# | 13: body: ; preds = %body, %entry
# | next:13'0 X~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# | 14: %0 = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> align 4 getelementptr (%class.A, <2 x ptr> splat (ptr null), <2 x i64> <i64 0, i64 1>), <2 x i1> splat (i1 true), <2 x i32> poison)
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:13'1 ? possible intended match
# | 15: %1 = extractelement <2 x i32> %0, i32 0
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 16: %2 = extractelement <2 x i32> %0, i32 1
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 17: %cmp.i.i.i.i67.us = icmp slt i32 %1, %2
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 18: %spec.select.i.i68.us = select i1 false, i64 %sub4.i.i65.us, i64 0
# | next:13'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 19: br label %body
# | next:13'0 ~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/195486
More information about the llvm-commits
mailing list