[llvm] [AArch64] Fold vector select with power-of-2 bit-test to CMTST+BSP (PR #209100)

via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 16 23:36:13 PDT 2026


github-actions[bot] wrote:

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

* 180694 tests passed
* 3688 tests skipped
* 1 test failed

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

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

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-none-linux-gnu -mattr=+neon /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll -o - | /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/neon-compare-instructions.ll --check-prefixes=CHECK,CHECK-SD
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-none-linux-gnu -mattr=+neon /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll -o -
# 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/neon-compare-instructions.ll --check-prefixes=CHECK,CHECK-SD
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-none-linux-gnu -mattr=+neon -global-isel /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll -o - | /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/neon-compare-instructions.ll --check-prefixes=CHECK,CHECK-GI
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-none-linux-gnu -mattr=+neon -global-isel /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll -o -
# 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/neon-compare-instructions.ll --check-prefixes=CHECK,CHECK-GI
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:743:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.8b, v0.8b, v1.8b
# |               ^
# | <stdin>:855:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:857:2: note: possible intended match here
# |  cmtst v0.8b, v0.8b, v0.8b
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:754:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.16b, v0.16b, v1.16b
# |               ^
# | <stdin>:868:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:870:2: note: possible intended match here
# |  cmtst v0.16b, v0.16b, v0.16b
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:765:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.4h, v0.4h, v1.4h
# |               ^
# | <stdin>:881:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:883:2: note: possible intended match here
# |  cmtst v0.4h, v0.4h, v0.4h
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:776:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.8h, v0.8h, v1.8h
# |               ^
# | <stdin>:894:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:896:2: note: possible intended match here
# |  cmtst v0.8h, v0.8h, v0.8h
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:787:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.2s, v0.2s, v1.2s
# |               ^
# | <stdin>:907:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:909:2: note: possible intended match here
# |  cmtst v0.2s, v0.2s, v0.2s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:798:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.4s, v0.4s, v1.4s
# |               ^
# | <stdin>:920:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:922:2: note: possible intended match here
# |  cmtst v0.4s, v0.4s, v0.4s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll:809:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmtst v0.2d, v0.2d, v1.2d
# |               ^
# | <stdin>:933:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:935:2: note: possible intended match here
# |  cmtst v0.2d, v0.2d, v0.2d
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           850:  .globl cmtst8xi8 // -- Begin function cmtst8xi8 
# |           851:  .p2align 2 
# |           852:  .type cmtst8xi8, at function 
# |           853: cmtst8xi8: // @cmtst8xi8 
# |           854:  .cfi_startproc 
# |           855: // %bb.0: 
# | next:743'0             {   search range start (exclusive)
# | next:743'1                 error: no match found in search range
# |           856:  and v0.8b, v0.8b, v1.8b 
# |           857:  cmtst v0.8b, v0.8b, v0.8b 
# | next:743'2      ?                           possible intended match
# |           858:  ret 
# |           859: .Lfunc_end70: 
# |           860:  .size cmtst8xi8, .Lfunc_end70-cmtst8xi8 
# |           861:  .cfi_endproc 
# |           862:  // -- End function 
# |           863:  .globl cmtst16xi8 // -- Begin function cmtst16xi8 
# |           864:  .p2align 2 
# |           865:  .type cmtst16xi8, at function 
# |           866: cmtst16xi8: // @cmtst16xi8 
# | next:743'3                }                 search range end (exclusive)
# |           867:  .cfi_startproc 
# |           868: // %bb.0: 
# | next:754'0             {   search range start (exclusive)
# | next:754'1                 error: no match found in search range
# |           869:  and v0.16b, v0.16b, v1.16b 
# |           870:  cmtst v0.16b, v0.16b, v0.16b 
# | next:754'2      ?                              possible intended match
# |           871:  ret 
# |           872: .Lfunc_end71: 
# |           873:  .size cmtst16xi8, .Lfunc_end71-cmtst16xi8 
# |           874:  .cfi_endproc 
# |           875:  // -- End function 
# |           876:  .globl cmtst4xi16 // -- Begin function cmtst4xi16 
# |           877:  .p2align 2 
# |           878:  .type cmtst4xi16, at function 
# |           879: cmtst4xi16: // @cmtst4xi16 
# | next:754'3                }                 search range end (exclusive)
# |           880:  .cfi_startproc 
# |           881: // %bb.0: 
# | next:765'0             {   search range start (exclusive)
# | next:765'1                 error: no match found in search range
# |           882:  and v0.8b, v0.8b, v1.8b 
# |           883:  cmtst v0.4h, v0.4h, v0.4h 
# | next:765'2      ?                           possible intended match
# |           884:  ret 
# |           885: .Lfunc_end72: 
# |           886:  .size cmtst4xi16, .Lfunc_end72-cmtst4xi16 
# |           887:  .cfi_endproc 
# |           888:  // -- End function 
# |           889:  .globl cmtst8xi16 // -- Begin function cmtst8xi16 
# |           890:  .p2align 2 
# |           891:  .type cmtst8xi16, at function 
# |           892: cmtst8xi16: // @cmtst8xi16 
# | next:765'3                }                 search range end (exclusive)
# |           893:  .cfi_startproc 
# |           894: // %bb.0: 
# | next:776'0             {   search range start (exclusive)
# | next:776'1                 error: no match found in search range
# |           895:  and v0.16b, v0.16b, v1.16b 
# |           896:  cmtst v0.8h, v0.8h, v0.8h 
# | next:776'2      ?                           possible intended match
# |           897:  ret 
# |           898: .Lfunc_end73: 
# |           899:  .size cmtst8xi16, .Lfunc_end73-cmtst8xi16 
# |           900:  .cfi_endproc 
# |           901:  // -- End function 
# |           902:  .globl cmtst2xi32 // -- Begin function cmtst2xi32 
# |           903:  .p2align 2 
# |           904:  .type cmtst2xi32, at function 
# |           905: cmtst2xi32: // @cmtst2xi32 
# | next:776'3                }                 search range end (exclusive)
# |           906:  .cfi_startproc 
# |           907: // %bb.0: 
# | next:787'0             {   search range start (exclusive)
# | next:787'1                 error: no match found in search range
# |           908:  and v0.8b, v0.8b, v1.8b 
# |           909:  cmtst v0.2s, v0.2s, v0.2s 
# | next:787'2      ?                           possible intended match
# |           910:  ret 
# |           911: .Lfunc_end74: 
# |           912:  .size cmtst2xi32, .Lfunc_end74-cmtst2xi32 
# |           913:  .cfi_endproc 
# |           914:  // -- End function 
# |           915:  .globl cmtst4xi32 // -- Begin function cmtst4xi32 
# |           916:  .p2align 2 
# |           917:  .type cmtst4xi32, at function 
# |           918: cmtst4xi32: // @cmtst4xi32 
# | next:787'3                }                 search range end (exclusive)
# |           919:  .cfi_startproc 
# |           920: // %bb.0: 
# | next:798'0             {   search range start (exclusive)
# | next:798'1                 error: no match found in search range
# |           921:  and v0.16b, v0.16b, v1.16b 
# |           922:  cmtst v0.4s, v0.4s, v0.4s 
# | next:798'2      ?                           possible intended match
# |           923:  ret 
# |           924: .Lfunc_end75: 
# |           925:  .size cmtst4xi32, .Lfunc_end75-cmtst4xi32 
# |           926:  .cfi_endproc 
# |           927:  // -- End function 
# |           928:  .globl cmtst2xi64 // -- Begin function cmtst2xi64 
# |           929:  .p2align 2 
# |           930:  .type cmtst2xi64, at function 
# |           931: cmtst2xi64: // @cmtst2xi64 
# | next:798'3                }                 search range end (exclusive)
# |           932:  .cfi_startproc 
# |           933: // %bb.0: 
# | next:809'0             {   search range start (exclusive)
# | next:809'1                 error: no match found in search range
# |           934:  and v0.16b, v0.16b, v1.16b 
# |           935:  cmtst v0.2d, v0.2d, v0.2d 
# | next:809'2      ?                           possible intended match
# |           936:  ret 
# |           937: .Lfunc_end76: 
# |           938:  .size cmtst2xi64, .Lfunc_end76-cmtst2xi64 
# |           939:  .cfi_endproc 
# |           940:  // -- End function 
# |           941:  .globl cmeqz8xi8 // -- Begin function cmeqz8xi8 
# |           942:  .p2align 2 
# |           943:  .type cmeqz8xi8, at function 
# |           944: cmeqz8xi8: // @cmeqz8xi8 
# | next:809'3               }                search range end (exclusive)
# |           945:  .cfi_startproc 
# |           946: // %bb.0: 
# |           947:  cmeq v0.8b, v0.8b, #0 
# |           948:  ret 
# |           949: .Lfunc_end77: 
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# 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/209100


More information about the llvm-commits mailing list