[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