[llvm] [NFC][AMDGPU] Add cost tests for narrow integer to fp casts (PR #225341)
Dmitry Sidorov via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 22 02:35:07 PDT 2026
https://github.com/MrSidims created https://github.com/llvm/llvm-project/pull/225341
Covers integer sources from a byte to 31 bits converted to half, float,
bfloat and double, as vector lanes and as scalars, over the subtarget
combinations that change the expansion. The existing cast tests get the
same subtarget coverage and the cases they were missing. The costs
recorded here are the ones the model reports today.
---
<sub>Stack created with <a href="https://github.com/github/gh-stack">GitHub Stacks CLI</a> • <a href="https://gh.io/stacks-feedback">Give Feedback 💬</a></sub>
>From 63228aa2a7d80531006b1856a2b986cee85521bc Mon Sep 17 00:00:00 2001
From: Dmitry Sidorov <Dmitry.Sidorov at amd.com>
Date: Thu, 17 Sep 2026 01:35:50 +0200
Subject: [PATCH] [NFC][AMDGPU] Add cost tests for narrow integer to fp casts
Covers integer sources from a byte to 31 bits converted to half, float,
bfloat and double, as vector lanes and as scalars, over the subtarget
combinations that change the expansion. The existing cast tests get the
same subtarget coverage and the cases they were missing. The costs
recorded here are the ones the model reports today.
---
llvm/test/Analysis/CostModel/AMDGPU/cast.ll | 27 +-
.../CostModel/AMDGPU/expanded-int-fp-casts.ll | 116 +---
llvm/test/Analysis/CostModel/AMDGPU/fptosi.ll | 17 +-
llvm/test/Analysis/CostModel/AMDGPU/fptoui.ll | 17 +-
.../CostModel/AMDGPU/narrow-int-to-bfloat.ll | 241 +++++++
.../CostModel/AMDGPU/narrow-int-to-fp.ll | 642 ++++++++++++++++++
6 files changed, 954 insertions(+), 106 deletions(-)
create mode 100644 llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-bfloat.ll
create mode 100644 llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-fp.ll
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/cast.ll b/llvm/test/Analysis/CostModel/AMDGPU/cast.ll
index eedca86f6bc32..aab8fbe6f5e4d 100644
--- a/llvm/test/Analysis/CostModel/AMDGPU/cast.ll
+++ b/llvm/test/Analysis/CostModel/AMDGPU/cast.ll
@@ -1,15 +1,15 @@
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu11.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,NOSDWA %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,SLOW %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu11.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,QUARTER64,NOSDWA %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64,FAST-QUARTER64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,FULL64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64,FAST-QUARTER64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,QUARTER64,SLOW %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu11.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,NOSDWA-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,SLOW-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu11.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,QUARTER64-SIZE,NOSDWA-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE,FAST-QUARTER64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,FULL64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE,FAST-QUARTER64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,QUARTER64-SIZE,SLOW-SIZE %s
; END.
define i32 @add(i32 %arg) {
@@ -685,3 +685,10 @@ define void @fp_conv(<8 x float> %a, <16 x float>%b, <4 x float> %c) {
%A4 = fptrunc <8 x double> poison to <8 x float>
ret void
}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; FAST-QUARTER64: {{.*}}
+; FAST-QUARTER64-SIZE: {{.*}}
+; FULL64: {{.*}}
+; FULL64-SIZE: {{.*}}
+; QUARTER64: {{.*}}
+; QUARTER64-SIZE: {{.*}}
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/expanded-int-fp-casts.ll b/llvm/test/Analysis/CostModel/AMDGPU/expanded-int-fp-casts.ll
index 9434c87f23dbd..5e97470eea6b2 100644
--- a/llvm/test/Analysis/CostModel/AMDGPU/expanded-int-fp-casts.ll
+++ b/llvm/test/Analysis/CostModel/AMDGPU/expanded-int-fp-casts.ll
@@ -1,20 +1,20 @@
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "instruction:.*(sitofp|uitofp|fptosi|fptoui)"
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu7.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu8.03-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa -mattr=-gfx9-insts < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.06-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.42-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa -mattr=-16-bit-insts < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6
-; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.42-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6,GFX6-THROUGHPUT
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu7.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6,GFX7
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu8.03-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT,GFX8
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT,GFX9
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa -mattr=-gfx9-insts < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT,GFX8
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.06-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF,GFX9
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.42-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL,GFX9
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL,NATIVE-SDWA
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT,GFX11
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa -mattr=-16-bit-insts < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6,GFX7
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX9-THROUGHPUT,NATIVE-NOSDWA
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,GFX6,GFX6-SIZE
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF,GFX9
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.42-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL,GFX9
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,FULL,NATIVE-SDWA
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=ALL,HALF,NATIVE-NOSDWA
; Half fits in i32. Bfloat must extend to f32 and use the full i64 expansion.
define void @bf16_to_i64(bfloat %a, <2 x bfloat> %b, half %h) {
@@ -90,73 +90,6 @@ define void @i64_to_bf16(i64 %a, <2 x i64> %b, <3 x i64> %c, i48 %d) {
ret void
}
-; Subword extraction and bf16 rounding are independent costs. Native packed
-; rounding still needs one integer-to-f32 conversion for each input lane.
-define void @narrow_to_bf16(<4 x i8> %a, <2 x i16> %b, <3 x i32> %c) {
-; GFX6-LABEL: 'narrow_to_bf16'
-; GFX6: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i8> %a to <4 x bfloat>
-; GFX6: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i8> %a to <4 x bfloat>
-; GFX6: Cost Model: Found an estimated cost of 2 for instruction: %hs = sitofp <2 x i16> %b to <2 x bfloat>
-; GFX6: Cost Model: Found an estimated cost of 2 for instruction: %hu = uitofp <2 x i16> %b to <2 x bfloat>
-; GFX6: Cost Model: Found an estimated cost of 9 for instruction: %ws = sitofp <3 x i32> %c to <3 x bfloat>
-; GFX6: Cost Model: Found an estimated cost of 9 for instruction: %wu = uitofp <3 x i32> %c to <3 x bfloat>
-;
-; GFX9-THROUGHPUT-LABEL: 'narrow_to_bf16'
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i8> %a to <4 x bfloat>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i8> %a to <4 x bfloat>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %b to <2 x bfloat>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %b to <2 x bfloat>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 7 for instruction: %ws = sitofp <3 x i32> %c to <3 x bfloat>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 7 for instruction: %wu = uitofp <3 x i32> %c to <3 x bfloat>
-;
-; HALF-LABEL: 'narrow_to_bf16'
-; HALF: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i8> %a to <4 x bfloat>
-; HALF: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i8> %a to <4 x bfloat>
-; HALF: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %b to <2 x bfloat>
-; HALF: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %b to <2 x bfloat>
-; HALF: Cost Model: Found an estimated cost of 7 for instruction: %ws = sitofp <3 x i32> %c to <3 x bfloat>
-; HALF: Cost Model: Found an estimated cost of 7 for instruction: %wu = uitofp <3 x i32> %c to <3 x bfloat>
-;
-; FULL-LABEL: 'narrow_to_bf16'
-; FULL: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i8> %a to <4 x bfloat>
-; FULL: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i8> %a to <4 x bfloat>
-; FULL: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %b to <2 x bfloat>
-; FULL: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %b to <2 x bfloat>
-; FULL: Cost Model: Found an estimated cost of 7 for instruction: %ws = sitofp <3 x i32> %c to <3 x bfloat>
-; FULL: Cost Model: Found an estimated cost of 7 for instruction: %wu = uitofp <3 x i32> %c to <3 x bfloat>
-;
- %bs = sitofp <4 x i8> %a to <4 x bfloat>
- %bu = uitofp <4 x i8> %a to <4 x bfloat>
- %hs = sitofp <2 x i16> %b to <2 x bfloat>
- %hu = uitofp <2 x i16> %b to <2 x bfloat>
- %ws = sitofp <3 x i32> %c to <3 x bfloat>
- %wu = uitofp <3 x i32> %c to <3 x bfloat>
- ret void
-}
-
-; Unsigned lanes wider than a byte are zero extended before the conversion.
-define void @narrow_unsigned_lanes(<4 x i12> %a) {
-; GFX6-LABEL: 'narrow_unsigned_lanes'
-; GFX6: Cost Model: Found an estimated cost of 1 for instruction: %u = uitofp <4 x i12> %a to <4 x float>
-; GFX6: Cost Model: Found an estimated cost of 4 for instruction: %uh = uitofp <4 x i12> %a to <4 x half>
-;
-; GFX9-THROUGHPUT-LABEL: 'narrow_unsigned_lanes'
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 1 for instruction: %u = uitofp <4 x i12> %a to <4 x float>
-; GFX9-THROUGHPUT: Cost Model: Found an estimated cost of 10 for instruction: %uh = uitofp <4 x i12> %a to <4 x half>
-;
-; HALF-LABEL: 'narrow_unsigned_lanes'
-; HALF: Cost Model: Found an estimated cost of 1 for instruction: %u = uitofp <4 x i12> %a to <4 x float>
-; HALF: Cost Model: Found an estimated cost of 10 for instruction: %uh = uitofp <4 x i12> %a to <4 x half>
-;
-; FULL-LABEL: 'narrow_unsigned_lanes'
-; FULL: Cost Model: Found an estimated cost of 1 for instruction: %u = uitofp <4 x i12> %a to <4 x float>
-; FULL: Cost Model: Found an estimated cost of 10 for instruction: %uh = uitofp <4 x i12> %a to <4 x half>
-;
- %u = uitofp <4 x i12> %a to <4 x float>
- %uh = uitofp <4 x i12> %a to <4 x half>
- ret void
-}
-
; FP64 rates vary independently of native trunc/floor support and code size.
define void @i64_double(i64 %a, <2 x i64> %b, double %c, <2 x double> %d, i48 %e) {
; ALL-LABEL: 'i64_double'
@@ -187,19 +120,25 @@ define void @i64_double(i64 %a, <2 x i64> %b, double %c, <2 x double> %d, i48 %e
}
; Integers of 33 to 63 bits are converted through i64.
-define void @i48(i48 %a, float %b, bfloat %c) {
+define void @i48(i48 %a, float %b, bfloat %c, <2 x float> %d, <2 x bfloat> %e) {
; ALL-LABEL: 'i48'
; ALL: Cost Model: Found an estimated cost of 1 for instruction: %s = sitofp i48 %a to float
; ALL: Cost Model: Found an estimated cost of 1 for instruction: %u = uitofp i48 %a to float
; ALL: Cost Model: Found an estimated cost of 1 for instruction: %rs = fptosi float %b to i48
; ALL: Cost Model: Found an estimated cost of 1 for instruction: %ru = fptoui float %b to i48
; ALL: Cost Model: Found an estimated cost of 1 for instruction: %bu = fptoui bfloat %c to i48
+; ALL: Cost Model: Found an estimated cost of 2 for instruction: %vrs = fptosi <2 x float> %d to <2 x i48>
+; ALL: Cost Model: Found an estimated cost of 2 for instruction: %vru = fptoui <2 x float> %d to <2 x i48>
+; ALL: Cost Model: Found an estimated cost of 2 for instruction: %vbu = fptoui <2 x bfloat> %e to <2 x i48>
;
%s = sitofp i48 %a to float
%u = uitofp i48 %a to float
%rs = fptosi float %b to i48
%ru = fptoui float %b to i48
%bu = fptoui bfloat %c to i48
+ %vrs = fptosi <2 x float> %d to <2 x i48>
+ %vru = fptoui <2 x float> %d to <2 x i48>
+ %vbu = fptoui <2 x bfloat> %e to <2 x i48>
ret void
}
@@ -275,3 +214,12 @@ define void @other_widths(i128 %a, double %b, <2 x i128> %c, <2 x double> %d, fp
%rqu = uitofp i64 %f to fp128
ret void
}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; GFX11: {{.*}}
+; GFX6-SIZE: {{.*}}
+; GFX6-THROUGHPUT: {{.*}}
+; GFX7: {{.*}}
+; GFX8: {{.*}}
+; GFX9: {{.*}}
+; NATIVE-NOSDWA: {{.*}}
+; NATIVE-SDWA: {{.*}}
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/fptosi.ll b/llvm/test/Analysis/CostModel/AMDGPU/fptosi.ll
index 545643bd43e3d..e122a9b667e7f 100644
--- a/llvm/test/Analysis/CostModel/AMDGPU/fptosi.ll
+++ b/llvm/test/Analysis/CostModel/AMDGPU/fptosi.ll
@@ -1,12 +1,12 @@
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,FULL64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64 %s
; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,SLOW %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,FULL64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE %s
; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,SLOW-SIZE %s
; END.
@@ -282,3 +282,8 @@ define i32 @fptosi_half_i64(i32 %arg) {
%V16I64 = fptosi <16 x half> poison to <16 x i64>
ret i32 poison
}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; FULL64: {{.*}}
+; FULL64-SIZE: {{.*}}
+; QUARTER64: {{.*}}
+; QUARTER64-SIZE: {{.*}}
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/fptoui.ll b/llvm/test/Analysis/CostModel/AMDGPU/fptoui.ll
index 1cd41d8376e45..3ed5d1ea77325 100644
--- a/llvm/test/Analysis/CostModel/AMDGPU/fptoui.ll
+++ b/llvm/test/Analysis/CostModel/AMDGPU/fptoui.ll
@@ -1,12 +1,12 @@
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
-; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,FULL64 %s
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,FAST,QUARTER64 %s
; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL,SLOW %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
-; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu10.10-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.0a-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,FULL64-SIZE %s
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu9.00-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,FAST-SIZE,QUARTER64-SIZE %s
; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgpu6.01-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE,SLOW-SIZE %s
; END.
@@ -282,3 +282,8 @@ define i32 @fptoui_half_i64(i32 %arg) {
%V16I64 = fptoui <16 x half> poison to <16 x i64>
ret i32 poison
}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; FULL64: {{.*}}
+; FULL64-SIZE: {{.*}}
+; QUARTER64: {{.*}}
+; QUARTER64-SIZE: {{.*}}
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-bfloat.ll b/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-bfloat.ll
new file mode 100644
index 0000000000000..1aa34e3b2bf3b
--- /dev/null
+++ b/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-bfloat.ll
@@ -0,0 +1,241 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "instruction:.*itofp" --version 6
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=NO16BIT
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu8.03-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=NOGFX9
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa -mattr=-sdwa < %s 2>&1 | FileCheck %s --check-prefixes=PACKED
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=PACKED
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA-BF16
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=PACKED-BF16
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=NO16BIT
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA
+
+; The RUN lines vary 16 bit instructions, SDWA, gfx9 instructions and the native bf16 conversion.
+; Subword extraction and bf16 rounding are independent costs. Native packed
+; rounding still needs one integer-to-f32 conversion for each input lane.
+define void @narrow_to_bfloat(<4 x i8> %a, <4 x i12> %b, <4 x i16> %c, <4 x i17> %d, <4 x i31> %e, <3 x i12> %f, <3 x i17> %g, <2 x i16> %h, <3 x i32> %i) {
+; NO16BIT-LABEL: 'narrow_to_bfloat'
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 2 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 2 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+; NOGFX9-LABEL: 'narrow_to_bfloat'
+; NOGFX9: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 10 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; NOGFX9: Cost Model: Found an estimated cost of 7 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+; SDWA-LABEL: 'narrow_to_bfloat'
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+; PACKED-LABEL: 'narrow_to_bfloat'
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+; SDWA-BF16-LABEL: 'narrow_to_bfloat'
+; SDWA-BF16: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 10 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; SDWA-BF16: Cost Model: Found an estimated cost of 7 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+; PACKED-BF16-LABEL: 'narrow_to_bfloat'
+; PACKED-BF16: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %cs = sitofp <4 x i16> %c to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %cu = uitofp <4 x i16> %c to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %ds = sitofp <4 x i17> %d to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %du = uitofp <4 x i17> %d to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %es = sitofp <4 x i31> %e to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 10 for instruction: %eu = uitofp <4 x i31> %e to <4 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %fs = sitofp <3 x i12> %f to <3 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %fu = uitofp <3 x i12> %f to <3 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %gs = sitofp <3 x i17> %g to <3 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %gu = uitofp <3 x i17> %g to <3 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 4 for instruction: %hs = sitofp <2 x i16> %h to <2 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 4 for instruction: %hu = uitofp <2 x i16> %h to <2 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %is = sitofp <3 x i32> %i to <3 x bfloat>
+; PACKED-BF16: Cost Model: Found an estimated cost of 7 for instruction: %iu = uitofp <3 x i32> %i to <3 x bfloat>
+;
+ %as = sitofp <4 x i8> %a to <4 x bfloat>
+ %au = uitofp <4 x i8> %a to <4 x bfloat>
+ %bs = sitofp <4 x i12> %b to <4 x bfloat>
+ %bu = uitofp <4 x i12> %b to <4 x bfloat>
+ %cs = sitofp <4 x i16> %c to <4 x bfloat>
+ %cu = uitofp <4 x i16> %c to <4 x bfloat>
+ %ds = sitofp <4 x i17> %d to <4 x bfloat>
+ %du = uitofp <4 x i17> %d to <4 x bfloat>
+ %es = sitofp <4 x i31> %e to <4 x bfloat>
+ %eu = uitofp <4 x i31> %e to <4 x bfloat>
+ %fs = sitofp <3 x i12> %f to <3 x bfloat>
+ %fu = uitofp <3 x i12> %f to <3 x bfloat>
+ %gs = sitofp <3 x i17> %g to <3 x bfloat>
+ %gu = uitofp <3 x i17> %g to <3 x bfloat>
+ %hs = sitofp <2 x i16> %h to <2 x bfloat>
+ %hu = uitofp <2 x i16> %h to <2 x bfloat>
+ %is = sitofp <3 x i32> %i to <3 x bfloat>
+ %iu = uitofp <3 x i32> %i to <3 x bfloat>
+ ret void
+}
+
+define void @narrow_scalars_to_bfloat(i8 %a, i12 %b, i16 %c, i17 %d, i31 %e) {
+; NO16BIT-LABEL: 'narrow_scalars_to_bfloat'
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+; NOGFX9-LABEL: 'narrow_scalars_to_bfloat'
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; NOGFX9: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+; SDWA-LABEL: 'narrow_scalars_to_bfloat'
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+; PACKED-LABEL: 'narrow_scalars_to_bfloat'
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+; SDWA-BF16-LABEL: 'narrow_scalars_to_bfloat'
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; SDWA-BF16: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+; PACKED-BF16-LABEL: 'narrow_scalars_to_bfloat'
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %as = sitofp i8 %a to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %au = uitofp i8 %a to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %bs = sitofp i12 %b to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %bu = uitofp i12 %b to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %cs = sitofp i16 %c to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %cu = uitofp i16 %c to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %ds = sitofp i17 %d to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %du = uitofp i17 %d to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %es = sitofp i31 %e to bfloat
+; PACKED-BF16: Cost Model: Found an estimated cost of 1 for instruction: %eu = uitofp i31 %e to bfloat
+;
+ %as = sitofp i8 %a to bfloat
+ %au = uitofp i8 %a to bfloat
+ %bs = sitofp i12 %b to bfloat
+ %bu = uitofp i12 %b to bfloat
+ %cs = sitofp i16 %c to bfloat
+ %cu = uitofp i16 %c to bfloat
+ %ds = sitofp i17 %d to bfloat
+ %du = uitofp i17 %d to bfloat
+ %es = sitofp i31 %e to bfloat
+ %eu = uitofp i31 %e to bfloat
+ ret void
+}
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-fp.ll b/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-fp.ll
new file mode 100644
index 0000000000000..37ae475c9b9c8
--- /dev/null
+++ b/llvm/test/Analysis/CostModel/AMDGPU/narrow-int-to-fp.ll
@@ -0,0 +1,642 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "instruction:.*itofp" --version 6
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=NO16BIT
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa -mattr=-16-bit-insts < %s 2>&1 | FileCheck %s --check-prefixes=NO16BIT
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.00-amd-amdhsa -mattr=-sdwa < %s 2>&1 | FileCheck %s --check-prefixes=PACKED
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa -mattr=-real-true16 < %s 2>&1 | FileCheck %s --check-prefixes=PACKED
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu11.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=TRUE16
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu9.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA-CVTPK
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu12.50-amd-amdhsa -mattr=-real-true16 < %s 2>&1 | FileCheck %s --check-prefixes=PACKED-CVTPK
+; RUN: opt -passes="print<cost-model>" -disable-output -mtriple=amdgpu12.50-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=TRUE16-CVTPK
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu6.01-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=NO16BIT-SIZE
+; RUN: opt -passes="print<cost-model>" -cost-kind=code-size -disable-output -mtriple=amdgpu9.00-amd-amdhsa < %s 2>&1 | FileCheck %s --check-prefixes=SDWA-SIZE
+
+; The RUN lines vary 16 bit instructions, SDWA, real true16 and the packed f16 conversion.
+
+; Lanes narrower than 16 bits are extracted before the conversion. Unsigned lanes
+; wider than a byte are zero extended.
+define void @narrow_lanes_to_fp(<4 x i8> %a, <4 x i12> %b, <3 x i16> %c, <8 x i16> %d, <8 x i8> %e) {
+; NO16BIT-LABEL: 'narrow_lanes_to_fp'
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 8 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; SDWA-LABEL: 'narrow_lanes_to_fp'
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; SDWA: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; SDWA: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; PACKED-LABEL: 'narrow_lanes_to_fp'
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; PACKED: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; PACKED: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; TRUE16-LABEL: 'narrow_lanes_to_fp'
+; TRUE16: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; TRUE16: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; TRUE16: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; SDWA-CVTPK-LABEL: 'narrow_lanes_to_fp'
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; PACKED-CVTPK-LABEL: 'narrow_lanes_to_fp'
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; TRUE16-CVTPK-LABEL: 'narrow_lanes_to_fp'
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; NO16BIT-SIZE-LABEL: 'narrow_lanes_to_fp'
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 8 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+; SDWA-SIZE-LABEL: 'narrow_lanes_to_fp'
+; SDWA-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %as = sitofp <4 x i8> %a to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %au = uitofp <4 x i8> %a to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %bs = sitofp <4 x i12> %b to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %bu = uitofp <4 x i12> %b to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i12> %b to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 7 for instruction: %cu = uitofp <3 x i16> %c to <3 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 22 for instruction: %ds = sitofp <8 x i16> %d to <8 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 8 for instruction: %es = sitofp <8 x i8> %e to <8 x half>
+;
+ %as = sitofp <4 x i8> %a to <4 x half>
+ %au = uitofp <4 x i8> %a to <4 x half>
+ %bs = sitofp <4 x i12> %b to <4 x half>
+ %bu = uitofp <4 x i12> %b to <4 x half>
+ %buf = uitofp <4 x i12> %b to <4 x float>
+ %cu = uitofp <3 x i16> %c to <3 x half>
+ %ds = sitofp <8 x i16> %d to <8 x half>
+ %es = sitofp <8 x i8> %e to <8 x half>
+ ret void
+}
+
+define void @wide_lanes_to_fp(<4 x i16> %a, <4 x i17> %b, <4 x i31> %c, <3 x i17> %d) {
+; NO16BIT-LABEL: 'wide_lanes_to_fp'
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 4 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; NO16BIT: Cost Model: Found an estimated cost of 9 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; SDWA-LABEL: 'wide_lanes_to_fp'
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; SDWA: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; PACKED-LABEL: 'wide_lanes_to_fp'
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; PACKED: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; TRUE16-LABEL: 'wide_lanes_to_fp'
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; TRUE16: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; TRUE16: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; SDWA-CVTPK-LABEL: 'wide_lanes_to_fp'
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; PACKED-CVTPK-LABEL: 'wide_lanes_to_fp'
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; TRUE16-CVTPK-LABEL: 'wide_lanes_to_fp'
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; NO16BIT-SIZE-LABEL: 'wide_lanes_to_fp'
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 4 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 9 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 9 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+; SDWA-SIZE-LABEL: 'wide_lanes_to_fp'
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp <4 x i16> %a to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp <4 x i16> %a to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %ash = sitofp <4 x i16> %a to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %auh = uitofp <4 x i16> %a to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp <4 x i17> %b to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp <4 x i17> %b to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %bsh = sitofp <4 x i17> %b to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %buh = uitofp <4 x i17> %b to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp <4 x i31> %c to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp <4 x i31> %c to <4 x float>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %csh = sitofp <4 x i31> %c to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 10 for instruction: %cuh = uitofp <4 x i31> %c to <4 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 7 for instruction: %dsh = sitofp <3 x i17> %d to <3 x half>
+; SDWA-SIZE: Cost Model: Found an estimated cost of 7 for instruction: %duh = uitofp <3 x i17> %d to <3 x half>
+;
+ %asf = sitofp <4 x i16> %a to <4 x float>
+ %auf = uitofp <4 x i16> %a to <4 x float>
+ %ash = sitofp <4 x i16> %a to <4 x half>
+ %auh = uitofp <4 x i16> %a to <4 x half>
+ %bsf = sitofp <4 x i17> %b to <4 x float>
+ %buf = uitofp <4 x i17> %b to <4 x float>
+ %bsh = sitofp <4 x i17> %b to <4 x half>
+ %buh = uitofp <4 x i17> %b to <4 x half>
+ %csf = sitofp <4 x i31> %c to <4 x float>
+ %cuf = uitofp <4 x i31> %c to <4 x float>
+ %csh = sitofp <4 x i31> %c to <4 x half>
+ %cuh = uitofp <4 x i31> %c to <4 x half>
+ %dsh = sitofp <3 x i17> %d to <3 x half>
+ %duh = uitofp <3 x i17> %d to <3 x half>
+ ret void
+}
+
+define void @wide_scalars_to_fp(i16 %a, i17 %b, i31 %c, i12 %d, i32 %e, i8 %f) {
+; NO16BIT-LABEL: 'wide_scalars_to_fp'
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; NO16BIT: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; SDWA-LABEL: 'wide_scalars_to_fp'
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; SDWA: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; PACKED-LABEL: 'wide_scalars_to_fp'
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; PACKED: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; TRUE16-LABEL: 'wide_scalars_to_fp'
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; TRUE16: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; SDWA-CVTPK-LABEL: 'wide_scalars_to_fp'
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; SDWA-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; PACKED-CVTPK-LABEL: 'wide_scalars_to_fp'
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; PACKED-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; TRUE16-CVTPK-LABEL: 'wide_scalars_to_fp'
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; TRUE16-CVTPK: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; NO16BIT-SIZE-LABEL: 'wide_scalars_to_fp'
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; NO16BIT-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+; SDWA-SIZE-LABEL: 'wide_scalars_to_fp'
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %asf = sitofp i16 %a to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %auf = uitofp i16 %a to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %ash = sitofp i16 %a to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %auh = uitofp i16 %a to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsf = sitofp i17 %b to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buf = uitofp i17 %b to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsh = sitofp i17 %b to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %buh = uitofp i17 %b to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bsd = sitofp i17 %b to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %bud = uitofp i17 %b to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csf = sitofp i31 %c to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuf = uitofp i31 %c to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csh = sitofp i31 %c to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cuh = uitofp i31 %c to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsf = sitofp i12 %d to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %duf = uitofp i12 %d to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsh = sitofp i12 %d to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %duh = uitofp i12 %d to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %esf = sitofp i32 %e to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %euf = uitofp i32 %e to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %esh = sitofp i32 %e to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %euh = uitofp i32 %e to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %asd = sitofp i16 %a to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %aud = uitofp i16 %a to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %csd = sitofp i31 %c to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %cud = uitofp i31 %c to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dsd = sitofp i12 %d to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %dud = uitofp i12 %d to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsf = sitofp i8 %f to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fuf = uitofp i8 %f to float
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsh = sitofp i8 %f to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fuh = uitofp i8 %f to half
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fsd = sitofp i8 %f to double
+; SDWA-SIZE: Cost Model: Found an estimated cost of 1 for instruction: %fud = uitofp i8 %f to double
+;
+ %asf = sitofp i16 %a to float
+ %auf = uitofp i16 %a to float
+ %ash = sitofp i16 %a to half
+ %auh = uitofp i16 %a to half
+ %bsf = sitofp i17 %b to float
+ %buf = uitofp i17 %b to float
+ %bsh = sitofp i17 %b to half
+ %buh = uitofp i17 %b to half
+ %bsd = sitofp i17 %b to double
+ %bud = uitofp i17 %b to double
+ %csf = sitofp i31 %c to float
+ %cuf = uitofp i31 %c to float
+ %csh = sitofp i31 %c to half
+ %cuh = uitofp i31 %c to half
+ %dsf = sitofp i12 %d to float
+ %duf = uitofp i12 %d to float
+ %dsh = sitofp i12 %d to half
+ %duh = uitofp i12 %d to half
+ %esf = sitofp i32 %e to float
+ %euf = uitofp i32 %e to float
+ %esh = sitofp i32 %e to half
+ %euh = uitofp i32 %e to half
+ %asd = sitofp i16 %a to double
+ %aud = uitofp i16 %a to double
+ %csd = sitofp i31 %c to double
+ %cud = uitofp i31 %c to double
+ %dsd = sitofp i12 %d to double
+ %dud = uitofp i12 %d to double
+ %fsf = sitofp i8 %f to float
+ %fuf = uitofp i8 %f to float
+ %fsh = sitofp i8 %f to half
+ %fuh = uitofp i8 %f to half
+ %fsd = sitofp i8 %f to double
+ %fud = uitofp i8 %f to double
+ ret void
+}
More information about the llvm-commits
mailing list