[llvm] [PowerPC] Add PPC cost model support for partial reductions (PR #214760)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 7 08:53:57 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 139435 tests passed
* 3644 tests skipped
* 1 test failed
## Failed Tests
(click on a test name to see its output)
### LLVM
<details>
<summary>LLVM.Transforms/LoopVectorize/PowerPC/partial-red.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -vectorizer-maximize-bandwidth -mcpu=pwr8 -S -passes=loop-vectorize < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe --check-prefix=P8CHECK C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -vectorizer-maximize-bandwidth -mcpu=pwr8 -S -passes=loop-vectorize
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' --check-prefix=P8CHECK 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll:23:17: error: P8CHECK-NEXT: expected string not found in input
# | ; P8CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], 128
# | ^
# | <stdin>:19:11: note: scanning from here
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:19:11: note: with "N" equal to "%n"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:19:11: note: pattern attempts to capture variables: "N_MOD_VF"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:20:2: note: possible intended match here
# | %0 = and i64 %n, 127
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll:524:17: error: P8CHECK-NEXT: expected string not found in input
# | ; P8CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], 64
# | ^
# | <stdin>:188:11: note: scanning from here
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:188:11: note: with "N" equal to "%n"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:188:11: note: pattern attempts to capture variables: "N_MOD_VF"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:189:2: note: possible intended match here
# | %0 = and i64 %n, 63
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll:938:17: error: P8CHECK-NEXT: expected string not found in input
# | ; P8CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], 64
# | ^
# | <stdin>:317:11: note: scanning from here
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:317:11: note: with "N" equal to "%n"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:317:11: note: pattern attempts to capture variables: "N_MOD_VF"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:318:2: note: possible intended match here
# | %0 = and i64 %n, 63
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll:1432:17: error: P8CHECK-NEXT: expected string not found in input
# | ; P8CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], 64
# | ^
# | <stdin>:486:11: note: scanning from here
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:486:11: note: with "N" equal to "%n"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:486:11: note: pattern attempts to capture variables: "N_MOD_VF"
# | vector.ph: ; preds = %vector.main.loop.iter.check
# | ^
# | <stdin>:487:2: note: possible intended match here
# | %0 = and i64 %n, 63
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\LoopVectorize\PowerPC\partial-red.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 14:
# | 15: vector.main.loop.iter.check: ; preds = %iter.check
# | 16: %min.iters.check1 = icmp ult i64 %n, 128
# | 17: br i1 %min.iters.check1, label %vec.epilog.ph, label %vector.ph
# | 18:
# | 19: vector.ph: ; preds = %vector.main.loop.iter.check
# | next:23'0 { search range start (exclusive)
# | next:23'1 error: no match found in search range
# | next:23'2 with "N" equal to "%n"
# | next:23'3 pattern attempts to capture variables: "N_MOD_VF"
# | 20: %0 = and i64 %n, 127
# | next:23'4 ? possible intended match
# | 21: %n.vec = sub i64 %n, %0
# | 22: br label %vector.body
# | 23:
# | 24: vector.body: ; preds = %vector.body, %vector.ph
# | 25: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
# | .
# | .
# | .
# | 170: %inc = add nuw nsw i64 %i.09, 1
# | 171: %exitcond.not = icmp eq i64 %inc, %n
# | 172: br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body, !llvm.loop !15
# | 173: }
# | 174:
# | 175: define dso_local signext i32 @dots8(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, i64 noundef %n) local_unnamed_addr #0 {
# | next:23'5 } search range end (exclusive)
# | 176: entry:
# | 177: %cmp7 = icmp sgt i64 %n, 0
# | 178: br i1 %cmp7, label %iter.check, label %for.cond.cleanup
# | 179:
# | 180: iter.check: ; preds = %entry
# | 181: %min.iters.check = icmp ult i64 %n, 4
# | 182: br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
# | 183:
# | 184: vector.main.loop.iter.check: ; preds = %iter.check
# | 185: %min.iters.check1 = icmp ult i64 %n, 64
# | 186: br i1 %min.iters.check1, label %vec.epilog.ph, label %vector.ph
# | 187:
# | 188: vector.ph: ; preds = %vector.main.loop.iter.check
# | next:524'0 { search range start (exclusive)
# | next:524'1 error: no match found in search range
# | next:524'2 with "N" equal to "%n"
# | next:524'3 pattern attempts to capture variables: "N_MOD_VF"
# | 189: %0 = and i64 %n, 63
# | next:524'4 ? possible intended match
# | 190: %n.vec = sub i64 %n, %0
# | 191: br label %vector.body
# | 192:
# | 193: vector.body: ; preds = %vector.body, %vector.ph
# | 194: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
# | .
# | .
# | .
# | 299: %inc = add nuw nsw i64 %i.09, 1
# | 300: %exitcond.not = icmp eq i64 %inc, %n
# | 301: br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body, !llvm.loop !19
# | 302: }
# | 303:
# | 304: define dso_local signext range(i32 0, -2147483648) i32 @dotu16(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, i64 noundef %n) local_unnamed_addr #0 {
# | next:524'5 } search range end (exclusive)
# | 305: entry:
# | 306: %cmp7 = icmp sgt i64 %n, 0
# | 307: br i1 %cmp7, label %iter.check, label %for.cond.cleanup
# | 308:
# | 309: iter.check: ; preds = %entry
# | 310: %min.iters.check = icmp ult i64 %n, 8
# | 311: br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
# | 312:
# | 313: vector.main.loop.iter.check: ; preds = %iter.check
# | 314: %min.iters.check1 = icmp ult i64 %n, 64
# | 315: br i1 %min.iters.check1, label %vec.epilog.ph, label %vector.ph
# | 316:
# | 317: vector.ph: ; preds = %vector.main.loop.iter.check
# | next:938'0 { search range start (exclusive)
# | next:938'1 error: no match found in search range
# | next:938'2 with "N" equal to "%n"
# | next:938'3 pattern attempts to capture variables: "N_MOD_VF"
# | 318: %0 = and i64 %n, 63
# | next:938'4 ? possible intended match
# | 319: %n.vec = sub i64 %n, %0
# | 320: br label %vector.body
# | 321:
# | 322: vector.body: ; preds = %vector.body, %vector.ph
# | 323: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
# | .
# | .
# | .
# | 468: %inc = add nuw nsw i64 %i.09, 1
# | 469: %exitcond.not = icmp eq i64 %inc, %n
# | 470: br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body, !llvm.loop !25
# | 471: }
# | 472:
# | 473: define dso_local signext i32 @dots16(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b, i64 noundef %n) local_unnamed_addr #0 {
# | next:938'5 } search range end (exclusive)
# | 474: entry:
# | 475: %cmp7 = icmp sgt i64 %n, 0
# | 476: br i1 %cmp7, label %iter.check, label %for.cond.cleanup
# | 477:
# | 478: iter.check: ; preds = %entry
# | 479: %min.iters.check = icmp ult i64 %n, 8
# | 480: br i1 %min.iters.check, label %vec.epilog.scalar.ph, label %vector.main.loop.iter.check
# | 481:
# | 482: vector.main.loop.iter.check: ; preds = %iter.check
# | 483: %min.iters.check1 = icmp ult i64 %n, 64
# | 484: br i1 %min.iters.check1, label %vec.epilog.ph, label %vector.ph
# | 485:
# | 486: vector.ph: ; preds = %vector.main.loop.iter.check
# | next:1432'0 { search range start (exclusive)
# | next:1432'1 error: no match found in search range
# | next:1432'2 with "N" equal to "%n"
# | next:1432'3 pattern attempts to capture variables: "N_MOD_VF"
# | 487: %0 = and i64 %n, 63
# | next:1432'4 ? possible intended match
# | 488: %n.vec = sub i64 %n, %0
# | 489: br label %vector.body
# | 490:
# | 491: vector.body: ; preds = %vector.body, %vector.ph
# | 492: %index =
# | ...
# `---data was truncated (10240/10764) (change limit with -D output_limit=N)
# 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/214760
More information about the llvm-commits
mailing list