[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