[llvm] [AArch64] Improve fixed vector lowering for cttz/ctlz when sve (PR #192427)

via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 16 04:13:25 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 172788 tests passed
* 3165 tests skipped
* 1 test failed

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

### LLVM
<details>
<summary>LLVM.CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll -mtriple=aarch64-linux-gnu -mattr=+neon | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll --check-prefix=NEON
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-linux-gnu -mattr=+neon
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll --check-prefix=NEON
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:190:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.8b, #1
# |              ^
# | <stdin>:136:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:137:2: note: possible intended match here
# |  rbit v0.8b, v0.8b
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:210:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.4h, #1
# |              ^
# | <stdin>:149:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:152:2: note: possible intended match here
# |  clz v0.4h, v0.4h
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:233:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.2s, #1
# |              ^
# | <stdin>:163:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:166:2: note: possible intended match here
# |  clz v0.2s, v0.2s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:283:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.16b, #1
# |              ^
# | <stdin>:196:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:197:2: note: possible intended match here
# |  rbit v0.16b, v0.16b
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:303:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.8h, #1
# |              ^
# | <stdin>:209:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:212:2: note: possible intended match here
# |  clz v0.8h, v0.8h
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll:326:14: error: NEON-NEXT: expected string not found in input
# | ; NEON-NEXT: movi v1.4s, #1
# |              ^
# | <stdin>:223:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:226:2: note: possible intended match here
# |  clz v0.4s, v0.4s
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/ctlz-cttz-fixed-vectors.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           131:  .globl cttz_v8i8 // -- Begin function cttz_v8i8 
# |           132:  .p2align 2 
# |           133:  .type cttz_v8i8, at function 
# |           134: cttz_v8i8: // @cttz_v8i8 
# |           135:  .cfi_startproc 
# |           136: // %bb.0: 
# | next:190'0              X error: no match found
# |           137:  rbit v0.8b, v0.8b 
# | next:190'0     ~~~~~~~~~~~~~~~~~~~
# | next:190'1      ?                  possible intended match
# |           138:  clz v0.8b, v0.8b 
# | next:190'0     ~~~~~~~~~~~~~~~~~~
# |           139:  ret 
# | next:190'0     ~~~~~
# |           140: .Lfunc_end8: 
# | next:190'0     ~~~~~~~~~~~~~
# |           141:  .size cttz_v8i8, .Lfunc_end8-cttz_v8i8 
# | next:190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           142:  .cfi_endproc 
# | next:190'0     ~~~~~~~~~~~~~~
# |           143:  // -- End function 
# | next:190'0     ~~~~~~~~~~~~~~~~~~~~
# |           144:  .globl cttz_v4i16 // -- Begin function cttz_v4i16 
# | next:190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           145:  .p2align 2 
# | next:190'0     ~~~~~~~~~~~~
# |           146:  .type cttz_v4i16, at function 
# | next:190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           147: cttz_v4i16: // @cttz_v4i16 
# | next:190'0     ~~~~~~~~~~~
# |           148:  .cfi_startproc 
# |           149: // %bb.0: 
# | next:210'0              X error: no match found
# |           150:  rev16 v0.8b, v0.8b 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~~
# |           151:  rbit v0.8b, v0.8b 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~
# |           152:  clz v0.4h, v0.4h 
# | next:210'0     ~~~~~~~~~~~~~~~~~~
# | next:210'1      ?                 possible intended match
# |           153:  ret 
# | next:210'0     ~~~~~
# |           154: .Lfunc_end9: 
# | next:210'0     ~~~~~~~~~~~~~
# |           155:  .size cttz_v4i16, .Lfunc_end9-cttz_v4i16 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           156:  .cfi_endproc 
# | next:210'0     ~~~~~~~~~~~~~~
# |           157:  // -- End function 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~~
# |           158:  .globl cttz_v2i32 // -- Begin function cttz_v2i32 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           159:  .p2align 2 
# | next:210'0     ~~~~~~~~~~~~
# |           160:  .type cttz_v2i32, at function 
# | next:210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           161: cttz_v2i32: // @cttz_v2i32 
# | next:210'0     ~~~~~~~~~~~
# |           162:  .cfi_startproc 
# |           163: // %bb.0: 
# | next:233'0              X error: no match found
# |           164:  rev32 v0.8b, v0.8b 
# | next:233'0     ~~~~~~~~~~~~~~~~~~~~
# |           165:  rbit v0.8b, v0.8b 
# | next:233'0     ~~~~~~~~~~~~~~~~~~~
# |           166:  clz v0.2s, v0.2s 
# | next:233'0     ~~~~~~~~~~~~~~~~~~
# | next:233'1      ?                 possible intended match
# |           167:  ret 
# | next:233'0     ~~~~~
# |           168: .Lfunc_end10: 
# | next:233'0     ~~~~~~~~~~~~~~
# |           169:  .size cttz_v2i32, .Lfunc_end10-cttz_v2i32 
# | next:233'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           170:  .cfi_endproc 
# | next:233'0     ~~~~~~~~~~~~~~
# |           171:  // -- End function 
# | next:233'0     ~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           191:  .globl cttz_v16i8 // -- Begin function cttz_v16i8 
# |           192:  .p2align 2 
# |           193:  .type cttz_v16i8, at function 
# |           194: cttz_v16i8: // @cttz_v16i8 
# |           195:  .cfi_startproc 
# |           196: // %bb.0: 
# | next:283'0              X error: no match found
# |           197:  rbit v0.16b, v0.16b 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~~
# | next:283'1      ?                    possible intended match
# |           198:  clz v0.16b, v0.16b 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~
# |           199:  ret 
# | next:283'0     ~~~~~
# |           200: .Lfunc_end12: 
# | next:283'0     ~~~~~~~~~~~~~~
# |           201:  .size cttz_v16i8, .Lfunc_end12-cttz_v16i8 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           202:  .cfi_endproc 
# | next:283'0     ~~~~~~~~~~~~~~
# |           203:  // -- End function 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~
# |           204:  .globl cttz_v8i16 // -- Begin function cttz_v8i16 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           205:  .p2align 2 
# | next:283'0     ~~~~~~~~~~~~
# |           206:  .type cttz_v8i16, at function 
# | next:283'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           207: cttz_v8i16: // @cttz_v8i16 
# | next:283'0     ~~~~~~~~~~~
# |           208:  .cfi_startproc 
# |           209: // %bb.0: 
# | next:303'0              X error: no match found
# |           210:  rev16 v0.16b, v0.16b 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           211:  rbit v0.16b, v0.16b 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~~
# |           212:  clz v0.8h, v0.8h 
# | next:303'0     ~~~~~~~~~~~~~~~~~~
# | next:303'1      ?                 possible intended match
# |           213:  ret 
# | next:303'0     ~~~~~
# |           214: .Lfunc_end13: 
# | next:303'0     ~~~~~~~~~~~~~~
# |           215:  .size cttz_v8i16, .Lfunc_end13-cttz_v8i16 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           216:  .cfi_endproc 
# | next:303'0     ~~~~~~~~~~~~~~
# |           217:  // -- End function 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~
# |           218:  .globl cttz_v4i32 // -- Begin function cttz_v4i32 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           219:  .p2align 2 
# | next:303'0     ~~~~~~~~~~~~
# |           220:  .type cttz_v4i32, at function 
# | next:303'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           221: cttz_v4i32: // @cttz_v4i32 
# | next:303'0     ~~~~~~~~~~~
# |           222:  .cfi_startproc 
# |           223: // %bb.0: 
# | next:326'0              X error: no match found
# |           224:  rev32 v0.16b, v0.16b 
# | next:326'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           225:  rbit v0.16b, v0.16b 
# | next:326'0     ~~~~~~~~~~~~~~~~~~~~~
# |           226:  clz v0.4s, v0.4s 
# | next:326'0     ~~~~~~~~~~~~~~~~~~
# | next:326'1      ?                 possible intended match
# |           227:  ret 
# | next:326'0     ~~~~~
# |           228: .Lfunc_end14: 
# | next:326'0     ~~~~~~~~~~~~~~
# |           229:  .size cttz_v4i32, .Lfunc_end14-cttz_v4i32 
# | next:326'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           230:  .cfi_endproc 
# | next:326'0     ~~~~~~~~~~~~~~
# |           231:  // -- End function 
# | next:326'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/192427


More information about the llvm-commits mailing list