[llvm] expandFMINIMUM_FMAXIMUM: FMAXNUM/FMINNUM treat +0>-0 (PR #137367)

via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 3 19:18:29 PST 2025


github-actions[bot] wrote:

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

* 166727 tests passed
* 2909 tests skipped
* 1 test failed

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

### LLVM
<details>
<summary>LLVM.CodeGen/NVPTX/math-intrins.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/NVPTX/math-intrins.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll --check-prefixes=CHECK,CHECK-NOF16
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc
# 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/NVPTX/math-intrins.ll --check-prefixes=CHECK,CHECK-NOF16
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:685:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
# |                     ^
# | <stdin>:531:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:532:2: note: possible intended match here
# |  .reg .b32 %r<5>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:725:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
# |                     ^
# | <stdin>:549:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:550:2: note: possible intended match here
# |  .reg .b32 %r<4>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:762:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
# |                     ^
# | <stdin>:566:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:567:2: note: possible intended match here
# |  .reg .b32 %r<4>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:799:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
# |                     ^
# | <stdin>:584:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:585:2: note: possible intended match here
# |  .reg .b32 %r<5>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:839:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: .reg .b64 %fd<5>;
# |               ^
# | <stdin>:603:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:604:2: note: possible intended match here
# |  .reg .b64 %rd<5>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:1190:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
# |                     ^
# | <stdin>:815:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:816:2: note: possible intended match here
# |  .reg .b32 %r<4>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:1227:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<4>;
# |                     ^
# | <stdin>:832:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:833:2: note: possible intended match here
# |  .reg .b32 %r<4>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:1264:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
# |                     ^
# | <stdin>:850:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:851:2: note: possible intended match here
# |  .reg .b32 %r<5>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:1304:21: error: CHECK-NOF16-NEXT: expected string not found in input
# | ; CHECK-NOF16-NEXT: .reg .b32 %f<5>;
# |                     ^
# | <stdin>:869:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:870:2: note: possible intended match here
# |  .reg .b32 %r<5>;
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll:1344:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: .reg .b64 %fd<5>;
# |               ^
# | <stdin>:888:19: note: scanning from here
# |  .reg .pred %p<2>;
# |                   ^
# | <stdin>:889:2: note: possible intended match here
# |  .reg .b64 %rd<5>;
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/NVPTX/math-intrins.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            526: .visible .func (.param .b32 func_retval0) minimum_float( 
# |            527:  .param .b32 minimum_float_param_0, 
# |            528:  .param .b32 minimum_float_param_1 
# |            529: ) // @minimum_float 
# |            530: { 
# |            531:  .reg .pred %p<2>; 
# | next:685'0                        X error: no match found
# |            532:  .reg .b32 %r<5>; 
# | next:685'0      ~~~~~~~~~~~~~~~~~~
# | next:685'1       ?                 possible intended match
# |            533:  
# | next:685'0      ~
# |            534: // %bb.0: 
# | next:685'0      ~~~~~~~~~~
# |            535:  ld.param.b32 %r1, [minimum_float_param_0]; 
# | next:685'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            536:  ld.param.b32 %r2, [minimum_float_param_1]; 
# | next:685'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            537:  setp.nan.f32 %p1, %r1, %r2; 
# | next:685'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            544:  // .globl minimum_imm1 // -- Begin function minimum_imm1 
# | next:685'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            545: .visible .func (.param .b32 func_retval0) minimum_imm1( 
# | next:685'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            546:  .param .b32 minimum_imm1_param_0 
# |            547: ) // @minimum_imm1 
# |            548: { 
# |            549:  .reg .pred %p<2>; 
# | next:725'0                        X error: no match found
# |            550:  .reg .b32 %r<4>; 
# | next:725'0      ~~~~~~~~~~~~~~~~~~
# | next:725'1       ?                 possible intended match
# |            551:  
# | next:725'0      ~
# |            552: // %bb.0: 
# | next:725'0      ~~~~~~~~~~
# |            553:  ld.param.b32 %r1, [minimum_imm1_param_0]; 
# | next:725'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            554:  setp.nan.f32 %p1, %r1, %r1; 
# | next:725'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            555:  min.f32 %r2, %r1, 0f00000000; 
# | next:725'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            561:  // .globl minimum_imm2 // -- Begin function minimum_imm2 
# | next:725'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            562: .visible .func (.param .b32 func_retval0) minimum_imm2( 
# | next:725'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            563:  .param .b32 minimum_imm2_param_0 
# |            564: ) // @minimum_imm2 
# |            565: { 
# |            566:  .reg .pred %p<2>; 
# | next:762'0                        X error: no match found
# |            567:  .reg .b32 %r<4>; 
# | next:762'0      ~~~~~~~~~~~~~~~~~~
# | next:762'1       ?                 possible intended match
# |            568:  
# | next:762'0      ~
# |            569: // %bb.0: 
# | next:762'0      ~~~~~~~~~~
# |            570:  ld.param.b32 %r1, [minimum_imm2_param_0]; 
# | next:762'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            571:  setp.nan.f32 %p1, %r1, %r1; 
# | next:762'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            572:  min.f32 %r2, %r1, 0f00000000; 
# | next:762'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            579: .visible .func (.param .b32 func_retval0) minimum_float_ftz( 
# | next:762'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            580:  .param .b32 minimum_float_ftz_param_0, 
# |            581:  .param .b32 minimum_float_ftz_param_1 
# |            582: ) // @minimum_float_ftz 
# |            583: { 
# |            584:  .reg .pred %p<2>; 
# | next:799'0                        X error: no match found
# |            585:  .reg .b32 %r<5>; 
# | next:799'0      ~~~~~~~~~~~~~~~~~~
# | next:799'1       ?                 possible intended match
# |            586:  
# | next:799'0      ~
# |            587: // %bb.0: 
# | next:799'0      ~~~~~~~~~~
# |            588:  ld.param.b32 %r1, [minimum_float_ftz_param_0]; 
# | next:799'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            589:  ld.param.b32 %r2, [minimum_float_ftz_param_1]; 
# | next:799'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            590:  setp.nan.ftz.f32 %p1, %r1, %r2; 
# | next:799'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            598: .visible .func (.param .b64 func_retval0) minimum_double( 
# | next:799'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            599:  .param .b64 minimum_double_param_0, 
# |            600:  .param .b64 minimum_double_param_1 
# |            601: ) // @minimum_double 
# |            602: { 
# |            603:  .reg .pred %p<2>; 
# | next:839'0                        X error: no match found
# |            604:  .reg .b64 %rd<5>; 
# | next:839'0      ~~~~~~~~~~~~~~~~~~~
# | next:839'1       ?                  possible intended match
# |            605:  
# | next:839'0      ~
# |            606: // %bb.0: 
# | next:839'0      ~~~~~~~~~~
# |            607:  ld.param.b64 %rd1, [minimum_double_param_0]; 
# | next:839'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            608:  ld.param.b64 %rd2, [minimum_double_param_1]; 
# | next:839'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            609:  setp.nan.f64 %p1, %rd1, %rd2; 
# | next:839'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            810:  // .globl maximum_imm1 // -- Begin function maximum_imm1 
# |            811: .visible .func (.param .b32 func_retval0) maximum_imm1( 
# |            812:  .param .b32 maximum_imm1_param_0 
# |            813: ) // @maximum_imm1 
# |            814: { 
# |            815:  .reg .pred %p<2>; 
# | next:1190'0                       X error: no match found
# |            816:  .reg .b32 %r<4>; 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~
# | next:1190'1      ?                 possible intended match
# |            817:  
# | next:1190'0     ~
# |            818: // %bb.0: 
# | next:1190'0     ~~~~~~~~~~
# |            819:  ld.param.b32 %r1, [maximum_imm1_param_0]; 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            820:  setp.nan.f32 %p1, %r1, %r1; 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            821:  max.f32 %r2, %r1, 0f00000000; 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            827:  // .globl maximum_imm2 // -- Begin function maximum_imm2 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            828: .visible .func (.param .b32 func_retval0) maximum_imm2( 
# | next:1190'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            829:  .param .b32 maximum_imm2_param_0 
# |            830: ) // @maximum_imm2 
# |            831: { 
# |            832:  .reg .pred %p<2>; 
# | next:1227'0                       X error: no match found
# |            833:  .reg .b32 %r<4>; 
# | next:1227'0     ~~~~~~~~~~~~~~~~~~
# | next:1227'1      ?                 possible intended match
# |            834:  
# | next:1227'0     ~
# |            835: // %bb.0: 
# | next:1227'0     ~~~~~~~~~~
# |            836:  ld.param.b32 %r1, [maximum_imm2_param_0]; 
# | next:1227'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            837:  setp.nan.f32 %p1, %r1, %r1; 
# | next:1227'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            838:  max.f32 %r2, %r1, 0f00000000; 
# | next:1227'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            845: .visible .func (.param .b32 func_retval0) maximum_float( 
# | next:1227'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            846:  .param .b32 maximum_float_param_0, 
# |            847:  .param .b32 maximum_float_param_1 
# |            848: ) // @maximum_float 
# |            849: { 
# |            850:  .reg .pred %p<2>; 
# | next:1264'0                       X error: no match found
# |            851:  .reg .b32 %r<5>; 
# | next:1264'0     ~~~~~~~~~~~~~~~~~~
# | next:1264'1      ?                 possible intended match
# |            852:  
# | next:1264'0     ~
# |            853: // %bb.0: 
# | next:1264'0     ~~~~~~~~~~
# |            854:  ld.param.b32 %r1, [maximum_float_param_0]; 
# | next:1264'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            855:  ld.param.b32 %r2, [maximum_float_param_1]; 
# | next:1264'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            856:  setp.nan.f32 %p1, %r1, %r2; 
# | next:1264'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            864: .visible .func (.param .b32 func_retval0) maximum_float_ftz( 
# | next:1264'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            865:  .param .b32 maximum_float_ftz_param_0, 
# |            866:  .param .b32 maximum_float_ftz_param_1 
# |            867: ) // @maximum_float_ftz 
# |            868: { 
# |            869:  .reg .pred %p<2>; 
# | next:1304'0                       X error: no match found
# |            870:  .reg .b32 %r<5>; 
# | next:1304'0     ~~~~~~~~~~~~~~~~~~
# | next:1304'1      ?                 possible intended match
# |            871:  
# | next:1304'0     ~
# |            872: // %bb.0: 
# | next:1304'0     ~~~~~~~~~~
# |            873:  ld.param.b32 %r1, [maximum_float_ftz_param_0]; 
# | next:1304'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            874:  ld.param.b32 %r2, [maximum_float_ftz_param_1]; 
# | next:1304'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            875:  setp.nan.ftz.f32 %p1, %r1, %r2; 
# | next:1304'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            883: .visible .func (.param .b64 func_retval0) maximum_double( 
# | next:1304'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            884:  .param .b64 maximum_double_param_0, 
# |            885:  .param .b64 maximum_double_param_1 
# |            886: ) // @maximum_double 
# |            887: { 
# |            888:  .reg .pred %p<2>; 
# | next:1344'0                       X error: no match found
# |            889:  .reg .b64 %rd<5>; 
# | next:1344'0     ~~~~~~~~~~~~~~~~~~~
# | next:1344'1      ?                  possible intended match
# |            890:  
# | next:1344'0     ~
# |            891: // %bb.0: 
# | next:1344'0     ~~~~~~~~~~
# |            892:  ld.param.b64 %rd1, [maximum_double_param_0]; 
# | next:1344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            893:  ld.param.b64 %rd2, [maximum_double_param_1]; 
# | next:1344'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            894:  setp.nan.f64 %p1, %rd1, %rd2; 
# | next:1344'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/137367


More information about the llvm-commits mailing list