[llvm] [AArch64] Add USDOT to the instruction we perform performAddDotCombine. (PR #171864)

via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 11 09:03:42 PST 2025


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 128570 tests passed
* 2805 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.CodeGen/AArch64/neon-dotreduce.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple aarch64-linux-gnu -mattr=+dotprod,+i8mm    < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll --check-prefixes=CHECK,CHECK-SD
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple aarch64-linux-gnu -mattr=+dotprod,+i8mm
# 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\neon-dotreduce.ll' --check-prefixes=CHECK,CHECK-SD
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:1378:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v5.2d, #0000000000000000
# |                  ^
# | <stdin>:601:31: note: scanning from here
# |  movi v4.2d, #0000000000000000
# |                               ^
# | <stdin>:603:4: note: possible intended match here
# |  usdot v4.2s, v0.8b, v1.8b
# |    ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:1419:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v5.2d, #0000000000000000
# |                  ^
# | <stdin>:617:31: note: scanning from here
# |  movi v4.2d, #0000000000000000
# |                               ^
# | <stdin>:619:4: note: possible intended match here
# |  usdot v4.2s, v1.8b, v0.8b
# |    ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:1460:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v5.2d, #0000000000000000
# |                  ^
# | <stdin>:633:31: note: scanning from here
# |  movi v4.2d, #0000000000000000
# |                               ^
# | <stdin>:635:4: note: possible intended match here
# |  usdot v4.4s, v0.16b, v1.16b
# |    ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:1512:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v5.2d, #0000000000000000
# |                  ^
# | <stdin>:649:31: note: scanning from here
# |  movi v4.2d, #0000000000000000
# |                               ^
# | <stdin>:651:4: note: possible intended match here
# |  usdot v4.4s, v1.16b, v0.16b
# |    ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:4387:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v1.2d, #0000000000000000
# |                  ^
# | <stdin>:1603:31: note: scanning from here
# |  movi v0.2d, #0000000000000000
# |                               ^
# | <stdin>:1609:3: note: possible intended match here
# |  fmov w8, s0
# |   ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:4441:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v18.2d, #0000000000000000
# |                  ^
# | <stdin>:1623:32: note: scanning from here
# |  movi v17.2d, #0000000000000000
# |                                ^
# | <stdin>:1626:4: note: possible intended match here
# |  usdot v17.4s, v0.16b, v2.16b
# |    ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:8784:18: error: CHECK-SD-NEXT: expected string not found in input
# | ; CHECK-SD-NEXT: movi v3.2d, #0000000000000000
# |                  ^
# | <stdin>:2995:31: note: scanning from here
# |  movi v0.2d, #0000000000000000
# |                               ^
# | <stdin>:2996:2: note: possible intended match here
# |  movi v1.2d, #0000000000000000
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll:8866:18: error: CHECK-SD-NEXT: is not on the line after the previous match
# | ; CHECK-SD-NEXT: movi v18.2d, #0000000000000000
# |                  ^
# | <stdin>:3022:2: note: 'next' match was here
# |  movi v18.2d, #0000000000000000
# |  ^
# | <stdin>:3019:20: note: previous match ended here
# | // %bb.0: // %entry
# |                    ^
# | <stdin>:3020:1: note: non-matching line after previous match is here
# |  movi v16.2d, #0000000000000000
# | ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\neon-dotreduce.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            596:  .p2align 2 
# |            597:  .type test_usdot_v8i8_double, at function 
# |            598: test_usdot_v8i8_double: // @test_usdot_v8i8_double 
# |            599:  .cfi_startproc 
# |            600: // %bb.0: // %entry 
# |            601:  movi v4.2d, #0000000000000000 
# | next:1378'0                                   X error: no match found
# |            602:  usdot v4.2s, v2.8b, v3.8b 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            603:  usdot v4.2s, v0.8b, v1.8b 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1378'1        ?                        possible intended match
# |            604:  addp v0.2s, v4.2s, v4.2s 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            605:  fmov w0, s0 
# | next:1378'0     ~~~~~~~~~~~~~
# |            606:  ret 
# | next:1378'0     ~~~~~
# |            607: .Lfunc_end32: 
# | next:1378'0     ~~~~~~~~~~~~~~
# |            608:  .size test_usdot_v8i8_double, .Lfunc_end32-test_usdot_v8i8_double 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            612:  .p2align 2 
# | next:1378'0     ~~~~~~~~~~~~
# |            613:  .type test_usdot_swapped_operands_v8i8_double, at function 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            614: test_usdot_swapped_operands_v8i8_double: // @test_usdot_swapped_operands_v8i8_double 
# | next:1378'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            615:  .cfi_startproc 
# |            616: // %bb.0: // %entry 
# |            617:  movi v4.2d, #0000000000000000 
# | next:1419'0                                   X error: no match found
# |            618:  usdot v4.2s, v3.8b, v2.8b 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            619:  usdot v4.2s, v1.8b, v0.8b 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1419'1        ?                        possible intended match
# |            620:  addp v0.2s, v4.2s, v4.2s 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            621:  fmov w0, s0 
# | next:1419'0     ~~~~~~~~~~~~~
# |            622:  ret 
# | next:1419'0     ~~~~~
# |            623: .Lfunc_end33: 
# | next:1419'0     ~~~~~~~~~~~~~~
# |            624:  .size test_usdot_swapped_operands_v8i8_double, .Lfunc_end33-test_usdot_swapped_operands_v8i8_double 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            628:  .p2align 2 
# | next:1419'0     ~~~~~~~~~~~~
# |            629:  .type test_usdot_v16i8_double, at function 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            630: test_usdot_v16i8_double: // @test_usdot_v16i8_double 
# | next:1419'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |            631:  .cfi_startproc 
# |            632: // %bb.0: // %entry 
# |            633:  movi v4.2d, #0000000000000000 
# | next:1460'0                                   X error: no match found
# |            634:  usdot v4.4s, v2.16b, v3.16b 
# | next:1460'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            635:  usdot v4.4s, v0.16b, v1.16b 
# | next:1460'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1460'1        ?                          possible intended match
# |            636:  addv s0, v4.4s 
# | next:1460'0     ~~~~~~~~~~~~~~~~
# |            637:  fmov w0, s0 
# | next:1460'0     ~~~~~~~~~~~~~
# |            638:  ret 
# | next:1460'0     ~~~~~
# |            639: .Lfunc_end34: 
# | next:1460'0     ~~~~~~~~~~~~~~
# |            640:  .size test_usdot_v16i8_double, .Lfunc_end34-test_usdot_v16i8_double 
# | next:1460'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            644:  .p2align 2 
# | next:1460'0     ~~~~~~~~~~~~
# |            645:  .type test_usdot_swapped_operands_v16i8_double, at function 
# | next:1460'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            646: test_usdot_swapped_operands_v16i8_double: // @test_usdot_swapped_operands_v16i8_double 
# | next:1460'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            647:  .cfi_startproc 
# |            648: // %bb.0: // %entry 
# |            649:  movi v4.2d, #0000000000000000 
# | next:1512'0                                   X error: no match found
# |            650:  usdot v4.4s, v3.16b, v2.16b 
# | next:1512'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            651:  usdot v4.4s, v1.16b, v0.16b 
# | next:1512'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1512'1        ?                          possible intended match
# |            652:  addv s0, v4.4s 
# | next:1512'0     ~~~~~~~~~~~~~~~~
# |            653:  fmov w0, s0 
# | next:1512'0     ~~~~~~~~~~~~~
# |            654:  ret 
# | next:1512'0     ~~~~~
# |            655: .Lfunc_end35: 
# | next:1512'0     ~~~~~~~~~~~~~~
# |            656:  .size test_usdot_swapped_operands_v16i8_double, .Lfunc_end35-test_usdot_swapped_operands_v16i8_double 
# | next:1512'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           1598:  .p2align 2 
# |           1599:  .type test_usdot_v32i8, at function 
# |           1600: test_usdot_v32i8: // @test_usdot_v32i8 
# |           1601:  .cfi_startproc 
# |           1602: // %bb.0: // %entry 
# |           1603:  movi v0.2d, #0000000000000000 
# | next:4387'0                                   X error: no match found
# |           1604:  ldp q1, q3, [x0] 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~
# |           1605:  ldp q2, q4, [x1] 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~
# |           1606:  usdot v0.4s, v3.16b, v4.16b 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1607:  usdot v0.4s, v1.16b, v2.16b 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1608:  addv s0, v0.4s 
# | next:4387'0     ~~~~~~~~~~~~~~~~
# |           1609:  fmov w8, s0 
# | next:4387'0     ~~~~~~~~~~~~~
# | next:4387'1       ?           possible intended match
# |           1610:  add w0, w8, w2 
# | next:4387'0     ~~~~~~~~~~~~~~~~
# |           1611:  ret 
# | next:4387'0     ~~~~~
# |           1612: .Lfunc_end51: 
# | next:4387'0     ~~~~~~~~~~~~~~
# |           1613:  .size test_usdot_v32i8, .Lfunc_end51-test_usdot_v32i8 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1614:  .cfi_endproc 
# | next:4387'0     ~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           1618:  .type test_usdot_v32i8_double, at function 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1619: test_usdot_v32i8_double: // @test_usdot_v32i8_double 
# | next:4387'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           1620:  .cfi_startproc 
# |           1621: // %bb.0: // %entry 
# |           1622:  movi v16.2d, #0000000000000000 
# |           1623:  movi v17.2d, #0000000000000000 
# | next:4441'0                                    X error: no match found
# |           1624:  usdot v17.4s, v1.16b, v3.16b 
# | next:4441'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1625:  usdot v16.4s, v5.16b, v7.16b 
# | next:4441'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1626:  usdot v17.4s, v0.16b, v2.16b 
# | next:4441'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:4441'1        ?                           possible intended match
# |           1627:  usdot v16.4s, v4.16b, v6.16b 
# | next:4441'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1628:  add v0.4s, v17.4s, v16.4s 
# | next:4441'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1629:  addv s0, v0.4s 
# | next:4441'0     ~~~~~~~~~~~~~~~~
# |           1630:  fmov w0, s0 
# | next:4441'0     ~~~~~~~~~~~~~
# |           1631:  ret 
# | next:4441'0     ~~~~~
# |              .
# |              .
# |              .
# |           2990:  .p2align 2 
# |           2991:  .type test_usdot_v64i8, at function 
# |           2992: test_usdot_v64i8: // @test_usdot_v64i8 
# |           2993:  .cfi_startproc 
# |           2994: // %bb.0: // %entry 
# |           2995:  movi v0.2d, #0000000000000000 
# | next:8784'0                                   X error: no match found
# |           2996:  movi v1.2d, #0000000000000000 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:8784'1      ?                              possible intended match
# |           2997:  ldp q2, q3, [x0, #32] 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |           2998:  ldp q4, q5, [x1, #32] 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |           2999:  usdot v1.4s, v3.16b, v5.16b 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           3000:  usdot v0.4s, v2.16b, v4.16b 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           3001:  ldp q2, q3, [x0] 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           3017: test_usdot_v64i8_double: // @test_usdot_v64i8_double 
# | next:8784'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           3018:  .cfi_startproc 
# |           3019: // %bb.0: // %entry 
# |           3020:  movi v16.2d, #0000000000000000 
# |           3021:  movi v17.2d, #0000000000000000 
# |           3022:  movi v18.2d, #0000000000000000 
# | next:8866        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           3023:  movi v19.2d, #0000000000000000 
# |           3024:  ldp q20, q21, [sp, #96] 
# |           3025:  ldp q22, q23, [sp, #32] 
# |           3026:  usdot v16.4s, v3.16b, v7.16b 
# |           3027:  usdot v18.4s, v2.16b, v6.16b 
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# 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/171864


More information about the llvm-commits mailing list