[llvm] [TTI] Include scalarization overhead for icmp/fcmp result (PR #206697)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 30 03:42:53 PDT 2026


github-actions[bot] wrote:

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

* 176454 tests passed
* 3560 tests skipped
* 3 tests failed

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

### LLVM
<details>
<summary>LLVM.Analysis/CostModel/AMDGPU/arith-sminmax.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1010 < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=FAST /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt '-passes=print<cost-model>' -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1010
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=FAST /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll:42:14: error: FAST-NEXT: expected string not found in input
# | ; FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2I64 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> undef, <2 x i64> undef)
# |              ^
# | <stdin>:2:111: note: scanning from here
# | Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.smax.i64(i64 undef, i64 undef)
# |                                                                                                               ^
# | <stdin>:3:1: note: possible intended match here
# | Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> undef, <2 x i64> undef)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll:148:14: error: FAST-NEXT: expected string not found in input
# | ; FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2I64 = call <2 x i64> @llvm.smin.v2i64(<2 x i64> undef, <2 x i64> undef)
# |              ^
# | <stdin>:26:111: note: scanning from here
# | Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.smin.i64(i64 undef, i64 undef)
# |                                                                                                               ^
# | <stdin>:27:1: note: possible intended match here
# | Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.smin.v2i64(<2 x i64> undef, <2 x i64> undef)
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-sminmax.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1: Printing analysis 'Cost Model Analysis' for function 'smax': 
# |             2: Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.smax.i64(i64 undef, i64 undef) 
# | next:42'0                                                                                                                   {   search range start (exclusive)
# | next:42'1                                                                                                                       error: no match found in search range
# |             3: Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> undef, <2 x i64> undef) 
# | next:42'2      ?                                                                                                                                      possible intended match
# |             4: Cost Model: Found an estimated cost of 12 for instruction: %V4I64 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> undef, <4 x i64> undef) 
# |             5: Cost Model: Found an estimated cost of 24 for instruction: %V8I64 = call <8 x i64> @llvm.smax.v8i64(<8 x i64> undef, <8 x i64> undef) 
# |             6: Cost Model: Found an estimated cost of 1 for instruction: %I32 = call i32 @llvm.smax.i32(i32 undef, i32 undef) 
# |             7: Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = call <2 x i32> @llvm.smax.v2i32(<2 x i32> undef, <2 x i32> undef) 
# |             8: Cost Model: Found an estimated cost of 12 for instruction: %V4I32 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> undef, <4 x i32> undef) 
# |             .
# |             .
# |             .
# |            20: Cost Model: Found an estimated cost of 16 for instruction: %V8I8 = call <8 x i8> @llvm.smax.v8i8(<8 x i8> undef, <8 x i8> undef) 
# |            21: Cost Model: Found an estimated cost of 32 for instruction: %V16I8 = call <16 x i8> @llvm.smax.v16i8(<16 x i8> undef, <16 x i8> undef) 
# |            22: Cost Model: Found an estimated cost of 64 for instruction: %V32I8 = call <32 x i8> @llvm.smax.v32i8(<32 x i8> undef, <32 x i8> undef) 
# |            23: Cost Model: Found an estimated cost of 128 for instruction: %V64I8 = call <64 x i8> @llvm.smax.v64i8(<64 x i8> undef, <64 x i8> undef) 
# |            24: Cost Model: Found an estimated cost of 10 for instruction: ret i32 undef 
# |            25: Printing analysis 'Cost Model Analysis' for function 'smin': 
# | next:42'3                                                                 }   search range end (exclusive)
# |            26: Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.smin.i64(i64 undef, i64 undef) 
# | next:148'0                                                                                                                  {   search range start (exclusive)
# | next:148'1                                                                                                                      error: no match found in search range
# |            27: Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.smin.v2i64(<2 x i64> undef, <2 x i64> undef) 
# | next:148'2     ?                                                                                                                                      possible intended match
# |            28: Cost Model: Found an estimated cost of 12 for instruction: %V4I64 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> undef, <4 x i64> undef) 
# |            29: Cost Model: Found an estimated cost of 24 for instruction: %V8I64 = call <8 x i64> @llvm.smin.v8i64(<8 x i64> undef, <8 x i64> undef) 
# |            30: Cost Model: Found an estimated cost of 1 for instruction: %I32 = call i32 @llvm.smin.i32(i32 undef, i32 undef) 
# |            31: Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = call <2 x i32> @llvm.smin.v2i32(<2 x i32> undef, <2 x i32> undef) 
# |            32: Cost Model: Found an estimated cost of 12 for instruction: %V4I32 = call <4 x i32> @llvm.smin.v4i32(<4 x i32> undef, <4 x i32> undef) 
# |             .
# |             .
# |             .
# |            43: Cost Model: Found an estimated cost of 8 for instruction: %V4I8 = call <4 x i8> @llvm.smin.v4i8(<4 x i8> undef, <4 x i8> undef) 
# |            44: Cost Model: Found an estimated cost of 16 for instruction: %V8I8 = call <8 x i8> @llvm.smin.v8i8(<8 x i8> undef, <8 x i8> undef) 
# |            45: Cost Model: Found an estimated cost of 32 for instruction: %V16I8 = call <16 x i8> @llvm.smin.v16i8(<16 x i8> undef, <16 x i8> undef) 
# |            46: Cost Model: Found an estimated cost of 64 for instruction: %V32I8 = call <32 x i8> @llvm.smin.v32i8(<32 x i8> undef, <32 x i8> undef) 
# |            47: Cost Model: Found an estimated cost of 128 for instruction: %V64I8 = call <64 x i8> @llvm.smin.v64i8(<64 x i8> undef, <64 x i8> undef) 
# |            48: Cost Model: Found an estimated cost of 10 for instruction: ret i32 undef 
# | next:148'3                                                                              } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Analysis/CostModel/AMDGPU/arith-uminmax.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1010 < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=FAST /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt '-passes=print<cost-model>' -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1010
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=FAST /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll:42:14: error: FAST-NEXT: expected string not found in input
# | ; FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2I64 = call <2 x i64> @llvm.umax.v2i64(<2 x i64> undef, <2 x i64> undef)
# |              ^
# | <stdin>:2:111: note: scanning from here
# | Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.umax.i64(i64 undef, i64 undef)
# |                                                                                                               ^
# | <stdin>:3:1: note: possible intended match here
# | Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.umax.v2i64(<2 x i64> undef, <2 x i64> undef)
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll:148:14: error: FAST-NEXT: expected string not found in input
# | ; FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V2I64 = call <2 x i64> @llvm.umin.v2i64(<2 x i64> undef, <2 x i64> undef)
# |              ^
# | <stdin>:26:111: note: scanning from here
# | Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.umin.i64(i64 undef, i64 undef)
# |                                                                                                               ^
# | <stdin>:27:1: note: possible intended match here
# | Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.umin.v2i64(<2 x i64> undef, <2 x i64> undef)
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Analysis/CostModel/AMDGPU/arith-uminmax.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1: Printing analysis 'Cost Model Analysis' for function 'umax': 
# |             2: Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.umax.i64(i64 undef, i64 undef) 
# | next:42'0                                                                                                                   {   search range start (exclusive)
# | next:42'1                                                                                                                       error: no match found in search range
# |             3: Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.umax.v2i64(<2 x i64> undef, <2 x i64> undef) 
# | next:42'2      ?                                                                                                                                      possible intended match
# |             4: Cost Model: Found an estimated cost of 12 for instruction: %V4I64 = call <4 x i64> @llvm.umax.v4i64(<4 x i64> undef, <4 x i64> undef) 
# |             5: Cost Model: Found an estimated cost of 24 for instruction: %V8I64 = call <8 x i64> @llvm.umax.v8i64(<8 x i64> undef, <8 x i64> undef) 
# |             6: Cost Model: Found an estimated cost of 1 for instruction: %I32 = call i32 @llvm.umax.i32(i32 undef, i32 undef) 
# |             7: Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = call <2 x i32> @llvm.umax.v2i32(<2 x i32> undef, <2 x i32> undef) 
# |             8: Cost Model: Found an estimated cost of 12 for instruction: %V4I32 = call <4 x i32> @llvm.umax.v4i32(<4 x i32> undef, <4 x i32> undef) 
# |             .
# |             .
# |             .
# |            20: Cost Model: Found an estimated cost of 16 for instruction: %V8I8 = call <8 x i8> @llvm.umax.v8i8(<8 x i8> undef, <8 x i8> undef) 
# |            21: Cost Model: Found an estimated cost of 32 for instruction: %V16I8 = call <16 x i8> @llvm.umax.v16i8(<16 x i8> undef, <16 x i8> undef) 
# |            22: Cost Model: Found an estimated cost of 64 for instruction: %V32I8 = call <32 x i8> @llvm.umax.v32i8(<32 x i8> undef, <32 x i8> undef) 
# |            23: Cost Model: Found an estimated cost of 128 for instruction: %V64I8 = call <64 x i8> @llvm.umax.v64i8(<64 x i8> undef, <64 x i8> undef) 
# |            24: Cost Model: Found an estimated cost of 10 for instruction: ret i32 undef 
# |            25: Printing analysis 'Cost Model Analysis' for function 'umin': 
# | next:42'3                                                                 }   search range end (exclusive)
# |            26: Cost Model: Found an estimated cost of 2 for instruction: %I64 = call i64 @llvm.umin.i64(i64 undef, i64 undef) 
# | next:148'0                                                                                                                  {   search range start (exclusive)
# | next:148'1                                                                                                                      error: no match found in search range
# |            27: Cost Model: Found an estimated cost of 6 for instruction: %V2I64 = call <2 x i64> @llvm.umin.v2i64(<2 x i64> undef, <2 x i64> undef) 
# | next:148'2     ?                                                                                                                                      possible intended match
# |            28: Cost Model: Found an estimated cost of 12 for instruction: %V4I64 = call <4 x i64> @llvm.umin.v4i64(<4 x i64> undef, <4 x i64> undef) 
# |            29: Cost Model: Found an estimated cost of 24 for instruction: %V8I64 = call <8 x i64> @llvm.umin.v8i64(<8 x i64> undef, <8 x i64> undef) 
# |            30: Cost Model: Found an estimated cost of 1 for instruction: %I32 = call i32 @llvm.umin.i32(i32 undef, i32 undef) 
# |            31: Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = call <2 x i32> @llvm.umin.v2i32(<2 x i32> undef, <2 x i32> undef) 
# |            32: Cost Model: Found an estimated cost of 12 for instruction: %V4I32 = call <4 x i32> @llvm.umin.v4i32(<4 x i32> undef, <4 x i32> undef) 
# |             .
# |             .
# |             .
# |            43: Cost Model: Found an estimated cost of 8 for instruction: %V4I8 = call <4 x i8> @llvm.umin.v4i8(<4 x i8> undef, <4 x i8> undef) 
# |            44: Cost Model: Found an estimated cost of 16 for instruction: %V8I8 = call <8 x i8> @llvm.umin.v8i8(<8 x i8> undef, <8 x i8> undef) 
# |            45: Cost Model: Found an estimated cost of 32 for instruction: %V16I8 = call <16 x i8> @llvm.umin.v16i8(<16 x i8> undef, <16 x i8> undef) 
# |            46: Cost Model: Found an estimated cost of 64 for instruction: %V32I8 = call <32 x i8> @llvm.umin.v32i8(<32 x i8> undef, <32 x i8> undef) 
# |            47: Cost Model: Found an estimated cost of 128 for instruction: %V64I8 = call <64 x i8> @llvm.umin.v64i8(<64 x i8> undef, <64 x i8> undef) 
# |            48: Cost Model: Found an estimated cost of 10 for instruction: ret i32 undef 
# | next:148'3                                                                              } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Transforms/SLPVectorizer/AMDGPU/min_max.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -passes=slp-vectorizer /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=GCN,GFX7 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -passes=slp-vectorizer /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=GCN,GFX7 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -passes=slp-vectorizer /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=GCN,GFX8 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -passes=slp-vectorizer /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefixes=GCN,GFX8 /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll:360:14: error: GFX8-NEXT: is not on the line after the previous match
# | ; GFX8-NEXT: [[ARG1_0:%.*]] = extractelement <4 x i16> [[ARG1:%.*]], i64 0
# |              ^
# | <stdin>:133:2: note: 'next' match was here
# |  %arg1.0 = extractelement <4 x i16> %arg1, i64 0
# |  ^
# | <stdin>:130:49: note: previous match ended here
# |  %arg0.1 = extractelement <4 x i16> %arg0, i64 1
# |                                                 ^
# | <stdin>:131:1: note: non-matching line after previous match is here
# |  %arg0.2 = extractelement <4 x i16> %arg0, i64 2
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/SLPVectorizer/AMDGPU/min_max.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           125: } 
# |           126:  
# |           127: define <4 x i16> @uadd_sat_v4i16(<4 x i16> %arg0, <4 x i16> %arg1) #0 { 
# |           128: bb: 
# |           129:  %arg0.0 = extractelement <4 x i16> %arg0, i64 0 
# |           130:  %arg0.1 = extractelement <4 x i16> %arg0, i64 1 
# | next:360'0                                                    {   search range start (exclusive)
# |           131:  %arg0.2 = extractelement <4 x i16> %arg0, i64 2 
# |           132:  %arg0.3 = extractelement <4 x i16> %arg0, i64 3 
# |           133:  %arg1.0 = extractelement <4 x i16> %arg1, i64 0 
# | next:360'1      !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   error: match on wrong line
# |           134:  %arg1.1 = extractelement <4 x i16> %arg1, i64 1 
# |           135:  %arg1.2 = extractelement <4 x i16> %arg1, i64 2 
# |           136:  %arg1.3 = extractelement <4 x i16> %arg1, i64 3 
# |           137:  %add.0 = call i16 @llvm.umin.i16(i16 %arg0.0, i16 %arg1.0) 
# |           138:  %add.1 = call i16 @llvm.umin.i16(i16 %arg0.1, i16 %arg1.1) 
# |             .
# |             .
# |             .
# |           168:  
# |           169: ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) 
# |           170: declare i32 @llvm.umin.i32(i32, i32) #1 
# |           171:  
# |           172: attributes #0 = { "target-cpu"="fiji" } 
# |           173: attributes #1 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="fiji" } 
# | next:360'2                                                                                                                                          } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# 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/206697


More information about the llvm-commits mailing list