[llvm] [LoongArch] Custom LSX and LASX truncate with [X]VPICKEV instruction (PR #201548)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 4 04:46:59 PDT 2026


github-actions[bot] wrote:

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

* 135404 tests passed
* 3361 tests skipped
* 3 tests failed

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

### LLVM
<details>
<summary>LLVM.CodeGen/LoongArch/lasx/vxi1-masks.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe --mtriple=loongarch32 --mattr=+32s,+lasx < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll --check-prefixes=CHECK,LA32
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' --mtriple=loongarch32 --mattr=+32s,+lasx
# 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\LoongArch\lasx\vxi1-masks.ll' --check-prefixes=CHECK,LA32
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:11:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a1, $xr0, 0
# |              ^
# | <stdin>:11:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:12:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:100:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a1, $xr0, 0
# |              ^
# | <stdin>:71:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:72:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:184:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a1, $xr0, 6
# |              ^
# | <stdin>:126:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:127:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:268:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a1, $xr0, 6
# |              ^
# | <stdin>:186:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:187:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:344:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvrepli.b $xr1, 0
# |              ^
# | <stdin>:239:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:248:2: note: possible intended match here
# |  xvrepli.d $xr1, 1
# |  ^
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll:415:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a1, $xr0, 4
# |              ^
# | <stdin>:295:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr0, $xr1
# |                               ^
# | <stdin>:296:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\vxi1-masks.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |             6:  .type xor_zext_masks_v4i64, at function 
# |             7: xor_zext_masks_v4i64: # @xor_zext_masks_v4i64 
# |             8: # %bb.0: 
# |             9:  xvld $xr0, $a1, 0 
# |            10:  xvld $xr1, $a2, 0 
# |            11:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:11'0                                    X error: no match found
# |            12:  xvpickev.w $xr0, $xr0, $xr0 
# | next:11'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:11'1       ?                            possible intended match
# |            13:  xvpermi.d $xr0, $xr0, 216 
# | next:11'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            14:  vldi $vr1, -1777 
# | next:11'0      ~~~~~~~~~~~~~~~~~~
# |            15:  vxor.v $vr0, $vr0, $vr1 
# | next:11'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            16:  vextrins.w $vr1, $vr0, 2 
# | next:11'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            17:  vextrins.w $vr1, $vr0, 35 
# | next:11'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            66:  .type xor_sext_masks_v4i64, at function 
# |            67: xor_sext_masks_v4i64: # @xor_sext_masks_v4i64 
# |            68: # %bb.0: 
# |            69:  xvld $xr0, $a1, 0 
# |            70:  xvld $xr1, $a2, 0 
# |            71:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:100'0                                   X error: no match found
# |            72:  xvpickev.w $xr0, $xr0, $xr0 
# | next:100'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:100'1      ?                            possible intended match
# |            73:  xvpermi.d $xr0, $xr0, 216 
# | next:100'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            74:  vldi $vr1, -1777 
# | next:100'0     ~~~~~~~~~~~~~~~~~~
# |            75:  vxor.v $vr0, $vr0, $vr1 
# | next:100'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            76:  vext2xv.d.w $xr0, $xr0 
# | next:100'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |            77:  xvst $xr0, $a0, 0 
# | next:100'0     ~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           121:  .type or_zext_masks_v4i64, at function 
# |           122: or_zext_masks_v4i64: # @or_zext_masks_v4i64 
# |           123: # %bb.0: 
# |           124:  xvld $xr0, $a1, 0 
# |           125:  xvld $xr1, $a2, 0 
# |           126:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:184'0                                   X error: no match found
# |           127:  xvpickev.w $xr0, $xr0, $xr0 
# | next:184'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:184'1      ?                            possible intended match
# |           128:  xvpermi.d $xr0, $xr0, 216 
# | next:184'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           129:  vldi $vr1, -1777 
# | next:184'0     ~~~~~~~~~~~~~~~~~~
# |           130:  vor.v $vr0, $vr0, $vr1 
# | next:184'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           131:  vextrins.w $vr1, $vr0, 2 
# | next:184'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           132:  vextrins.w $vr1, $vr0, 35 
# | next:184'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           181:  .type or_sext_masks_v4i64, at function 
# |           182: or_sext_masks_v4i64: # @or_sext_masks_v4i64 
# |           183: # %bb.0: 
# |           184:  xvld $xr0, $a1, 0 
# |           185:  xvld $xr1, $a2, 0 
# |           186:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:268'0                                   X error: no match found
# |           187:  xvpickev.w $xr0, $xr0, $xr0 
# | next:268'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:268'1      ?                            possible intended match
# |           188:  xvpermi.d $xr0, $xr0, 216 
# | next:268'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           189:  vldi $vr1, -1777 
# | next:268'0     ~~~~~~~~~~~~~~~~~~
# |           190:  vor.v $vr0, $vr0, $vr1 
# | next:268'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           191:  vext2xv.d.w $xr0, $xr0 
# | next:268'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           192:  xvst $xr0, $a0, 0 
# | next:268'0     ~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           234:  .type and_zext_masks_v4i64, at function 
# |           235: and_zext_masks_v4i64: # @and_zext_masks_v4i64 
# |           236: # %bb.0: 
# |           237:  xvld $xr0, $a1, 0 
# |           238:  xvld $xr1, $a2, 0 
# |           239:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:344'0                                   X error: no match found
# |           240:  xvpickev.w $xr0, $xr0, $xr0 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           241:  xvpermi.d $xr0, $xr0, 216 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           242:  vldi $vr1, -1777 
# | next:344'0     ~~~~~~~~~~~~~~~~~~
# |           243:  vand.v $vr0, $vr0, $vr1 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |           244:  vextrins.w $vr1, $vr0, 2 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           245:  vextrins.w $vr1, $vr0, 35 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           246:  vextrins.w $vr0, $vr0, 33 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           247:  xvpermi.q $xr0, $xr1, 2 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |           248:  xvrepli.d $xr1, 1 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~
# | next:344'1      ?                  possible intended match
# |           249:  xvand.v $xr0, $xr0, $xr1 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           250:  xvst $xr0, $a0, 0 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~
# |           251:  ret 
# | next:344'0     ~~~~~
# |           252: .Lfunc_end12: 
# | next:344'0     ~~~~~~~~~~~~~~
# |           253:  .size and_zext_masks_v4i64, .Lfunc_end12-and_zext_masks_v4i64 
# | next:344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           290:  .type and_sext_masks_v4i64, at function 
# |           291: and_sext_masks_v4i64: # @and_sext_masks_v4i64 
# |           292: # %bb.0: 
# |           293:  xvld $xr0, $a1, 0 
# |           294:  xvld $xr1, $a2, 0 
# |           295:  xvfcmp.clt.d $xr0, $xr0, $xr1 
# | next:415'0                                   X error: no match found
# |           296:  xvpickev.w $xr0, $xr0, $xr0 
# | next:415'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:415'1      ?                            possible intended match
# |           297:  xvpermi.d $xr0, $xr0, 216 
# | next:415'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           298:  vldi $vr1, -1777 
# | next:415'0     ~~~~~~~~~~~~~~~~~~
# |           299:  vand.v $vr0, $vr0, $vr1 
# | next:415'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |           300:  vext2xv.d.w $xr0, $xr0 
# | next:415'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |           301:  xvst $xr0, $a0, 0 
# | next:415'0     ~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.CodeGen/LoongArch/lasx/xvmskcond.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe --mtriple=loongarch32 --mattr=+32s,+lasx --verify-machineinstrs < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\xvmskcond.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\xvmskcond.ll --check-prefixes=CHECK,LA32
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' --mtriple=loongarch32 --mattr=+32s,+lasx --verify-machineinstrs
# 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\LoongArch\lasx\xvmskcond.ll' --check-prefixes=CHECK,LA32
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\xvmskcond.ll:890:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a0, $xr0, 6
# |              ^
# | <stdin>:623:31: note: scanning from here
# |  xvfcmp.clt.d $xr0, $xr1, $xr0
# |                               ^
# | <stdin>:626:2: note: possible intended match here
# |  vpickve2gr.w $a0, $vr0, 0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\lasx\xvmskcond.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           618:  .type xvmsk_ogt_v4f64_concat_poison, at function 
# |           619: xvmsk_ogt_v4f64_concat_poison: # @xvmsk_ogt_v4f64_concat_poison 
# |           620:  .cfi_startproc 
# |           621: # %bb.0: 
# |           622:  xvrepli.b $xr1, 0 
# |           623:  xvfcmp.clt.d $xr0, $xr1, $xr0 
# | next:890'0                                   X error: no match found
# |           624:  xvpickev.w $xr0, $xr0, $xr0 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           625:  xvpermi.d $xr0, $xr0, 216 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           626:  vpickve2gr.w $a0, $vr0, 0 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:890'1      ?                          possible intended match
# |           627:  vinsgr2vr.h $vr1, $a0, 0 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           628:  vpickve2gr.w $a0, $vr0, 1 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           629:  vinsgr2vr.h $vr1, $a0, 1 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           630:  vpickve2gr.w $a0, $vr0, 2 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           631:  vinsgr2vr.h $vr1, $a0, 2 
# | next:890'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.CodeGen/LoongArch/pr177863.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\llc.exe --mtriple=loongarch32 -mattr=+lasx --verify-machineinstrs < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\pr177863.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\pr177863.ll --check-prefix=LA32
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' --mtriple=loongarch32 -mattr=+lasx --verify-machineinstrs
# 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\LoongArch\pr177863.ll' --check-prefix=LA32
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\pr177863.ll:10:14: error: LA32-NEXT: expected string not found in input
# | ; LA32-NEXT: xvpickve2gr.w $a0, $xr0, 0
# |              ^
# | <stdin>:10:26: note: scanning from here
# |  xvseq.d $xr0, $xr1, $xr0
# |                          ^
# | <stdin>:11:2: note: possible intended match here
# |  xvpickev.w $xr0, $xr0, $xr0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\LoongArch\pr177863.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            5:  .prefalign 5, .Lfunc_end0, nop 
# |            6:  .type test, at function 
# |            7: test: # @test 
# |            8:  .cfi_startproc 
# |            9: # %bb.0: # %entry 
# |           10:  xvseq.d $xr0, $xr1, $xr0 
# | next:10'0                              X error: no match found
# |           11:  xvpickev.w $xr0, $xr0, $xr0 
# | next:10'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:10'1      ?                            possible intended match
# |           12:  xvpermi.d $xr0, $xr0, 216 
# | next:10'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           13:  vxori.b $vr0, $vr0, 255 
# | next:10'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14:  ret 
# | next:10'0     ~~~~~
# |           15: .Lfunc_end0: 
# | next:10'0     ~~~~~~~~~~~~~
# |           16:  .size test, .Lfunc_end0-test 
# | next:10'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/201548


More information about the llvm-commits mailing list