; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py ; RUN: opt < %s -passes="print" -cost-kind=all 2>&1 -disable-output -S -mtriple=aarch64--linux-gnu -mattr=+sve | FileCheck %s --check-prefix=CHECK-VSCALE-1 ; RUN: opt < %s -passes="print" -cost-kind=all 2>&1 -mcpu=neoverse-v1 -disable-output -S -mtriple=aarch64--linux-gnu -mattr=+sve | FileCheck %s --check-prefixes=CHECK-VSCALE-2,CHECK-SVE ; RUN: opt < %s -passes="print" -cost-kind=all 2>&1 -mcpu=neoverse-v1 -disable-output -S -mtriple=aarch64--linux-gnu -mattr=+sve2p1 | FileCheck %s --check-prefixes=CHECK-VSCALE-2,CHECK-SVE2p1-OR-SME2 ; RUN: opt < %s -passes="print" -cost-kind=all 2>&1 -mcpu=neoverse-v1 -disable-output -S -mtriple=aarch64--linux-gnu -mattr=+sme2 | FileCheck %s --check-prefixes=CHECK-VSCALE-2,CHECK-SVE2p1-OR-SME2 ; RUN: opt < %s -passes="print" -cost-kind=all 2>&1 -intrinsic-cost-strategy=type-based-intrinsic-cost -disable-output -S -mtriple=aarch64--linux-gnu -mattr=+sve | FileCheck %s --check-prefix=TYPE_BASED_ONLY target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" define void @vector_insert_extract( %v0, %v1, <16 x i32> %v2) { ; CHECK-VSCALE-1-LABEL: 'vector_insert_extract' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %extract_fixed_from_scalable = call <16 x i32> @llvm.vector.extract.v16i32.nxv4i32( %v0, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %insert_fixed_into_scalable = call @llvm.vector.insert.nxv4i32.v16i32( %v0, <16 x i32> %v2, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %extract_scalable_from_scalable = call @llvm.vector.extract.nxv4i32.nxv16i32( %v1, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %insert_scalable_into_scalable = call @llvm.vector.insert.nxv16i32.nxv4i32( %v1, %v0, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'vector_insert_extract' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %extract_fixed_from_scalable = call <16 x i32> @llvm.vector.extract.v16i32.nxv4i32( %v0, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %insert_fixed_into_scalable = call @llvm.vector.insert.nxv4i32.v16i32( %v0, <16 x i32> %v2, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %extract_scalable_from_scalable = call @llvm.vector.extract.nxv4i32.nxv16i32( %v1, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %insert_scalable_into_scalable = call @llvm.vector.insert.nxv16i32.nxv4i32( %v1, %v0, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'vector_insert_extract' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_fixed_from_scalable = call <16 x i32> @llvm.vector.extract.v16i32.nxv4i32( %v0, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_fixed_into_scalable = call @llvm.vector.insert.nxv4i32.v16i32( %v0, <16 x i32> %v2, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_scalable_from_scalable = call @llvm.vector.extract.nxv4i32.nxv16i32( %v1, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_scalable_into_scalable = call @llvm.vector.insert.nxv16i32.nxv4i32( %v1, %v0, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %extract_fixed_from_scalable = call <16 x i32> @llvm.vector.extract.v16i32.nxv4i32( %v0, i64 0) %insert_fixed_into_scalable = call @llvm.vector.insert.nxv4i32.v16i32( %v0, <16 x i32> %v2, i64 0) %extract_scalable_from_scalable = call @llvm.vector.extract.nxv4i32.nxv16i32( %v1, i64 0) %insert_scalable_into_scalable = call @llvm.vector.insert.nxv16i32.nxv4i32( %v1, %v0, i64 0) ret void } declare <16 x i32> @llvm.vector.extract.v16i32.nxv4i32(, i64) declare @llvm.vector.insert.nxv4i32.v16i32(, <16 x i32>, i64) declare @llvm.vector.extract.nxv4i32.nxv16i32(, i64) declare @llvm.vector.insert.nxv16i32.nxv4i32(, , i64) define void @vector_insert_extract_idxzero_128b() #1 { ; CHECK-VSCALE-1-LABEL: 'vector_insert_extract_idxzero_128b' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 0 for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 0 for: %extract_legal_fixed_from_scalable = call <2 x double> @llvm.vector.extract.v2f64.nxv2f64( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:6 Lat:12 SizeLat:12 for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'vector_insert_extract_idxzero_128b' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 0 for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 0 for: %extract_legal_fixed_from_scalable = call <2 x double> @llvm.vector.extract.v2f64.nxv2f64( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:6 Lat:12 SizeLat:12 for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'vector_insert_extract_idxzero_128b' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_legal_fixed_from_scalable = call <2 x double> @llvm.vector.extract.v2f64.nxv2f64( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> poison, i64 0) %extract_legal_fixed_from_scalable = call <2 x double> @llvm.vector.extract.v2f64.nxv2f64( poison, i64 0) %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.v2i1( poison, poison, i64 0) %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ret void } declare @llvm.vector.insert.nxv4f32.v4f32(, <4 x float>, i64) declare <2 x double> @llvm.vector.extract.v2f64.nxv2f64(, i64) declare @llvm.vector.insert.nxv16i1.v2i1(, , i64) declare @llvm.vector.extract.nxv4i1.nxv16i1(, i64) declare @llvm.vector.insert.nxv2f32.v2f32(, <2 x float>, i64) declare <4 x half> @llvm.vector.extract.v4f16.nxv4f16(, i64) declare @llvm.vector.insert.nxv4f32.nxv2f32(, , i64) declare @llvm.vector.extract.nxv4f32.nxv8f32(, i64) define void @vector_insert_extract_idxzero_256b() #2 { ; CHECK-VSCALE-1-LABEL: 'vector_insert_extract_idxzero_256b' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 0 for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv8i16.v16i16( poison, <16 x i16> poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 0 for: %extract_legal_fixed_from_scalable = call <8 x float> @llvm.vector.extract.v8f32.nxv4f32( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:6 Lat:12 SizeLat:12 for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'vector_insert_extract_idxzero_256b' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 0 for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv8i16.v16i16( poison, <16 x i16> poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 0 for: %extract_legal_fixed_from_scalable = call <8 x float> @llvm.vector.extract.v8f32.nxv4f32( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:6 Lat:12 SizeLat:12 for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'vector_insert_extract_idxzero_256b' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv8i16.v16i16( poison, <16 x i16> poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_legal_fixed_from_scalable = call <8 x float> @llvm.vector.extract.v8f32.nxv4f32( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.nxv2i1( poison, poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %insert_legal_fixed_into_scalable = call @llvm.vector.insert.nxv8i16.v16i16( poison, <16 x i16> poison, i64 0) %extract_legal_fixed_from_scalable = call <8 x float> @llvm.vector.extract.v8f32.nx4f32( poison, i64 0) %insert_nxv16i1_nxv2i1 = call @llvm.vector.insert.nxv16i1.v2i1( poison, poison, i64 0) %extract_nxv4i1_nxv16i1 = call @llvm.vector.extract.nxv4i1.nxv16i1( poison, i64 0) %extract_v8i1_nxv8i1 = call <8 x i1> @llvm.vector.extract.v8i1.nxv8i1( poison, i64 0) %insert_v2f32_nxv2f32 = call @llvm.vector.insert.nxv2f32.v2f32( poison, <2 x float> poison, i64 0) %extract_v4f16_nxv4f16 = call <4 x half> @llvm.vector.extract.v4f16.nxv4f16( poison, i64 0) %insert_nxv2f32_nxv4f32 = call @llvm.vector.insert.nxv4f32.nxv2f32( poison, poison, i64 0) %extract_nxv4f32_nxv8f32 = call @llvm.vector.extract.nxv4f32.nxv8f32( poison, i64 0) ret void } declare @llvm.vector.insert.nxv8i16.v16i16(, <16 x i16>, i64) declare <8 x float> @llvm.vector.extract.v8f32.nxv4f32(, i64) define void @reductions( %v0, %v1, %v2, %v3) { ; CHECK-VSCALE-1-LABEL: 'reductions' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %add_nxv1i32 = call i32 @llvm.vector.reduce.add.nxv1i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %add_nxv4i32 = call i32 @llvm.vector.reduce.add.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %add_nxv4i64 = call i64 @llvm.vector.reduce.add.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv1i32 = call i32 @llvm.vector.reduce.mul.nxv1i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i32 = call i32 @llvm.vector.reduce.mul.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i64 = call i64 @llvm.vector.reduce.mul.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %and_nxv1i32 = call i32 @llvm.vector.reduce.and.nxv1i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %and_nxv4i32 = call i32 @llvm.vector.reduce.and.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %and_nxv4i64 = call i64 @llvm.vector.reduce.and.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %or_nxv1i32 = call i32 @llvm.vector.reduce.or.nxv1i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %or_nxv4i32 = call i32 @llvm.vector.reduce.or.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %or_nxv4i64 = call i64 @llvm.vector.reduce.or.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %xor_nxv1i32 = call i32 @llvm.vector.reduce.xor.nxv1i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %xor_nxv4i32 = call i32 @llvm.vector.reduce.xor.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %xor_nxv4i64 = call i64 @llvm.vector.reduce.xor.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %umin_nxv1i64 = call i64 @llvm.vector.reduce.umin.nxv1i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %umin_nxv4i32 = call i32 @llvm.vector.reduce.umin.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %umin_nxv4i64 = call i64 @llvm.vector.reduce.umin.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %smin_nxv1i64 = call i64 @llvm.vector.reduce.smin.nxv1i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %smin_nxv4i32 = call i32 @llvm.vector.reduce.smin.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %smin_nxv4i64 = call i64 @llvm.vector.reduce.smin.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %umax_nxv1i64 = call i64 @llvm.vector.reduce.umax.nxv1i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %umax_nxv4i32 = call i32 @llvm.vector.reduce.umax.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %umax_nxv4i64 = call i64 @llvm.vector.reduce.umax.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %smax_nxv1i64 = call i64 @llvm.vector.reduce.smax.nxv1i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %smax_nxv4i32 = call i32 @llvm.vector.reduce.smax.nxv4i32( %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %smax_nxv4i64 = call i64 @llvm.vector.reduce.smax.nxv4i64( %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %fadd_nxv1f32 = call fast float @llvm.vector.reduce.fadd.nxv1f32(float 0.000000e+00, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %fadd_nxv4f32 = call fast float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v2) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:5 SizeLat:3 for: %fadd_nxv4f64 = call fast double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v3) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %fmin_nxv1f32 = call fast float @llvm.vector.reduce.fmin.nxv1f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %fmin_nxv4f32 = call fast float @llvm.vector.reduce.fmin.nxv4f32( %v2) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %fmin_nxv4f64 = call fast double @llvm.vector.reduce.fmin.nxv4f64( %v3) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %fmax_nxv1f32 = call fast float @llvm.vector.reduce.fmax.nxv1f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %fmax_nxv4f32 = call fast float @llvm.vector.reduce.fmax.nxv4f32( %v2) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %fmax_nxv4f64 = call fast double @llvm.vector.reduce.fmax.nxv4f64( %v3) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'reductions' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %add_nxv1i32 = call i32 @llvm.vector.reduce.add.nxv1i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %add_nxv4i32 = call i32 @llvm.vector.reduce.add.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %add_nxv4i64 = call i64 @llvm.vector.reduce.add.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv1i32 = call i32 @llvm.vector.reduce.mul.nxv1i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i32 = call i32 @llvm.vector.reduce.mul.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i64 = call i64 @llvm.vector.reduce.mul.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %and_nxv1i32 = call i32 @llvm.vector.reduce.and.nxv1i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %and_nxv4i32 = call i32 @llvm.vector.reduce.and.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %and_nxv4i64 = call i64 @llvm.vector.reduce.and.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %or_nxv1i32 = call i32 @llvm.vector.reduce.or.nxv1i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %or_nxv4i32 = call i32 @llvm.vector.reduce.or.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %or_nxv4i64 = call i64 @llvm.vector.reduce.or.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %xor_nxv1i32 = call i32 @llvm.vector.reduce.xor.nxv1i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %xor_nxv4i32 = call i32 @llvm.vector.reduce.xor.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %xor_nxv4i64 = call i64 @llvm.vector.reduce.xor.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %umin_nxv1i64 = call i64 @llvm.vector.reduce.umin.nxv1i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %umin_nxv4i32 = call i32 @llvm.vector.reduce.umin.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %umin_nxv4i64 = call i64 @llvm.vector.reduce.umin.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %smin_nxv1i64 = call i64 @llvm.vector.reduce.smin.nxv1i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %smin_nxv4i32 = call i32 @llvm.vector.reduce.smin.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %smin_nxv4i64 = call i64 @llvm.vector.reduce.smin.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %umax_nxv1i64 = call i64 @llvm.vector.reduce.umax.nxv1i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %umax_nxv4i32 = call i32 @llvm.vector.reduce.umax.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %umax_nxv4i64 = call i64 @llvm.vector.reduce.umax.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %smax_nxv1i64 = call i64 @llvm.vector.reduce.smax.nxv1i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %smax_nxv4i32 = call i32 @llvm.vector.reduce.smax.nxv4i32( %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %smax_nxv4i64 = call i64 @llvm.vector.reduce.smax.nxv4i64( %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %fadd_nxv1f32 = call fast float @llvm.vector.reduce.fadd.nxv1f32(float 0.000000e+00, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %fadd_nxv4f32 = call fast float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v2) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:5 SizeLat:3 for: %fadd_nxv4f64 = call fast double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v3) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %fmin_nxv1f32 = call fast float @llvm.vector.reduce.fmin.nxv1f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %fmin_nxv4f32 = call fast float @llvm.vector.reduce.fmin.nxv4f32( %v2) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %fmin_nxv4f64 = call fast double @llvm.vector.reduce.fmin.nxv4f64( %v3) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %fmax_nxv1f32 = call fast float @llvm.vector.reduce.fmax.nxv1f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %fmax_nxv4f32 = call fast float @llvm.vector.reduce.fmax.nxv4f32( %v2) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %fmax_nxv4f64 = call fast double @llvm.vector.reduce.fmax.nxv4f64( %v3) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'reductions' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %add_nxv1i32 = call i32 @llvm.vector.reduce.add.nxv1i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %add_nxv4i32 = call i32 @llvm.vector.reduce.add.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %add_nxv4i64 = call i64 @llvm.vector.reduce.add.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv1i32 = call i32 @llvm.vector.reduce.mul.nxv1i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i32 = call i32 @llvm.vector.reduce.mul.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %mul_nxv4i64 = call i64 @llvm.vector.reduce.mul.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %and_nxv1i32 = call i32 @llvm.vector.reduce.and.nxv1i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %and_nxv4i32 = call i32 @llvm.vector.reduce.and.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %and_nxv4i64 = call i64 @llvm.vector.reduce.and.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %or_nxv1i32 = call i32 @llvm.vector.reduce.or.nxv1i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %or_nxv4i32 = call i32 @llvm.vector.reduce.or.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %or_nxv4i64 = call i64 @llvm.vector.reduce.or.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %xor_nxv1i32 = call i32 @llvm.vector.reduce.xor.nxv1i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %xor_nxv4i32 = call i32 @llvm.vector.reduce.xor.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %xor_nxv4i64 = call i64 @llvm.vector.reduce.xor.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %umin_nxv1i64 = call i64 @llvm.vector.reduce.umin.nxv1i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %umin_nxv4i32 = call i32 @llvm.vector.reduce.umin.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %umin_nxv4i64 = call i64 @llvm.vector.reduce.umin.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %smin_nxv1i64 = call i64 @llvm.vector.reduce.smin.nxv1i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %smin_nxv4i32 = call i32 @llvm.vector.reduce.smin.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %smin_nxv4i64 = call i64 @llvm.vector.reduce.smin.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %umax_nxv1i64 = call i64 @llvm.vector.reduce.umax.nxv1i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %umax_nxv4i32 = call i32 @llvm.vector.reduce.umax.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %umax_nxv4i64 = call i64 @llvm.vector.reduce.umax.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %smax_nxv1i64 = call i64 @llvm.vector.reduce.smax.nxv1i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %smax_nxv4i32 = call i32 @llvm.vector.reduce.smax.nxv4i32( %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %smax_nxv4i64 = call i64 @llvm.vector.reduce.smax.nxv4i64( %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %fadd_nxv1f32 = call fast float @llvm.vector.reduce.fadd.nxv1f32(float 0.000000e+00, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %fadd_nxv4f32 = call fast float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v2) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:5 SizeLat:3 for: %fadd_nxv4f64 = call fast double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v3) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %fmin_nxv1f32 = call fast float @llvm.vector.reduce.fmin.nxv1f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %fmin_nxv4f32 = call fast float @llvm.vector.reduce.fmin.nxv4f32( %v2) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %fmin_nxv4f64 = call fast double @llvm.vector.reduce.fmin.nxv4f64( %v3) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %fmax_nxv1f32 = call fast float @llvm.vector.reduce.fmax.nxv1f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %fmax_nxv4f32 = call fast float @llvm.vector.reduce.fmax.nxv4f32( %v2) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 3 for: %fmax_nxv4f64 = call fast double @llvm.vector.reduce.fmax.nxv4f64( %v3) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %add_nxv1i32 = call i32 @llvm.vector.reduce.add.nxv1i32( poison) %add_nxv4i32 = call i32 @llvm.vector.reduce.add.nxv4i32( %v0) %add_nxv4i64 = call i64 @llvm.vector.reduce.add.nxv4i64( %v1) %mul_nxv1i32 = call i32 @llvm.vector.reduce.mul.nxv1i32( poison) %mul_nxv4i32 = call i32 @llvm.vector.reduce.mul.nxv4i32( %v0) %mul_nxv4i64 = call i64 @llvm.vector.reduce.mul.nxv4i64( %v1) %and_nxv1i32 = call i32 @llvm.vector.reduce.and.nxv1i32( poison) %and_nxv4i32 = call i32 @llvm.vector.reduce.and.nxv4i32( %v0) %and_nxv4i64 = call i64 @llvm.vector.reduce.and.nxv4i64( %v1) %or_nxv1i32 = call i32 @llvm.vector.reduce.or.nxv1i32( poison) %or_nxv4i32 = call i32 @llvm.vector.reduce.or.nxv4i32( %v0) %or_nxv4i64 = call i64 @llvm.vector.reduce.or.nxv4i64( %v1) %xor_nxv1i32 = call i32 @llvm.vector.reduce.xor.nxv1i32( poison) %xor_nxv4i32 = call i32 @llvm.vector.reduce.xor.nxv4i32( %v0) %xor_nxv4i64 = call i64 @llvm.vector.reduce.xor.nxv4i64( %v1) %umin_nxv1i64 = call i64 @llvm.vector.reduce.umin.nxv1i64( poison) %umin_nxv4i32 = call i32 @llvm.vector.reduce.umin.nxv4i32( %v0) %umin_nxv4i64 = call i64 @llvm.vector.reduce.umin.nxv4i64( %v1) %smin_nxv1i64 = call i64 @llvm.vector.reduce.smin.nxv1i64( poison) %smin_nxv4i32 = call i32 @llvm.vector.reduce.smin.nxv4i32( %v0) %smin_nxv4i64 = call i64 @llvm.vector.reduce.smin.nxv4i64( %v1) %umax_nxv1i64 = call i64 @llvm.vector.reduce.umax.nxv1i64( poison) %umax_nxv4i32 = call i32 @llvm.vector.reduce.umax.nxv4i32( %v0) %umax_nxv4i64 = call i64 @llvm.vector.reduce.umax.nxv4i64( %v1) %smax_nxv1i64 = call i64 @llvm.vector.reduce.smax.nxv1i64( poison) %smax_nxv4i32 = call i32 @llvm.vector.reduce.smax.nxv4i32( %v0) %smax_nxv4i64 = call i64 @llvm.vector.reduce.smax.nxv4i64( %v1) %fadd_nxv1f32 = call fast float @llvm.vector.reduce.fadd.nxv1f32(float 0.0, poison) %fadd_nxv4f32 = call fast float @llvm.vector.reduce.fadd.nxv4f32(float 0.0, %v2) %fadd_nxv4f64 = call fast double @llvm.vector.reduce.fadd.nxv4f64(double 0.0, %v3) %fmin_nxv1f32 = call fast float @llvm.vector.reduce.fmin.nxv1f32( poison) %fmin_nxv4f32 = call fast float @llvm.vector.reduce.fmin.nxv4f32( %v2) %fmin_nxv4f64 = call fast double @llvm.vector.reduce.fmin.nxv4f64( %v3) %fmax_nxv1f32 = call fast float @llvm.vector.reduce.fmax.nxv1f32( poison) %fmax_nxv4f32 = call fast float @llvm.vector.reduce.fmax.nxv4f32( %v2) %fmax_nxv4f64 = call fast double @llvm.vector.reduce.fmax.nxv4f64( %v3) ret void } define void @strict_fp_reductions( %v0, %v1) { ; CHECK-VSCALE-1-LABEL: 'strict_fp_reductions' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:12 SizeLat:4 for: %fadd_nxv4f32 = call float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:12 SizeLat:4 for: %fadd_nxv4f64 = call double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f32 = call float @llvm.vector.reduce.fmul.nxv4f32(float 0.000000e+00, %v0) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f64 = call double @llvm.vector.reduce.fmul.nxv4f64(double 0.000000e+00, %v1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'strict_fp_reductions' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:8 Lat:24 SizeLat:8 for: %fadd_nxv4f32 = call float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:8 Lat:24 SizeLat:8 for: %fadd_nxv4f64 = call double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f32 = call float @llvm.vector.reduce.fmul.nxv4f32(float 0.000000e+00, %v0) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f64 = call double @llvm.vector.reduce.fmul.nxv4f64(double 0.000000e+00, %v1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'strict_fp_reductions' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:12 SizeLat:4 for: %fadd_nxv4f32 = call float @llvm.vector.reduce.fadd.nxv4f32(float 0.000000e+00, %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:12 SizeLat:4 for: %fadd_nxv4f64 = call double @llvm.vector.reduce.fadd.nxv4f64(double 0.000000e+00, %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f32 = call float @llvm.vector.reduce.fmul.nxv4f32(float 0.000000e+00, %v0) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %fmul_nxv4f64 = call double @llvm.vector.reduce.fmul.nxv4f64(double 0.000000e+00, %v1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %fadd_nxv4f32 = call float @llvm.vector.reduce.fadd.nxv4f32(float 0.0, %v0) %fadd_nxv4f64 = call double @llvm.vector.reduce.fadd.nxv4f64(double 0.0, %v1) %fmul_nxv4f32 = call float @llvm.vector.reduce.fmul.nxv4f32(float 0.0, %v0) %fmul_nxv4f64 = call double @llvm.vector.reduce.fmul.nxv4f64(double 0.0, %v1) ret void } declare i32 @llvm.vector.reduce.add.nxv4i32() declare i64 @llvm.vector.reduce.add.nxv4i64() declare i32 @llvm.vector.reduce.mul.nxv4i32() declare i64 @llvm.vector.reduce.mul.nxv4i64() declare i32 @llvm.vector.reduce.and.nxv4i32() declare i64 @llvm.vector.reduce.and.nxv4i64() declare i32 @llvm.vector.reduce.or.nxv4i32() declare i64 @llvm.vector.reduce.or.nxv4i64() declare i32 @llvm.vector.reduce.xor.nxv4i32() declare i64 @llvm.vector.reduce.xor.nxv4i64() declare i32 @llvm.vector.reduce.umin.nxv4i32() declare i64 @llvm.vector.reduce.umin.nxv4i64() declare i32 @llvm.vector.reduce.smin.nxv4i32() declare i64 @llvm.vector.reduce.smin.nxv4i64() declare i32 @llvm.vector.reduce.umax.nxv4i32() declare i64 @llvm.vector.reduce.umax.nxv4i64() declare i32 @llvm.vector.reduce.smax.nxv4i32() declare i64 @llvm.vector.reduce.smax.nxv4i64() declare float @llvm.vector.reduce.fadd.nxv4f32(float, ) declare double @llvm.vector.reduce.fadd.nxv4f64(double, ) declare float @llvm.vector.reduce.fmul.nxv4f32(float, ) declare double @llvm.vector.reduce.fmul.nxv4f64(double, ) declare float @llvm.vector.reduce.fmin.nxv4f32() declare double @llvm.vector.reduce.fmin.nxv4f64() declare float @llvm.vector.reduce.fmax.nxv4f32() declare double @llvm.vector.reduce.fmax.nxv4f64() define void @count_zeroes( %A) { ; CHECK-VSCALE-1-LABEL: 'count_zeroes' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %ctlz = call @llvm.ctlz.nxv4i32( %A, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %cttz = call @llvm.cttz.nxv4i32( %A, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'count_zeroes' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %ctlz = call @llvm.ctlz.nxv4i32( %A, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %cttz = call @llvm.cttz.nxv4i32( %A, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'count_zeroes' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %ctlz = call @llvm.ctlz.nxv4i32( %A, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %cttz = call @llvm.cttz.nxv4i32( %A, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %ctlz = call @llvm.ctlz.nxv4i32( %A, i1 true) %cttz = call @llvm.cttz.nxv4i32( %A, i1 true) ret void } declare @llvm.ctlz.nxv4i32(, i1) declare @llvm.cttz.nxv4i32(, i1) define void @vector_reverse() #0 { ; CHECK-VSCALE-1-LABEL: 'vector_reverse' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i8 = call @llvm.vector.reverse.nxv16i8( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv32i8 = call @llvm.vector.reverse.nxv32i8( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i16 = call @llvm.vector.reverse.nxv2i16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i16 = call @llvm.vector.reverse.nxv4i16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i16 = call @llvm.vector.reverse.nxv8i16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16i16 = call @llvm.vector.reverse.nxv16i16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i32 = call @llvm.vector.reverse.nxv4i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8i32 = call @llvm.vector.reverse.nxv8i32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i64 = call @llvm.vector.reverse.nxv2i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4i64 = call @llvm.vector.reverse.nxv4i64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f16 = call @llvm.vector.reverse.nxv2f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f16 = call @llvm.vector.reverse.nxv4f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8f16 = call @llvm.vector.reverse.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16f16 = call @llvm.vector.reverse.nxv16f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f32 = call @llvm.vector.reverse.nxv2f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f32 = call @llvm.vector.reverse.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8f32 = call @llvm.vector.reverse.nxv8f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f64 = call @llvm.vector.reverse.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4f64 = call @llvm.vector.reverse.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2bf16 = call @llvm.vector.reverse.nxv2bf16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4bf16 = call @llvm.vector.reverse.nxv4bf16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8bf16 = call @llvm.vector.reverse.nxv8bf16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16bf16 = call @llvm.vector.reverse.nxv16bf16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i1 = call @llvm.vector.reverse.nxv16i1( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i1 = call @llvm.vector.reverse.nxv8i1( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i1 = call @llvm.vector.reverse.nxv4i1( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i1 = call @llvm.vector.reverse.nxv2i1( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'vector_reverse' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i8 = call @llvm.vector.reverse.nxv16i8( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv32i8 = call @llvm.vector.reverse.nxv32i8( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i16 = call @llvm.vector.reverse.nxv2i16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i16 = call @llvm.vector.reverse.nxv4i16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i16 = call @llvm.vector.reverse.nxv8i16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16i16 = call @llvm.vector.reverse.nxv16i16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i32 = call @llvm.vector.reverse.nxv4i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8i32 = call @llvm.vector.reverse.nxv8i32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i64 = call @llvm.vector.reverse.nxv2i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4i64 = call @llvm.vector.reverse.nxv4i64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f16 = call @llvm.vector.reverse.nxv2f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f16 = call @llvm.vector.reverse.nxv4f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8f16 = call @llvm.vector.reverse.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16f16 = call @llvm.vector.reverse.nxv16f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f32 = call @llvm.vector.reverse.nxv2f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f32 = call @llvm.vector.reverse.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8f32 = call @llvm.vector.reverse.nxv8f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f64 = call @llvm.vector.reverse.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4f64 = call @llvm.vector.reverse.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2bf16 = call @llvm.vector.reverse.nxv2bf16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4bf16 = call @llvm.vector.reverse.nxv4bf16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8bf16 = call @llvm.vector.reverse.nxv8bf16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16bf16 = call @llvm.vector.reverse.nxv16bf16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i1 = call @llvm.vector.reverse.nxv16i1( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i1 = call @llvm.vector.reverse.nxv8i1( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i1 = call @llvm.vector.reverse.nxv4i1( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i1 = call @llvm.vector.reverse.nxv2i1( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'vector_reverse' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i8 = call @llvm.vector.reverse.nxv16i8( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv32i8 = call @llvm.vector.reverse.nxv32i8( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i16 = call @llvm.vector.reverse.nxv2i16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i16 = call @llvm.vector.reverse.nxv4i16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i16 = call @llvm.vector.reverse.nxv8i16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16i16 = call @llvm.vector.reverse.nxv16i16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i32 = call @llvm.vector.reverse.nxv4i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8i32 = call @llvm.vector.reverse.nxv8i32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i64 = call @llvm.vector.reverse.nxv2i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4i64 = call @llvm.vector.reverse.nxv4i64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f16 = call @llvm.vector.reverse.nxv2f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f16 = call @llvm.vector.reverse.nxv4f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8f16 = call @llvm.vector.reverse.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16f16 = call @llvm.vector.reverse.nxv16f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f32 = call @llvm.vector.reverse.nxv2f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4f32 = call @llvm.vector.reverse.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv8f32 = call @llvm.vector.reverse.nxv8f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2f64 = call @llvm.vector.reverse.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv4f64 = call @llvm.vector.reverse.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2bf16 = call @llvm.vector.reverse.nxv2bf16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4bf16 = call @llvm.vector.reverse.nxv4bf16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8bf16 = call @llvm.vector.reverse.nxv8bf16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %reverse_nxv16bf16 = call @llvm.vector.reverse.nxv16bf16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv16i1 = call @llvm.vector.reverse.nxv16i1( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv8i1 = call @llvm.vector.reverse.nxv8i1( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv4i1 = call @llvm.vector.reverse.nxv4i1( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %reverse_nxv2i1 = call @llvm.vector.reverse.nxv2i1( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %reverse_nxv16i8 = call @llvm.vector.reverse.nxv16i8( poison) %reverse_nxv32i8 = call @llvm.vector.reverse.nxv32i8( poison) %reverse_nxv2i16 = call @llvm.vector.reverse.nxv2i16( poison) %reverse_nxv4i16 = call @llvm.vector.reverse.nxv4i16( poison) %reverse_nxv8i16 = call @llvm.vector.reverse.nxv8i16( poison) %reverse_nxv16i16 = call @llvm.vector.reverse.nxv16i16( poison) %reverse_nxv4i32 = call @llvm.vector.reverse.nxv4i32( poison) %reverse_nxv8i32 = call @llvm.vector.reverse.nxv8i32( poison) %reverse_nxv2i64 = call @llvm.vector.reverse.nxv2i64( poison) %reverse_nxv4i64 = call @llvm.vector.reverse.nxv4i64( poison) %reverse_nxv2f16 = call @llvm.vector.reverse.nxv2f16( poison) %reverse_nxv4f16 = call @llvm.vector.reverse.nxv4f16( poison) %reverse_nxv8f16 = call @llvm.vector.reverse.nxv8f16( poison) %reverse_nxv16f16 = call @llvm.vector.reverse.nxv16f16( poison) %reverse_nxv2f32 = call @llvm.vector.reverse.nxv2f32( poison) %reverse_nxv4f32 = call @llvm.vector.reverse.nxv4f32( poison) %reverse_nxv8f32 = call @llvm.vector.reverse.nxv8f32( poison) %reverse_nxv2f64 = call @llvm.vector.reverse.nxv2f64( poison) %reverse_nxv4f64 = call @llvm.vector.reverse.nxv4f64( poison) %reverse_nxv2bf16 = call @llvm.vector.reverse.nxv2bf16( poison) %reverse_nxv4bf16 = call @llvm.vector.reverse.nxv4bf16( poison) %reverse_nxv8bf16 = call @llvm.vector.reverse.nxv8bf16( poison) %reverse_nxv16bf16 = call @llvm.vector.reverse.nxv16bf16( poison) %reverse_nxv16i1 = call @llvm.vector.reverse.nxv16i1( poison) %reverse_nxv8i1 = call @llvm.vector.reverse.nxv8i1( poison) %reverse_nxv4i1 = call @llvm.vector.reverse.nxv4i1( poison) %reverse_nxv2i1 = call @llvm.vector.reverse.nxv2i1( poison) ret void } declare @llvm.vector.reverse.nxv16i8() declare @llvm.vector.reverse.nxv32i8() declare @llvm.vector.reverse.nxv2i16() declare @llvm.vector.reverse.nxv4i16() declare @llvm.vector.reverse.nxv8i16() declare @llvm.vector.reverse.nxv16i16() declare @llvm.vector.reverse.nxv4i32() declare @llvm.vector.reverse.nxv8i32() declare @llvm.vector.reverse.nxv2i64() declare @llvm.vector.reverse.nxv4i64() declare @llvm.vector.reverse.nxv2f16() declare @llvm.vector.reverse.nxv4f16() declare @llvm.vector.reverse.nxv8f16() declare @llvm.vector.reverse.nxv16f16() declare @llvm.vector.reverse.nxv2f32() declare @llvm.vector.reverse.nxv4f32() declare @llvm.vector.reverse.nxv8f32() declare @llvm.vector.reverse.nxv2f64() declare @llvm.vector.reverse.nxv4f64() declare @llvm.vector.reverse.nxv2bf16() declare @llvm.vector.reverse.nxv4bf16() declare @llvm.vector.reverse.nxv8bf16() declare @llvm.vector.reverse.nxv16bf16() declare @llvm.vector.reverse.nxv16i1() declare @llvm.vector.reverse.nxv8i1() declare @llvm.vector.reverse.nxv4i1() declare @llvm.vector.reverse.nxv2i1() define void @unsupported_fp_ops( %vec, i32 %extraarg) { ; CHECK-VSCALE-1-LABEL: 'unsupported_fp_ops' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %sin = call @llvm.sin.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %cos = call @llvm.cos.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %pow = call @llvm.pow.nxv4f32( %vec, %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 %extraarg) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %exp = call @llvm.exp.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %exp2 = call @llvm.exp2.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %log = call @llvm.log.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %log2 = call @llvm.log2.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %log10 = call @llvm.log10.nxv4f32( %vec) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'unsupported_fp_ops' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %sin = call @llvm.sin.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %cos = call @llvm.cos.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %pow = call @llvm.pow.nxv4f32( %vec, %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 %extraarg) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %exp = call @llvm.exp.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %exp2 = call @llvm.exp2.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %log = call @llvm.log.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %log2 = call @llvm.log2.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %log10 = call @llvm.log10.nxv4f32( %vec) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'unsupported_fp_ops' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %sin = call @llvm.sin.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %cos = call @llvm.cos.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %pow = call @llvm.pow.nxv4f32( %vec, %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 %extraarg) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %exp = call @llvm.exp.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %exp2 = call @llvm.exp2.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %log = call @llvm.log.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %log2 = call @llvm.log2.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %log10 = call @llvm.log10.nxv4f32( %vec) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %sin = call @llvm.sin.nxv4f32( %vec) %cos = call @llvm.cos.nxv4f32( %vec) %pow = call @llvm.pow.nxv4f32( %vec, %vec) %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 %extraarg) %exp = call @llvm.exp.nxv4f32( %vec) %exp2 = call @llvm.exp2.nxv4f32( %vec) %log = call @llvm.log.nxv4f32( %vec) %log2 = call @llvm.log2.nxv4f32( %vec) %log10 = call @llvm.log10.nxv4f32( %vec) ret void } define void @powi( %vec) { ; CHECK-VSCALE-1-LABEL: 'powi' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:7 Lat:21 SizeLat:7 for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 42) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'powi' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:14 CodeSize:7 Lat:21 SizeLat:7 for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 42) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'powi' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 42) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %powi = call @llvm.powi.nxv4f32.i32( %vec, i32 42) ret void } declare @llvm.sin.nxv4f32() declare @llvm.cos.nxv4f32() declare @llvm.pow.nxv4f32(, ) declare @llvm.powi.nxv4f32.i32(, i32) declare @llvm.exp.nxv4f32() declare @llvm.exp2.nxv4f32() declare @llvm.log.nxv4f32() declare @llvm.log2.nxv4f32() declare @llvm.log10.nxv4f32() define void @vector_splice(i32 %offset) #0 { ; CHECK-VSCALE-1-LABEL: 'vector_splice' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %1 = call @llvm.vector.splice.left.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %2 = call @llvm.vector.splice.left.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %3 = call @llvm.vector.splice.left.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %4 = call @llvm.vector.splice.left.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %5 = call @llvm.vector.splice.left.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %6 = call @llvm.vector.splice.left.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %7 = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %8 = call @llvm.vector.splice.left.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %9 = call @llvm.vector.splice.left.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %10 = call @llvm.vector.splice.left.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %11 = call @llvm.vector.splice.left.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %12 = call @llvm.vector.splice.left.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %13 = call @llvm.vector.splice.left.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %14 = call @llvm.vector.splice.left.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %15 = call @llvm.vector.splice.left.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %16 = call @llvm.vector.splice.left.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %17 = call @llvm.vector.splice.left.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %18 = call @llvm.vector.splice.left.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %19 = call @llvm.vector.splice.left.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %20 = call @llvm.vector.splice.left.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %21 = call @llvm.vector.splice.left.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %22 = call @llvm.vector.splice.left.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %23 = call @llvm.vector.splice.left.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %24 = call @llvm.vector.splice.left.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %25 = call @llvm.vector.splice.left.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %26 = call @llvm.vector.splice.left.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %27 = call @llvm.vector.splice.left.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %28 = call @llvm.vector.splice.right.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %29 = call @llvm.vector.splice.right.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %30 = call @llvm.vector.splice.right.nxv1i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %31 = call @llvm.vector.splice.right.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %32 = call @llvm.vector.splice.right.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %33 = call @llvm.vector.splice.right.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %34 = call @llvm.vector.splice.right.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %35 = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %36 = call @llvm.vector.splice.right.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %37 = call @llvm.vector.splice.right.nxv1i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %38 = call @llvm.vector.splice.right.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %39 = call @llvm.vector.splice.right.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %40 = call @llvm.vector.splice.right.nxv1f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %41 = call @llvm.vector.splice.right.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %42 = call @llvm.vector.splice.right.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %43 = call @llvm.vector.splice.right.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %44 = call @llvm.vector.splice.right.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %45 = call @llvm.vector.splice.right.nxv1f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %46 = call @llvm.vector.splice.right.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %47 = call @llvm.vector.splice.right.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %48 = call @llvm.vector.splice.right.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %49 = call @llvm.vector.splice.right.nxv1f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %50 = call @llvm.vector.splice.right.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %51 = call @llvm.vector.splice.right.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %52 = call @llvm.vector.splice.right.nxv1bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %53 = call @llvm.vector.splice.right.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %54 = call @llvm.vector.splice.right.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 3 for: %55 = call @llvm.vector.splice.right.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %56 = call @llvm.vector.splice.right.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %57 = call @llvm.vector.splice.right.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %58 = call @llvm.vector.splice.right.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %59 = call @llvm.vector.splice.right.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %60 = call @llvm.vector.splice.right.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %61 = call @llvm.vector.splice.right.nxv1i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %left.variable = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of Invalid for: %right.variable = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'vector_splice' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %1 = call @llvm.vector.splice.left.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %2 = call @llvm.vector.splice.left.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %3 = call @llvm.vector.splice.left.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %4 = call @llvm.vector.splice.left.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %5 = call @llvm.vector.splice.left.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %6 = call @llvm.vector.splice.left.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %7 = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %8 = call @llvm.vector.splice.left.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %9 = call @llvm.vector.splice.left.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %10 = call @llvm.vector.splice.left.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %11 = call @llvm.vector.splice.left.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %12 = call @llvm.vector.splice.left.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %13 = call @llvm.vector.splice.left.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %14 = call @llvm.vector.splice.left.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %15 = call @llvm.vector.splice.left.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %16 = call @llvm.vector.splice.left.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %17 = call @llvm.vector.splice.left.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %18 = call @llvm.vector.splice.left.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %19 = call @llvm.vector.splice.left.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %20 = call @llvm.vector.splice.left.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %21 = call @llvm.vector.splice.left.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %22 = call @llvm.vector.splice.left.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %23 = call @llvm.vector.splice.left.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %24 = call @llvm.vector.splice.left.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %25 = call @llvm.vector.splice.left.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %26 = call @llvm.vector.splice.left.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %27 = call @llvm.vector.splice.left.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %28 = call @llvm.vector.splice.right.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %29 = call @llvm.vector.splice.right.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %30 = call @llvm.vector.splice.right.nxv1i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %31 = call @llvm.vector.splice.right.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %32 = call @llvm.vector.splice.right.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %33 = call @llvm.vector.splice.right.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %34 = call @llvm.vector.splice.right.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %35 = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %36 = call @llvm.vector.splice.right.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %37 = call @llvm.vector.splice.right.nxv1i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %38 = call @llvm.vector.splice.right.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %39 = call @llvm.vector.splice.right.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %40 = call @llvm.vector.splice.right.nxv1f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %41 = call @llvm.vector.splice.right.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %42 = call @llvm.vector.splice.right.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %43 = call @llvm.vector.splice.right.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %44 = call @llvm.vector.splice.right.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %45 = call @llvm.vector.splice.right.nxv1f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %46 = call @llvm.vector.splice.right.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %47 = call @llvm.vector.splice.right.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %48 = call @llvm.vector.splice.right.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %49 = call @llvm.vector.splice.right.nxv1f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %50 = call @llvm.vector.splice.right.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %51 = call @llvm.vector.splice.right.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %52 = call @llvm.vector.splice.right.nxv1bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %53 = call @llvm.vector.splice.right.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %54 = call @llvm.vector.splice.right.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 3 for: %55 = call @llvm.vector.splice.right.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %56 = call @llvm.vector.splice.right.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %57 = call @llvm.vector.splice.right.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %58 = call @llvm.vector.splice.right.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %59 = call @llvm.vector.splice.right.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 6 for: %60 = call @llvm.vector.splice.right.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %61 = call @llvm.vector.splice.right.nxv1i1( zeroinitializer, zeroinitializer, i32 1) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %left.variable = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of Invalid for: %right.variable = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'vector_splice' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %1 = call @llvm.vector.splice.left.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %2 = call @llvm.vector.splice.left.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %3 = call @llvm.vector.splice.left.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %4 = call @llvm.vector.splice.left.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %5 = call @llvm.vector.splice.left.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %6 = call @llvm.vector.splice.left.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %7 = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %8 = call @llvm.vector.splice.left.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %9 = call @llvm.vector.splice.left.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %10 = call @llvm.vector.splice.left.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %11 = call @llvm.vector.splice.left.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %12 = call @llvm.vector.splice.left.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %13 = call @llvm.vector.splice.left.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %14 = call @llvm.vector.splice.left.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %15 = call @llvm.vector.splice.left.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %16 = call @llvm.vector.splice.left.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %17 = call @llvm.vector.splice.left.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %18 = call @llvm.vector.splice.left.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %19 = call @llvm.vector.splice.left.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %20 = call @llvm.vector.splice.left.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %21 = call @llvm.vector.splice.left.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %22 = call @llvm.vector.splice.left.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %23 = call @llvm.vector.splice.left.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %24 = call @llvm.vector.splice.left.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %25 = call @llvm.vector.splice.left.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %26 = call @llvm.vector.splice.left.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %27 = call @llvm.vector.splice.left.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %28 = call @llvm.vector.splice.right.nxv16i8( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %29 = call @llvm.vector.splice.right.nxv32i8( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %30 = call @llvm.vector.splice.right.nxv1i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %31 = call @llvm.vector.splice.right.nxv2i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %32 = call @llvm.vector.splice.right.nxv4i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %33 = call @llvm.vector.splice.right.nxv8i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %34 = call @llvm.vector.splice.right.nxv16i16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %35 = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %36 = call @llvm.vector.splice.right.nxv8i32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %37 = call @llvm.vector.splice.right.nxv1i64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %38 = call @llvm.vector.splice.right.nxv2i64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %39 = call @llvm.vector.splice.right.nxv4i64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %40 = call @llvm.vector.splice.right.nxv1f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %41 = call @llvm.vector.splice.right.nxv2f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %42 = call @llvm.vector.splice.right.nxv4f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %43 = call @llvm.vector.splice.right.nxv8f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %44 = call @llvm.vector.splice.right.nxv16f16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %45 = call @llvm.vector.splice.right.nxv1f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %46 = call @llvm.vector.splice.right.nxv2f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %47 = call @llvm.vector.splice.right.nxv4f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %48 = call @llvm.vector.splice.right.nxv8f32( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %49 = call @llvm.vector.splice.right.nxv1f64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %50 = call @llvm.vector.splice.right.nxv2f64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %51 = call @llvm.vector.splice.right.nxv4f64( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %52 = call @llvm.vector.splice.right.nxv1bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %53 = call @llvm.vector.splice.right.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %54 = call @llvm.vector.splice.right.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %55 = call @llvm.vector.splice.right.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %56 = call @llvm.vector.splice.right.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %57 = call @llvm.vector.splice.right.nxv16i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %58 = call @llvm.vector.splice.right.nxv8i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %59 = call @llvm.vector.splice.right.nxv4i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %60 = call @llvm.vector.splice.right.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %61 = call @llvm.vector.splice.right.nxv1i1( zeroinitializer, zeroinitializer, i32 1) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %left.variable = call @llvm.vector.splice.left.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %right.variable = call @llvm.vector.splice.right.nxv4i32( zeroinitializer, zeroinitializer, i32 %offset) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %splice_nxv16i8 = call @llvm.vector.splice.nxv16i8( zeroinitializer, zeroinitializer, i32 1) %splice_nxv32i8 = call @llvm.vector.splice.nxv32i8( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2i16 = call @llvm.vector.splice.nxv2i16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4i16 = call @llvm.vector.splice.nxv4i16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8i16 = call @llvm.vector.splice.nxv8i16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv16i16 = call @llvm.vector.splice.nxv16i16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4i32 = call @llvm.vector.splice.nxv4i32( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8i32 = call @llvm.vector.splice.nxv8i32( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2i64 = call @llvm.vector.splice.nxv2i64( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4i64 = call @llvm.vector.splice.nxv4i64( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2f16 = call @llvm.vector.splice.nxv2f16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4f16 = call @llvm.vector.splice.nxv4f16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8f16 = call @llvm.vector.splice.nxv8f16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv16f16 = call @llvm.vector.splice.nxv16f16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2f32 = call @llvm.vector.splice.nxv2f32( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4f32 = call @llvm.vector.splice.nxv4f32( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8f32 = call @llvm.vector.splice.nxv8f32( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2f64 = call @llvm.vector.splice.nxv2f64( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4f64 = call @llvm.vector.splice.nxv4f64( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2bf16 = call @llvm.vector.splice.nxv2bf16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4bf16 = call @llvm.vector.splice.nxv4bf16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8bf16 = call @llvm.vector.splice.nxv8bf16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv16bf16 = call @llvm.vector.splice.nxv16bf16( zeroinitializer, zeroinitializer, i32 1) %splice_nxv16i1 = call @llvm.vector.splice.nxv16i1( zeroinitializer, zeroinitializer, i32 1) %splice_nxv8i1 = call @llvm.vector.splice.nxv8i1( zeroinitializer, zeroinitializer, i32 1) %splice_nxv4i1 = call @llvm.vector.splice.nxv4i1( zeroinitializer, zeroinitializer, i32 1) %splice_nxv2i1 = call @llvm.vector.splice.nxv2i1( zeroinitializer, zeroinitializer, i32 1) ;; negative Index %splice_nxv16i8_neg = call @llvm.vector.splice.nxv16i8( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv32i8_neg = call @llvm.vector.splice.nxv32i8( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1i16_neg = call @llvm.vector.splice.nxv1i16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2i16_neg = call @llvm.vector.splice.nxv2i16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4i16_neg = call @llvm.vector.splice.nxv4i16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8i16_neg = call @llvm.vector.splice.nxv8i16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv16i16_neg = call @llvm.vector.splice.nxv16i16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4i32_neg = call @llvm.vector.splice.nxv4i32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8i32_neg = call @llvm.vector.splice.nxv8i32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1i64_neg= call @llvm.vector.splice.nxv1i64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2i64_neg= call @llvm.vector.splice.nxv2i64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4i64_neg = call @llvm.vector.splice.nxv4i64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1f16_neg = call @llvm.vector.splice.nxv1f16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2f16_neg = call @llvm.vector.splice.nxv2f16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4f16_neg = call @llvm.vector.splice.nxv4f16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8f16_neg = call @llvm.vector.splice.nxv8f16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv16f16_neg = call @llvm.vector.splice.nxv16f16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1f32_neg = call @llvm.vector.splice.nxv1f32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2f32_neg = call @llvm.vector.splice.nxv2f32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4f32_neg = call @llvm.vector.splice.nxv4f32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8f32_neg = call @llvm.vector.splice.nxv8f32( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1f64_neg = call @llvm.vector.splice.nxv1f64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2f64_neg = call @llvm.vector.splice.nxv2f64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4f64_neg = call @llvm.vector.splice.nxv4f64( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1bf16_neg = call @llvm.vector.splice.nxv1bf16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2bf16_neg = call @llvm.vector.splice.nxv2bf16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4bf16_neg = call @llvm.vector.splice.nxv4bf16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8bf16_neg = call @llvm.vector.splice.nxv8bf16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv16bf16_neg = call @llvm.vector.splice.nxv16bf16( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv16i1_neg = call @llvm.vector.splice.nxv16i1( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv8i1_neg = call @llvm.vector.splice.nxv8i1( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv4i1_neg = call @llvm.vector.splice.nxv4i1( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv2i1_neg = call @llvm.vector.splice.nxv2i1( zeroinitializer, zeroinitializer, i32 -1) %splice_nxv1i1_neg = call @llvm.vector.splice.nxv1i1( zeroinitializer, zeroinitializer, i32 -1) %left.variable = call @llvm.vector.splice.left( zeroinitializer, zeroinitializer, i32 %offset) %right.variable = call @llvm.vector.splice.right( zeroinitializer, zeroinitializer, i32 %offset) ret void } declare @llvm.vector.splice.nxv1i1(, , i32) declare @llvm.vector.splice.nxv2i1(, , i32) declare @llvm.vector.splice.nxv4i1(, , i32) declare @llvm.vector.splice.nxv8i1(, , i32) declare @llvm.vector.splice.nxv16i1(, , i32) declare @llvm.vector.splice.nxv1i8(, , i32) declare @llvm.vector.splice.nxv2i8(, , i32) declare @llvm.vector.splice.nxv16i8(, , i32) declare @llvm.vector.splice.nxv32i8(, , i32) declare @llvm.vector.splice.nxv1i16(, , i32) declare @llvm.vector.splice.nxv2i16(, , i32) declare @llvm.vector.splice.nxv4i16(, , i32) declare @llvm.vector.splice.nxv8i16(, , i32) declare @llvm.vector.splice.nxv16i16(, , i32) declare @llvm.vector.splice.nxv4i32(, , i32) declare @llvm.vector.splice.nxv8i32(, , i32) declare @llvm.vector.splice.nxv1i64(, , i32) declare @llvm.vector.splice.nxv2i64(, , i32) declare @llvm.vector.splice.nxv4i64(, , i32) declare @llvm.vector.splice.nxv1f16(, , i32) declare @llvm.vector.splice.nxv2f16(, , i32) declare @llvm.vector.splice.nxv4f16(, , i32) declare @llvm.vector.splice.nxv8f16(, , i32) declare @llvm.vector.splice.nxv16f16(, , i32) declare @llvm.vector.splice.nxv1bf16(, , i32) declare @llvm.vector.splice.nxv2bf16(, , i32) declare @llvm.vector.splice.nxv4bf16(, , i32) declare @llvm.vector.splice.nxv8bf16(, , i32) declare @llvm.vector.splice.nxv16bf16(, , i32) declare @llvm.vector.splice.nxv1f32(, , i32) declare @llvm.vector.splice.nxv2f32(, , i32) declare @llvm.vector.splice.nxv4f32(, , i32) declare @llvm.vector.splice.nxv8f32(, , i32) declare @llvm.vector.splice.nxv16f32(, , i32) declare @llvm.vector.splice.nxv1f64(, , i32) declare @llvm.vector.splice.nxv2f64(, , i32) declare @llvm.vector.splice.nxv4f64(, , i32) define void @get_lane_mask() #0 { ; CHECK-VSCALE-1-LABEL: 'get_lane_mask' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i64 = call @llvm.get.active.lane.mask.nxv16i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i64 = call @llvm.get.active.lane.mask.nxv8i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i64 = call @llvm.get.active.lane.mask.nxv4i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i64 = call @llvm.get.active.lane.mask.nxv2i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i32 = call @llvm.get.active.lane.mask.nxv16i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i32 = call @llvm.get.active.lane.mask.nxv8i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i32 = call @llvm.get.active.lane.mask.nxv4i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i32 = call @llvm.get.active.lane.mask.nxv2i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 13 for: %mask_nxv64i1_i64 = call @llvm.get.active.lane.mask.nxv64i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %mask_nxv32i1_i64 = call @llvm.get.active.lane.mask.nxv32i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i16 = call @llvm.get.active.lane.mask.nxv16i1.i16(i16 poison, i16 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i64 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i64 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i64 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i64 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i32 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i32 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i32 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i32 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32 poison, i32 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 48 for: %mask_v32i1_i64 = call <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64 poison, i64 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 6 for: %mask_v16i1_i16 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16 poison, i16 poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-SVE-LABEL: 'get_lane_mask' ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i64 = call @llvm.get.active.lane.mask.nxv16i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i64 = call @llvm.get.active.lane.mask.nxv8i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i64 = call @llvm.get.active.lane.mask.nxv4i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i64 = call @llvm.get.active.lane.mask.nxv2i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i32 = call @llvm.get.active.lane.mask.nxv16i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i32 = call @llvm.get.active.lane.mask.nxv8i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i32 = call @llvm.get.active.lane.mask.nxv4i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i32 = call @llvm.get.active.lane.mask.nxv2i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 13 for: %mask_nxv64i1_i64 = call @llvm.get.active.lane.mask.nxv64i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 5 for: %mask_nxv32i1_i64 = call @llvm.get.active.lane.mask.nxv32i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i16 = call @llvm.get.active.lane.mask.nxv16i1.i16(i16 poison, i16 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i64 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i64 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i64 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i64 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i32 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i32 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i32 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i32 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32 poison, i32 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 48 for: %mask_v32i1_i64 = call <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64 poison, i64 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of 6 for: %mask_v16i1_i16 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16 poison, i16 poison) ; CHECK-SVE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-SVE2p1-OR-SME2-LABEL: 'get_lane_mask' ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i64 = call @llvm.get.active.lane.mask.nxv16i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i64 = call @llvm.get.active.lane.mask.nxv8i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i64 = call @llvm.get.active.lane.mask.nxv4i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i64 = call @llvm.get.active.lane.mask.nxv2i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i32 = call @llvm.get.active.lane.mask.nxv16i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i32 = call @llvm.get.active.lane.mask.nxv8i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i32 = call @llvm.get.active.lane.mask.nxv4i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i32 = call @llvm.get.active.lane.mask.nxv2i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 5 for: %mask_nxv64i1_i64 = call @llvm.get.active.lane.mask.nxv64i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv32i1_i64 = call @llvm.get.active.lane.mask.nxv32i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i16 = call @llvm.get.active.lane.mask.nxv16i1.i16(i16 poison, i16 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i64 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i64 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i64 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i64 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i32 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i32 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i32 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i32 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32 poison, i32 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 48 for: %mask_v32i1_i64 = call <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64 poison, i64 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of 6 for: %mask_v16i1_i16 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16 poison, i16 poison) ; CHECK-SVE2p1-OR-SME2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'get_lane_mask' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i64 = call @llvm.get.active.lane.mask.nxv16i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i64 = call @llvm.get.active.lane.mask.nxv8i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i64 = call @llvm.get.active.lane.mask.nxv4i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i64 = call @llvm.get.active.lane.mask.nxv2i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i32 = call @llvm.get.active.lane.mask.nxv16i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv8i1_i32 = call @llvm.get.active.lane.mask.nxv8i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv4i1_i32 = call @llvm.get.active.lane.mask.nxv4i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv2i1_i32 = call @llvm.get.active.lane.mask.nxv2i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 13 for: %mask_nxv64i1_i64 = call @llvm.get.active.lane.mask.nxv64i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 5 for: %mask_nxv32i1_i64 = call @llvm.get.active.lane.mask.nxv32i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %mask_nxv16i1_i16 = call @llvm.get.active.lane.mask.nxv16i1.i16(i16 poison, i16 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i64 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i64 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i64 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i64 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 32 for: %mask_v16i1_i32 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 16 for: %mask_v8i1_i32 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 8 for: %mask_v4i1_i32 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 4 for: %mask_v2i1_i32 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32 poison, i32 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 48 for: %mask_v32i1_i64 = call <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64 poison, i64 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 6 for: %mask_v16i1_i16 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16 poison, i16 poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %mask_nxv16i1_i64 = call @llvm.get.active.lane.mask.nxv16i1.i64(i64 poison, i64 poison) %mask_nxv8i1_i64 = call @llvm.get.active.lane.mask.nxv8i1.i64(i64 poison, i64 poison) %mask_nxv4i1_i64 = call @llvm.get.active.lane.mask.nxv4i1.i64(i64 poison, i64 poison) %mask_nxv2i1_i64 = call @llvm.get.active.lane.mask.nxv2i1.i64(i64 poison, i64 poison) %mask_nxv16i1_i32 = call @llvm.get.active.lane.mask.nxv16i1.i32(i32 poison, i32 poison) %mask_nxv8i1_i32 = call @llvm.get.active.lane.mask.nxv8i1.i32(i32 poison, i32 poison) %mask_nxv4i1_i32 = call @llvm.get.active.lane.mask.nxv4i1.i32(i32 poison, i32 poison) %mask_nxv2i1_i32 = call @llvm.get.active.lane.mask.nxv2i1.i32(i32 poison, i32 poison) %mask_nxv64i1_i64 = call @llvm.get.active.lane.mask.nxv64i1.i64(i64 poison, i64 poison) %mask_nxv32i1_i64 = call @llvm.get.active.lane.mask.nxv32i1.i64(i64 poison, i64 poison) %mask_nxv16i1_i16 = call @llvm.get.active.lane.mask.nxv16i1.i16(i16 poison, i16 poison) %mask_v16i1_i64 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64 poison, i64 poison) %mask_v8i1_i64 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64 poison, i64 poison) %mask_v4i1_i64 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64 poison, i64 poison) %mask_v2i1_i64 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64 poison, i64 poison) %mask_v16i1_i32 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32 poison, i32 poison) %mask_v8i1_i32 = call <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32 poison, i32 poison) %mask_v4i1_i32 = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 poison, i32 poison) %mask_v2i1_i32 = call <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32 poison, i32 poison) %mask_v32i1_i64 = call <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64 poison, i64 poison) %mask_v16i1_i16 = call <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16 poison, i16 poison) ret void } define void @fshr() #0 { ; CHECK-VSCALE-1-LABEL: 'fshr' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %1 = call @llvm.fshr.nxv16i8( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %2 = call @llvm.fshr.nxv8i16( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %3 = call @llvm.fshr.nxv4i32( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %4 = call @llvm.fshr.nxv2i64( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'fshr' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %1 = call @llvm.fshr.nxv16i8( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %2 = call @llvm.fshr.nxv8i16( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %3 = call @llvm.fshr.nxv4i32( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %4 = call @llvm.fshr.nxv2i64( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'fshr' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %1 = call @llvm.fshr.nxv16i8( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %2 = call @llvm.fshr.nxv8i16( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %3 = call @llvm.fshr.nxv4i32( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %4 = call @llvm.fshr.nxv2i64( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call @llvm.fshr.nxv16i8( poison, poison, poison) call @llvm.fshr.nxv8i16( poison, poison, poison) call @llvm.fshr.nxv4i32( poison, poison, poison) call @llvm.fshr.nxv2i64( poison, poison, poison) ret void } define void @fshl() #0 { ; CHECK-VSCALE-1-LABEL: 'fshl' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %1 = call @llvm.fshl.nxv16i8( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %2 = call @llvm.fshl.nxv8i16( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %3 = call @llvm.fshl.nxv4i32( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 5 for: %4 = call @llvm.fshl.nxv2i64( poison, poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'fshl' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %1 = call @llvm.fshl.nxv16i8( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %2 = call @llvm.fshl.nxv8i16( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %3 = call @llvm.fshl.nxv4i32( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 5 for: %4 = call @llvm.fshl.nxv2i64( poison, poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'fshl' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %1 = call @llvm.fshl.nxv16i8( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %2 = call @llvm.fshl.nxv8i16( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %3 = call @llvm.fshl.nxv4i32( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 7 for: %4 = call @llvm.fshl.nxv2i64( poison, poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call @llvm.fshl.nxv16i8( poison, poison, poison) call @llvm.fshl.nxv8i16( poison, poison, poison) call @llvm.fshl.nxv4i32( poison, poison, poison) call @llvm.fshl.nxv2i64( poison, poison, poison) ret void } define @masked_gather_nxv4i32( %ld, %masks, %passthru) { ; CHECK-VSCALE-1-LABEL: 'masked_gather_nxv4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:40 CodeSize:40 Lat:160 SizeLat:40 for: %res = call @llvm.masked.gather.nxv4i32.nxv4p0( align 4 %ld, %masks, %passthru) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; ; CHECK-VSCALE-2-LABEL: 'masked_gather_nxv4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:80 CodeSize:80 Lat:320 SizeLat:80 for: %res = call @llvm.masked.gather.nxv4i32.nxv4p0( align 4 %ld, %masks, %passthru) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; ; TYPE_BASED_ONLY-LABEL: 'masked_gather_nxv4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %res = call @llvm.masked.gather.nxv4i32.nxv4p0( align 4 %ld, %masks, %passthru) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; %res = call @llvm.masked.gather.nxv4i32( %ld, i32 0, %masks, %passthru) ret %res } define @masked_gather_nxv8i32( %ld, %masks, %passthru) { ; CHECK-VSCALE-1-LABEL: 'masked_gather_nxv8i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:80 CodeSize:80 Lat:320 SizeLat:80 for: %res = call @llvm.masked.gather.nxv8i32.nxv8p0( align 4 %ld, %masks, %passthru) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; ; CHECK-VSCALE-2-LABEL: 'masked_gather_nxv8i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:160 CodeSize:160 Lat:640 SizeLat:160 for: %res = call @llvm.masked.gather.nxv8i32.nxv8p0( align 4 %ld, %masks, %passthru) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; ; TYPE_BASED_ONLY-LABEL: 'masked_gather_nxv8i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: %res = call @llvm.masked.gather.nxv8i32.nxv8p0( align 4 %ld, %masks, %passthru) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret %res ; %res = call @llvm.masked.gather.nxv8i32( %ld, i32 0, %masks, %passthru) ret %res } define <4 x i32> @masked_gather_v4i32(<4 x ptr> %ld, <4 x i1> %masks, <4 x i32> %passthru) { ; CHECK-VSCALE-1-LABEL: 'masked_gather_v4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:28 CodeSize:20 Lat:44 SizeLat:32 for: %res = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> align 4 %ld, <4 x i1> %masks, <4 x i32> %passthru) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %res ; ; CHECK-VSCALE-2-LABEL: 'masked_gather_v4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:28 CodeSize:20 Lat:44 SizeLat:32 for: %res = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> align 4 %ld, <4 x i1> %masks, <4 x i32> %passthru) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %res ; ; TYPE_BASED_ONLY-LABEL: 'masked_gather_v4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:36 CodeSize:20 Lat:36 SizeLat:36 for: %res = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> align 4 %ld, <4 x i1> %masks, <4 x i32> %passthru) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %res ; %res = call <4 x i32> @llvm.masked.gather.v4i32(<4 x ptr> %ld, i32 0, <4 x i1> %masks, <4 x i32> %passthru) ret <4 x i32> %res } define <1 x i128> @masked_gather_v1i128(<1 x ptr> %ld, <1 x i1> %masks, <1 x i128> %passthru) { ; CHECK-VSCALE-1-LABEL: 'masked_gather_v1i128' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:8 CodeSize:6 Lat:11 SizeLat:9 for: %res = call <1 x i128> @llvm.masked.gather.v1i128.v1p0(<1 x ptr> align 16 %ld, <1 x i1> %masks, <1 x i128> %passthru) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <1 x i128> %res ; ; CHECK-VSCALE-2-LABEL: 'masked_gather_v1i128' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:6 Lat:11 SizeLat:9 for: %res = call <1 x i128> @llvm.masked.gather.v1i128.v1p0(<1 x ptr> align 16 %ld, <1 x i1> %masks, <1 x i128> %passthru) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <1 x i128> %res ; ; TYPE_BASED_ONLY-LABEL: 'masked_gather_v1i128' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %res = call <1 x i128> @llvm.masked.gather.v1i128.v1p0(<1 x ptr> align 16 %ld, <1 x i1> %masks, <1 x i128> %passthru) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <1 x i128> %res ; %res = call <1 x i128> @llvm.masked.gather.v1i128.v1p0(<1 x ptr> %ld, i32 0, <1 x i1> %masks, <1 x i128> %passthru) ret <1 x i128> %res } define void @masked_scatter_nxv4i32( %data, %ptrs, %masks) { ; CHECK-VSCALE-1-LABEL: 'masked_scatter_nxv4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 40 for: call void @llvm.masked.scatter.nxv4i32.nxv4p0( %data, align 4 %ptrs, %masks) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'masked_scatter_nxv4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 80 for: call void @llvm.masked.scatter.nxv4i32.nxv4p0( %data, align 4 %ptrs, %masks) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'masked_scatter_nxv4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: call void @llvm.masked.scatter.nxv4i32.nxv4p0( %data, align 4 %ptrs, %masks) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.masked.scatter.nxv4i32( %data, %ptrs, i32 0, %masks) ret void } define void @masked_scatter_nxv8i32( %data, %ptrs, %masks) { ; CHECK-VSCALE-1-LABEL: 'masked_scatter_nxv8i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 80 for: call void @llvm.masked.scatter.nxv8i32.nxv8p0( %data, align 4 %ptrs, %masks) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'masked_scatter_nxv8i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 160 for: call void @llvm.masked.scatter.nxv8i32.nxv8p0( %data, align 4 %ptrs, %masks) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'masked_scatter_nxv8i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of Invalid for: call void @llvm.masked.scatter.nxv8i32.nxv8p0( %data, align 4 %ptrs, %masks) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.masked.scatter.nxv8i32( %data, %ptrs, i32 0, %masks) ret void } define void @masked_scatter_v4i32(<4 x i32> %data, <4 x ptr> %ptrs, <4 x i1> %masks) { ; CHECK-VSCALE-1-LABEL: 'masked_scatter_v4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:28 CodeSize:20 Lat:32 SizeLat:32 for: call void @llvm.masked.scatter.v4i32.v4p0(<4 x i32> %data, <4 x ptr> align 4 %ptrs, <4 x i1> %masks) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'masked_scatter_v4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:28 CodeSize:20 Lat:32 SizeLat:32 for: call void @llvm.masked.scatter.v4i32.v4p0(<4 x i32> %data, <4 x ptr> align 4 %ptrs, <4 x i1> %masks) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'masked_scatter_v4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:28 CodeSize:16 Lat:28 SizeLat:28 for: call void @llvm.masked.scatter.v4i32.v4p0(<4 x i32> %data, <4 x ptr> align 4 %ptrs, <4 x i1> %masks) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.masked.scatter.v4i32(<4 x i32> %data, <4 x ptr> %ptrs, i32 0, <4 x i1> %masks) ret void } define void @masked_scatter_v1i128(<1 x i128> %data, <1 x ptr> %ptrs, <1 x i1> %masks) { ; CHECK-VSCALE-1-LABEL: 'masked_scatter_v1i128' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:8 CodeSize:6 Lat:8 SizeLat:9 for: call void @llvm.masked.scatter.v1i128.v1p0(<1 x i128> %data, <1 x ptr> align 16 %ptrs, <1 x i1> %masks) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'masked_scatter_v1i128' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:6 Lat:8 SizeLat:9 for: call void @llvm.masked.scatter.v1i128.v1p0(<1 x i128> %data, <1 x ptr> align 16 %ptrs, <1 x i1> %masks) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'masked_scatter_v1i128' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: call void @llvm.masked.scatter.v1i128.v1p0(<1 x i128> %data, <1 x ptr> align 16 %ptrs, <1 x i1> %masks) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.masked.scatter.v1i128.v1p0(<1 x i128> %data, <1 x ptr> %ptrs, i32 0, <1 x i1> %masks) ret void } define void @histogram_nxv2i64( %buckets, %mask) #3 { ; CHECK-VSCALE-1-LABEL: 'histogram_nxv2i64' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv2p0.i64( %buckets, i64 1, %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_nxv2i64' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv2p0.i64( %buckets, i64 1, %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_nxv2i64' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv2p0.i64( %buckets, i64 1, %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.nxv2p0.i64( %buckets, i64 1, %mask) ret void } define void @histogram_nxv4i32( %buckets, %mask) #3 { ; CHECK-VSCALE-1-LABEL: 'histogram_nxv4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i32( %buckets, i32 1, %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_nxv4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i32( %buckets, i32 1, %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_nxv4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 8 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i32( %buckets, i32 1, %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.nxv4p0.i32( %buckets, i32 1, %mask) ret void } define void @histogram_nxv8i16( %buckets, %mask) #3 { ; CHECK-VSCALE-1-LABEL: 'histogram_nxv8i16' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv8p0.i16( %buckets, i16 1, %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_nxv8i16' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv8p0.i16( %buckets, i16 1, %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_nxv8i16' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv8p0.i16( %buckets, i16 1, %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.nxv8p0.i16( %buckets, i16 1, %mask) ret void } define void @histogram_nxv16i8( %buckets, %mask) #3 { ; CHECK-VSCALE-1-LABEL: 'histogram_nxv16i8' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 32 for: call void @llvm.experimental.vector.histogram.add.nxv16p0.i8( %buckets, i8 1, %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_nxv16i8' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 32 for: call void @llvm.experimental.vector.histogram.add.nxv16p0.i8( %buckets, i8 1, %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_nxv16i8' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 32 for: call void @llvm.experimental.vector.histogram.add.nxv16p0.i8( %buckets, i8 1, %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.nxv16p0.i64( %buckets, i8 1, %mask) ret void } define void @histogram_v2i64(<2 x ptr> %buckets, <2 x i1> %mask) { ; CHECK-VSCALE-1-LABEL: 'histogram_v2i64' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:10 CodeSize:8 Lat:16 SizeLat:10 for: call void @llvm.experimental.vector.histogram.add.v2p0.i64(<2 x ptr> %buckets, i64 1, <2 x i1> %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_v2i64' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:8 Lat:16 SizeLat:10 for: call void @llvm.experimental.vector.histogram.add.v2p0.i64(<2 x ptr> %buckets, i64 1, <2 x i1> %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_v2i64' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:10 CodeSize:8 Lat:16 SizeLat:10 for: call void @llvm.experimental.vector.histogram.add.v2p0.i64(<2 x ptr> %buckets, i64 1, <2 x i1> %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.v2p0.i64(<2 x ptr> %buckets, i64 1, <2 x i1> %mask) ret void } define void @histogram_v4i32(<4 x ptr> %buckets, <4 x i1> %mask) { ; CHECK-VSCALE-1-LABEL: 'histogram_v4i32' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:20 CodeSize:16 Lat:32 SizeLat:20 for: call void @llvm.experimental.vector.histogram.add.v4p0.i32(<4 x ptr> %buckets, i32 1, <4 x i1> %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_v4i32' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:16 Lat:32 SizeLat:20 for: call void @llvm.experimental.vector.histogram.add.v4p0.i32(<4 x ptr> %buckets, i32 1, <4 x i1> %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_v4i32' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:20 CodeSize:16 Lat:32 SizeLat:20 for: call void @llvm.experimental.vector.histogram.add.v4p0.i32(<4 x ptr> %buckets, i32 1, <4 x i1> %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.v4p0.i32(<4 x ptr> %buckets, i32 1, <4 x i1> %mask) ret void } define void @histogram_v8i16(<8 x ptr> %buckets, <8 x i1> %mask) { ; CHECK-VSCALE-1-LABEL: 'histogram_v8i16' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:40 CodeSize:32 Lat:64 SizeLat:40 for: call void @llvm.experimental.vector.histogram.add.v8p0.i16(<8 x ptr> %buckets, i16 1, <8 x i1> %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_v8i16' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:32 Lat:64 SizeLat:40 for: call void @llvm.experimental.vector.histogram.add.v8p0.i16(<8 x ptr> %buckets, i16 1, <8 x i1> %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_v8i16' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:40 CodeSize:32 Lat:64 SizeLat:40 for: call void @llvm.experimental.vector.histogram.add.v8p0.i16(<8 x ptr> %buckets, i16 1, <8 x i1> %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.v8p0.i16(<8 x ptr> %buckets, i16 1, <8 x i1> %mask) ret void } define void @histogram_v16i8(<16 x ptr> %buckets, <16 x i1> %mask) { ; CHECK-VSCALE-1-LABEL: 'histogram_v16i8' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:80 CodeSize:64 Lat:128 SizeLat:80 for: call void @llvm.experimental.vector.histogram.add.v16p0.i8(<16 x ptr> %buckets, i8 1, <16 x i1> %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_v16i8' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:80 CodeSize:64 Lat:128 SizeLat:80 for: call void @llvm.experimental.vector.histogram.add.v16p0.i8(<16 x ptr> %buckets, i8 1, <16 x i1> %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_v16i8' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:80 CodeSize:64 Lat:128 SizeLat:80 for: call void @llvm.experimental.vector.histogram.add.v16p0.i8(<16 x ptr> %buckets, i8 1, <16 x i1> %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.v16p0.i64(<16 x ptr> %buckets, i8 1, <16 x i1> %mask) ret void } define void @histogram_nxv4i64( %buckets, %mask) #3 { ; CHECK-VSCALE-1-LABEL: 'histogram_nxv4i64' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i64( %buckets, i64 1, %mask) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'histogram_nxv4i64' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i64( %buckets, i64 1, %mask) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'histogram_nxv4i64' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 16 for: call void @llvm.experimental.vector.histogram.add.nxv4p0.i64( %buckets, i64 1, %mask) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; call void @llvm.experimental.vector.histogram.add.nxv4p0.i64( %buckets, i64 1, %mask) ret void } define void @match() #3 { ; CHECK-VSCALE-1-LABEL: 'match' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %match_nxv16i8_v16i8 = call @llvm.experimental.vector.match.nxv16i8.v16i8( poison, <16 x i8> poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 4 for: %match_nxv8i16_v8i16 = call @llvm.experimental.vector.match.nxv8i16.v8i16( poison, <8 x i16> poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_nxv4i32_v4i32 = call @llvm.experimental.vector.match.nxv4i32.v4i32( poison, <4 x i32> poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_nxv2i64_v2i64 = call @llvm.experimental.vector.match.nxv2i64.v2i64( poison, <2 x i64> poison, poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 14 for: %match_v16i8_v16i8 = call <16 x i1> @llvm.experimental.vector.match.v16i8.v16i8(<16 x i8> poison, <16 x i8> poison, <16 x i1> poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 14 for: %match_v8i16_v8i16 = call <8 x i1> @llvm.experimental.vector.match.v8i16.v8i16(<8 x i16> poison, <8 x i16> poison, <8 x i1> poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_v4i32_v4i32 = call <4 x i1> @llvm.experimental.vector.match.v4i32.v4i32(<4 x i32> poison, <4 x i32> poison, <4 x i1> poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_v2i64_v2i64 = call <2 x i1> @llvm.experimental.vector.match.v2i64.v2i64(<2 x i64> poison, <2 x i64> poison, <2 x i1> poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'match' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %match_nxv16i8_v16i8 = call @llvm.experimental.vector.match.nxv16i8.v16i8( poison, <16 x i8> poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 4 for: %match_nxv8i16_v8i16 = call @llvm.experimental.vector.match.nxv8i16.v8i16( poison, <8 x i16> poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_nxv4i32_v4i32 = call @llvm.experimental.vector.match.nxv4i32.v4i32( poison, <4 x i32> poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_nxv2i64_v2i64 = call @llvm.experimental.vector.match.nxv2i64.v2i64( poison, <2 x i64> poison, poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 14 for: %match_v16i8_v16i8 = call <16 x i1> @llvm.experimental.vector.match.v16i8.v16i8(<16 x i8> poison, <16 x i8> poison, <16 x i1> poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 14 for: %match_v8i16_v8i16 = call <8 x i1> @llvm.experimental.vector.match.v8i16.v8i16(<8 x i16> poison, <8 x i16> poison, <8 x i1> poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_v4i32_v4i32 = call <4 x i1> @llvm.experimental.vector.match.v4i32.v4i32(<4 x i32> poison, <4 x i32> poison, <4 x i1> poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_v2i64_v2i64 = call <2 x i1> @llvm.experimental.vector.match.v2i64.v2i64(<2 x i64> poison, <2 x i64> poison, <2 x i1> poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'match' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 4 for: %match_nxv16i8_v16i8 = call @llvm.experimental.vector.match.nxv16i8.v16i8( poison, <16 x i8> poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 4 for: %match_nxv8i16_v8i16 = call @llvm.experimental.vector.match.nxv8i16.v8i16( poison, <8 x i16> poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_nxv4i32_v4i32 = call @llvm.experimental.vector.match.nxv4i32.v4i32( poison, <4 x i32> poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_nxv2i64_v2i64 = call @llvm.experimental.vector.match.nxv2i64.v2i64( poison, <2 x i64> poison, poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 14 for: %match_v16i8_v16i8 = call <16 x i1> @llvm.experimental.vector.match.v16i8.v16i8(<16 x i8> poison, <16 x i8> poison, <16 x i1> poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 14 for: %match_v8i16_v8i16 = call <8 x i1> @llvm.experimental.vector.match.v8i16.v8i16(<8 x i16> poison, <8 x i16> poison, <8 x i1> poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:29 CodeSize:21 Lat:29 SizeLat:29 for: %match_v4i32_v4i32 = call <4 x i1> @llvm.experimental.vector.match.v4i32.v4i32(<4 x i32> poison, <4 x i32> poison, <4 x i1> poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:15 CodeSize:11 Lat:15 SizeLat:15 for: %match_v2i64_v2i64 = call <2 x i1> @llvm.experimental.vector.match.v2i64.v2i64(<2 x i64> poison, <2 x i64> poison, <2 x i1> poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %match_nxv16i8_v16i8 = call @llvm.experimental.vector.match.nxv16i8.v16i8( poison, <16 x i8> poison, poison) %match_nxv8i16_v8i16 = call @llvm.experimental.vector.match.nxv8i16.v8i16( poison, <8 x i16> poison, poison) %match_nxv4i32_v4i32 = call @llvm.experimental.vector.match.nxv4i32.v4i32( poison, <4 x i32> poison, poison) %match_nxv2i64_v2i64 = call @llvm.experimental.vector.match.nxv2i64.v2i64( poison, <2 x i64> poison, poison) %match_v16i8_v16i8 = call <16 x i1> @llvm.experimental.vector.match.v16i8.v16i8(<16 x i8> poison, <16 x i8> poison, <16 x i1> poison) %match_v8i16_v8i16 = call <8 x i1> @llvm.experimental.vector.match.v8i16.v8i16(<8 x i16> poison, <8 x i16> poison, <8 x i1> poison) %match_v4i32_v4i32 = call <4 x i1> @llvm.experimental.vector.match.v4i32.v4i32(<4 x i32> poison, <4 x i32> poison, <4 x i1> poison) %match_v2i64_v2i64 = call <2 x i1> @llvm.experimental.vector.match.v2i64.v2i64(<2 x i64> poison, <2 x i64> poison, <2 x i1> poison) ret void } define void @sqrt() #1 { ; CHECK-VSCALE-1-LABEL: 'sqrt' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv8f16 = call @llvm.sqrt.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv4f32 = call @llvm.sqrt.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv2f64 = call @llvm.sqrt.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %sqrt.nxv4f64 = call @llvm.sqrt.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'sqrt' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv8f16 = call @llvm.sqrt.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv4f32 = call @llvm.sqrt.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv2f64 = call @llvm.sqrt.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %sqrt.nxv4f64 = call @llvm.sqrt.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'sqrt' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv8f16 = call @llvm.sqrt.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv4f32 = call @llvm.sqrt.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %sqrt.nxv2f64 = call @llvm.sqrt.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %sqrt.nxv4f64 = call @llvm.sqrt.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %sqrt.nxv8f16 = call @llvm.sqrt.nxv8f16( poison) %sqrt.nxv4f32 = call @llvm.sqrt.nxv4f32( poison) %sqrt.nxv2f64 = call @llvm.sqrt.nxv2f64( poison) %sqrt.nxv4f64 = call @llvm.sqrt.nxv4f64( poison) ret void } define void @fabs() #1 { ; CHECK-VSCALE-1-LABEL: 'fabs' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv8f16 = call @llvm.fabs.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv4f32 = call @llvm.fabs.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv2f64 = call @llvm.fabs.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %fabs.nxv4f64 = call @llvm.fabs.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'fabs' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv8f16 = call @llvm.fabs.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv4f32 = call @llvm.fabs.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv2f64 = call @llvm.fabs.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %fabs.nxv4f64 = call @llvm.fabs.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'fabs' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv8f16 = call @llvm.fabs.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv4f32 = call @llvm.fabs.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %fabs.nxv2f64 = call @llvm.fabs.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %fabs.nxv4f64 = call @llvm.fabs.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %fabs.nxv8f16 = call @llvm.fabs.nxv8f16( poison) %fabs.nxv4f32 = call @llvm.fabs.nxv4f32( poison) %fabs.nxv2f64 = call @llvm.fabs.nxv2f64( poison) %fabs.nxv4f64 = call @llvm.fabs.nxv4f64( poison) ret void } define void @ceil() #1 { ; CHECK-VSCALE-1-LABEL: 'ceil' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv8f16 = call @llvm.ceil.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv4f32 = call @llvm.ceil.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv2f64 = call @llvm.ceil.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %ceil.nxv4f64 = call @llvm.ceil.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'ceil' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv8f16 = call @llvm.ceil.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv4f32 = call @llvm.ceil.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv2f64 = call @llvm.ceil.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %ceil.nxv4f64 = call @llvm.ceil.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'ceil' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv8f16 = call @llvm.ceil.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv4f32 = call @llvm.ceil.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %ceil.nxv2f64 = call @llvm.ceil.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %ceil.nxv4f64 = call @llvm.ceil.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %ceil.nxv8f16 = call @llvm.ceil.nxv8f16( poison) %ceil.nxv4f32 = call @llvm.ceil.nxv4f32( poison) %ceil.nxv2f64 = call @llvm.ceil.nxv2f64( poison) %ceil.nxv4f64 = call @llvm.ceil.nxv4f64( poison) ret void } define void @floor() #1 { ; CHECK-VSCALE-1-LABEL: 'floor' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %floor.nxv8f16 = call @llvm.floor.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %floor.nxv4f32 = call @llvm.floor.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %floor.nxv2f64 = call @llvm.floor.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %floor.nxv4f64 = call @llvm.floor.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'floor' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %floor.nxv8f16 = call @llvm.floor.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %floor.nxv4f32 = call @llvm.floor.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %floor.nxv2f64 = call @llvm.floor.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %floor.nxv4f64 = call @llvm.floor.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'floor' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %floor.nxv8f16 = call @llvm.floor.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %floor.nxv4f32 = call @llvm.floor.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %floor.nxv2f64 = call @llvm.floor.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %floor.nxv4f64 = call @llvm.floor.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %floor.nxv8f16 = call @llvm.floor.nxv8f16( poison) %floor.nxv4f32 = call @llvm.floor.nxv4f32( poison) %floor.nxv2f64 = call @llvm.floor.nxv2f64( poison) %floor.nxv4f64 = call @llvm.floor.nxv4f64( poison) ret void } define void @nearbyint() #1 { ; CHECK-VSCALE-1-LABEL: 'nearbyint' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv8f16 = call @llvm.nearbyint.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv4f32 = call @llvm.nearbyint.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv2f64 = call @llvm.nearbyint.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %nearbyint.nxv4f64 = call @llvm.nearbyint.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'nearbyint' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv8f16 = call @llvm.nearbyint.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv4f32 = call @llvm.nearbyint.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv2f64 = call @llvm.nearbyint.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %nearbyint.nxv4f64 = call @llvm.nearbyint.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'nearbyint' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv8f16 = call @llvm.nearbyint.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv4f32 = call @llvm.nearbyint.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %nearbyint.nxv2f64 = call @llvm.nearbyint.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %nearbyint.nxv4f64 = call @llvm.nearbyint.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %nearbyint.nxv8f16 = call @llvm.nearbyint.nxv8f16( poison) %nearbyint.nxv4f32 = call @llvm.nearbyint.nxv4f32( poison) %nearbyint.nxv2f64 = call @llvm.nearbyint.nxv2f64( poison) %nearbyint.nxv4f64 = call @llvm.nearbyint.nxv4f64( poison) ret void } define void @round() #1 { ; CHECK-VSCALE-1-LABEL: 'round' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %round.nxv8f16 = call @llvm.round.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %round.nxv4f32 = call @llvm.round.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %round.nxv2f64 = call @llvm.round.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %round.nxv4f64 = call @llvm.round.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'round' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %round.nxv8f16 = call @llvm.round.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %round.nxv4f32 = call @llvm.round.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %round.nxv2f64 = call @llvm.round.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %round.nxv4f64 = call @llvm.round.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'round' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %round.nxv8f16 = call @llvm.round.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %round.nxv4f32 = call @llvm.round.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %round.nxv2f64 = call @llvm.round.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %round.nxv4f64 = call @llvm.round.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %round.nxv8f16 = call @llvm.round.nxv8f16( poison) %round.nxv4f32 = call @llvm.round.nxv4f32( poison) %round.nxv2f64 = call @llvm.round.nxv2f64( poison) %round.nxv4f64 = call @llvm.round.nxv4f64( poison) ret void } define void @rint() #1 { ; CHECK-VSCALE-1-LABEL: 'rint' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %rint.nxv8f16 = call @llvm.rint.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %rint.nxv4f32 = call @llvm.rint.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %rint.nxv2f64 = call @llvm.rint.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %rint.nxv4f64 = call @llvm.rint.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'rint' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %rint.nxv8f16 = call @llvm.rint.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %rint.nxv4f32 = call @llvm.rint.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %rint.nxv2f64 = call @llvm.rint.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %rint.nxv4f64 = call @llvm.rint.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'rint' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %rint.nxv8f16 = call @llvm.rint.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %rint.nxv4f32 = call @llvm.rint.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %rint.nxv2f64 = call @llvm.rint.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %rint.nxv4f64 = call @llvm.rint.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %rint.nxv8f16 = call @llvm.rint.nxv8f16( poison) %rint.nxv4f32 = call @llvm.rint.nxv4f32( poison) %rint.nxv2f64 = call @llvm.rint.nxv2f64( poison) %rint.nxv4f64 = call @llvm.rint.nxv4f64( poison) ret void } define void @roundeven() #1 { ; CHECK-VSCALE-1-LABEL: 'roundeven' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv8f16 = call @llvm.roundeven.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv4f32 = call @llvm.roundeven.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv2f64 = call @llvm.roundeven.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %roundeven.nxv4f64 = call @llvm.roundeven.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'roundeven' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv8f16 = call @llvm.roundeven.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv4f32 = call @llvm.roundeven.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv2f64 = call @llvm.roundeven.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %roundeven.nxv4f64 = call @llvm.roundeven.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'roundeven' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv8f16 = call @llvm.roundeven.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv4f32 = call @llvm.roundeven.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %roundeven.nxv2f64 = call @llvm.roundeven.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %roundeven.nxv4f64 = call @llvm.roundeven.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %roundeven.nxv8f16 = call @llvm.roundeven.nxv8f16( poison) %roundeven.nxv4f32 = call @llvm.roundeven.nxv4f32( poison) %roundeven.nxv2f64 = call @llvm.roundeven.nxv2f64( poison) %roundeven.nxv4f64 = call @llvm.roundeven.nxv4f64( poison) ret void } define void @trunc() #1 { ; CHECK-VSCALE-1-LABEL: 'trunc' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv8f16 = call @llvm.trunc.nxv8f16( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv4f32 = call @llvm.trunc.nxv4f32( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv2f64 = call @llvm.trunc.nxv2f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %trunc.nxv4f64 = call @llvm.trunc.nxv4f64( poison) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'trunc' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv8f16 = call @llvm.trunc.nxv8f16( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv4f32 = call @llvm.trunc.nxv4f32( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv2f64 = call @llvm.trunc.nxv2f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %trunc.nxv4f64 = call @llvm.trunc.nxv4f64( poison) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'trunc' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv8f16 = call @llvm.trunc.nxv8f16( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv4f32 = call @llvm.trunc.nxv4f32( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %trunc.nxv2f64 = call @llvm.trunc.nxv2f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %trunc.nxv4f64 = call @llvm.trunc.nxv4f64( poison) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %trunc.nxv8f16 = call @llvm.trunc.nxv8f16( poison) %trunc.nxv4f32 = call @llvm.trunc.nxv4f32( poison) %trunc.nxv2f64 = call @llvm.trunc.nxv2f64( poison) %trunc.nxv4f64 = call @llvm.trunc.nxv4f64( poison) ret void } define void @abs() #1 { ; CHECK-VSCALE-1-LABEL: 'abs' ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %abs.nxv16i8 = call @llvm.abs.nxv16i8( poison, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %abs.nxv8i16 = call @llvm.abs.nxv8i16( poison, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %abs.nxv4i32 = call @llvm.abs.nxv4i32( poison, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 1 for: %abs.nxv2i64 = call @llvm.abs.nxv2i64( poison, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of 2 for: %abs.nxv4i64 = call @llvm.abs.nxv4i64( poison, i1 true) ; CHECK-VSCALE-1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; CHECK-VSCALE-2-LABEL: 'abs' ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %abs.nxv16i8 = call @llvm.abs.nxv16i8( poison, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %abs.nxv8i16 = call @llvm.abs.nxv8i16( poison, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %abs.nxv4i32 = call @llvm.abs.nxv4i32( poison, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 1 for: %abs.nxv2i64 = call @llvm.abs.nxv2i64( poison, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of 2 for: %abs.nxv4i64 = call @llvm.abs.nxv4i64( poison, i1 true) ; CHECK-VSCALE-2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; ; TYPE_BASED_ONLY-LABEL: 'abs' ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %abs.nxv16i8 = call @llvm.abs.nxv16i8( poison, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %abs.nxv8i16 = call @llvm.abs.nxv8i16( poison, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %abs.nxv4i32 = call @llvm.abs.nxv4i32( poison, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 1 for: %abs.nxv2i64 = call @llvm.abs.nxv2i64( poison, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of 2 for: %abs.nxv4i64 = call @llvm.abs.nxv4i64( poison, i1 true) ; TYPE_BASED_ONLY-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %abs.nxv16i8 = call @llvm.abs.nxv16i8( poison, i1 true) %abs.nxv8i16 = call @llvm.abs.nxv8i16( poison, i1 true) %abs.nxv4i32 = call @llvm.abs.nxv4i32( poison, i1 true) %abs.nxv2i64 = call @llvm.abs.nxv2i64( poison, i1 true) %abs.nxv4i64 = call @llvm.abs.nxv4i64( poison, i1 true) ret void } declare @llvm.get.active.lane.mask.nxv16i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv8i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv4i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv2i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv16i1.i32(i32, i32) declare @llvm.get.active.lane.mask.nxv8i1.i32(i32, i32) declare @llvm.get.active.lane.mask.nxv4i1.i32(i32, i32) declare @llvm.get.active.lane.mask.nxv2i1.i32(i32, i32) declare @llvm.get.active.lane.mask.nxv64i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv32i1.i64(i64, i64) declare @llvm.get.active.lane.mask.nxv16i1.i16(i16, i16) declare <16 x i1> @llvm.get.active.lane.mask.v16i1.i64(i64, i64) declare <8 x i1> @llvm.get.active.lane.mask.v8i1.i64(i64, i64) declare <4 x i1> @llvm.get.active.lane.mask.v4i1.i64(i64, i64) declare <2 x i1> @llvm.get.active.lane.mask.v2i1.i64(i64, i64) declare <16 x i1> @llvm.get.active.lane.mask.v16i1.i32(i32, i32) declare <8 x i1> @llvm.get.active.lane.mask.v8i1.i32(i32, i32) declare <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32, i32) declare <2 x i1> @llvm.get.active.lane.mask.v2i1.i32(i32, i32) declare <32 x i1> @llvm.get.active.lane.mask.v32i1.i64(i64, i64) declare <16 x i1> @llvm.get.active.lane.mask.v16i1.i16(i16, i16) declare @llvm.fshr.nxv16i8(, , ) declare @llvm.fshr.nxv8i16(, , ) declare @llvm.fshr.nxv4i32(, , ) declare @llvm.fshr.nxv2i64(, , ) declare @llvm.fshl.nxv16i8(, , ) declare @llvm.fshl.nxv8i16(, , ) declare @llvm.fshl.nxv4i32(, , ) declare @llvm.fshl.nxv2i64(, , ) declare @llvm.masked.gather.nxv4i32( %ptrs, i32 %align, %masks, %passthru) declare @llvm.masked.gather.nxv8i32( %ptrs, i32 %align, %masks, %passthru) declare <4 x i32> @llvm.masked.gather.v4i32(<4 x ptr> %ptrs, i32 %align, <4 x i1> %masks, <4 x i32> %passthru) declare <1 x i128> @llvm.masked.gather.v1i128.v1p0(<1 x ptr>, i32, <1 x i1>, <1 x i128>) declare void @llvm.masked.scatter.nxv4i32( %data, %ptrs, i32 %align, %masks) declare void @llvm.masked.scatter.nxv8i32( %data, %ptrs, i32 %align, %masks) declare void @llvm.masked.scatter.v4i32(<4 x i32> %data, <4 x ptr> %ptrs, i32 %align, <4 x i1> %masks) declare void @llvm.masked.scatter.v1i128.v1p0(<1 x i128> %data, <1 x ptr> %ptrs, i32 %align, <1 x i1> %masks) attributes #0 = { "target-features"="+sve,+bf16" } attributes #1 = { "target-features"="+sve" vscale_range(1,16) } attributes #2 = { "target-features"="+sve" vscale_range(2, 16) } attributes #3 = { "target-features"="+sve,+sve2" vscale_range(1,16) }