; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py ; RUN: opt < %s -mtriple=aarch64--linux-gnu -passes="print" -cost-kind=all 2>&1 -disable-output | FileCheck %s target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" define void @shuffle() { ; CHECK-LABEL: 'shuffle' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v7 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 3 for: %v8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v9 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v10 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v11 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v12 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v13 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v10b = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v14 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v15 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16 = shufflevector <2 x float> undef, <2 x float> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v17 = shufflevector <4 x float> undef, <4 x float> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 0 for: %v18 = shufflevector <2 x fp128> undef, <2 x fp128> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v7 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> %v8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %v9 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v10 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v11 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> %v12 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %v13 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v10b = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v14 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> %v15 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %v16 = shufflevector <2 x float> undef, <2 x float> undef, <2 x i32> %v17 = shufflevector <4 x float> undef, <4 x float> undef, <4 x i32> %v18 = shufflevector <2 x fp128> undef, <2 x fp128> undef, <2 x i32> ret void } define void @concat() { ; CHECK-LABEL: 'concat' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 0 for: %v4i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 0 for: %v4i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 0 for: %v4f16 = shufflevector <2 x half> undef, <2 x half> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8f16 = shufflevector <4 x half> undef, <4 x half> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16f16 = shufflevector <8 x half> undef, <8 x half> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 0 for: %v4f32 = shufflevector <2 x float> undef, <2 x float> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8f32 = shufflevector <4 x float> undef, <4 x float> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4f64 = shufflevector <2 x double> undef, <2 x double> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v4i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <4 x i32> %v8i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> %v16i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> %v4i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <4 x i32> %v8i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> %v16i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> %v4i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <4 x i32> %v8i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> %v4i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <4 x i32> %v4f16 = shufflevector <2 x half> undef, <2 x half> undef, <4 x i32> %v8f16 = shufflevector <4 x half> undef, <4 x half> undef, <8 x i32> %v16f16 = shufflevector <8 x half> undef, <8 x half> undef, <16 x i32> %v4f32 = shufflevector <2 x float> undef, <2 x float> undef, <4 x i32> %v8f32 = shufflevector <4 x float> undef, <4 x float> undef, <8 x i32> %v4f64 = shufflevector <2 x double> undef, <2 x double> undef, <4 x i32> ret void } define void @insert_subvec() { ; CHECK-LABEL: 'insert_subvec' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i8_2_0 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i8_2_1 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i8_2_0 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i8_2_1 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i8_2_2 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i8_2_3 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %v8i8_2_05 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i8_4_0 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i8_4_1 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i8_4_2 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i8_4_3 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %v16i8_4_05 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i16_2_0 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i16_2_1 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i16_2_0 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i16_2_1 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i16_2_2 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i16_2_3 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %v8i16_2_05 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i16_4_0 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i16_4_1 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i16_4_2 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i16_4_3 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %v16i16_4_05 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i32_2_0 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v4i32_2_1 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i32_2_0 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i32_2_1 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i32_2_2 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v8i32_2_3 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:4 Lat:8 SizeLat:8 for: %v8i32_2_05 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i32_4_0 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i32_4_1 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i32_4_2 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16i32_4_3 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:16 CodeSize:8 Lat:16 SizeLat:16 for: %v16i32_4_05 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v4i8_2_0 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %v4i8_2_1 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %v8i8_2_0 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v8i8_2_1 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v8i8_2_2 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v8i8_2_3 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v8i8_2_05 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v16i8_4_0 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v16i8_4_1 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v16i8_4_2 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v16i8_4_3 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v16i8_4_05 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v4i16_2_0 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %v4i16_2_1 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %v8i16_2_0 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v8i16_2_1 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v8i16_2_2 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v8i16_2_3 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v8i16_2_05 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v16i16_4_0 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v16i16_4_1 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v16i16_4_2 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v16i16_4_3 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v16i16_4_05 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v4i32_2_0 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %v4i32_2_1 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %v8i32_2_0 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v8i32_2_1 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v8i32_2_2 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v8i32_2_3 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v8i32_2_05 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v16i32_4_0 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v16i32_4_1 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v16i32_4_2 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v16i32_4_3 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v16i32_4_05 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ret void } define void @zip() { ; CHECK-LABEL: 'zip' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zipv16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zipv8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip1v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip2v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zipv16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zipv2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zipv4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip1v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip2v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zipv8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zip1v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zip2v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %zipv16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip1v2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %zip2v2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zipv2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip1v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %zip2v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zipv4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zip1v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %zip2v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %zipv8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %zip1v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %zip2v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %zipv16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %zip1v2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> %zip2v2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <2 x i32> %zipv2i8 = shufflevector <2 x i8> undef, <2 x i8> undef, <4 x i32> %zip1v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %zip2v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %zipv4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> %zip1v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %zip2v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %zipv8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> %zip1v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %zip2v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %zipv16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <32 x i32> %zip1v2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> %zip2v2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <2 x i32> %zipv2i16 = shufflevector <2 x i16> undef, <2 x i16> undef, <4 x i32> %zip1v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %zip2v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %zipv4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> %zip1v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %zip2v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %zipv8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> %zip1v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %zip2v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %zipv16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <32 x i32> %zip1v2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> %zip2v2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <2 x i32> %zipv2i32 = shufflevector <2 x i32> undef, <2 x i32> undef, <4 x i32> %zip1v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %zip2v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %zipv4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> %zip1v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %zip2v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %zipv8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <16 x i32> %zip1v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %zip2v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %zipv16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <32 x i32> %zip1v2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> %zip2v2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> %zipv2i64 = shufflevector <2 x i64> undef, <2 x i64> undef, <4 x i32> %zip1v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %zip2v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %zipv4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <8 x i32> %zip1v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> %zip2v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> %zipv8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <16 x i32> %zip1v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> %zip2v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> %zipv16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <32 x i32> ret void } define void @uzp() { ; CHECK-LABEL: 'uzp' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzpv4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzpv8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzpv16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzpv4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzpv8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp1v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp2v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzpv16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp1v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %uzp2v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzpv4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp1v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp2v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzpv8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzp1v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzp2v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzpv16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp1v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %uzp2v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzpv4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzp1v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %uzp2v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzpv8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzp1v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %uzp2v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %uzpv16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %uzp1v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %uzp2v4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <4 x i32> %uzpv4i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <8 x i32> %uzp1v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %uzp2v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %uzpv8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <16 x i32> %uzp1v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %uzp2v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %uzpv16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <32 x i32> %uzp1v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %uzp2v4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <4 x i32> %uzpv4i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <8 x i32> %uzp1v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %uzp2v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %uzpv8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <16 x i32> %uzp1v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %uzp2v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %uzpv16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <32 x i32> %uzp1v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %uzp2v4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %uzpv4i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <8 x i32> %uzp1v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %uzp2v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %uzpv8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <16 x i32> %uzp1v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %uzp2v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %uzpv16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <32 x i32> %uzp1v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %uzp2v4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %uzpv4i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <8 x i32> %uzp1v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> %uzp2v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> %uzpv8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <16 x i32> %uzp1v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> %uzp2v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> %uzpv16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <32 x i32> ret void } define void @multipart() { ; CHECK-LABEL: 'multipart' ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16a = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v16b = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v16c = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v16d = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v32a = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v32a4 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %v32idrev = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %v32many = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %v32many2 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:6 Lat:12 SizeLat:12 for: %v323 = shufflevector <3 x i32> undef, <3 x i32> undef, <3 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v64a = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %v64b = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> zeroinitializer ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v64ab = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v64d = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %f64a = shufflevector <2 x double> undef, <2 x double> undef, <2 x i32> ; CHECK-NEXT: Cost Model: Found costs of 1 for: %f64b = shufflevector <2 x double> undef, <2 x double> undef, <2 x i32> zeroinitializer ; CHECK-NEXT: Cost Model: Found costs of 2 for: %f64ab = shufflevector <4 x double> undef, <4 x double> undef, <4 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v16a = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v16b = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v16c = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v16d = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v32a = shufflevector <4 x i32> undef, <4 x i32> undef, <4 x i32> %v32a4 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v32idrev = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v32many = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v32many2 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v323 = shufflevector <3 x i32> undef, <3 x i32> undef, <3 x i32> %v64a = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> %v64b = shufflevector <2 x i64> undef, <2 x i64> undef, <2 x i32> %v64ab = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %v64d = shufflevector <4 x i64> undef, <4 x i64> undef, <4 x i32> %f64a = shufflevector <2 x double> undef, <2 x double> undef, <2 x i32> %f64b = shufflevector <2 x double> undef, <2 x double> undef, <2 x i32> %f64ab = shufflevector <4 x double> undef, <4 x double> undef, <4 x i32> ret void } define void @vst3(ptr %p) { ; CHECK-LABEL: 'vst3' ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v8i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <6 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v16i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <12 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:128 CodeSize:64 Lat:128 SizeLat:128 for: %v32i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <24 x i32> ; CHECK-NEXT: Cost Model: Found costs of 48 for: %v64i8 = shufflevector <32 x i8> undef, <32 x i8> undef, <48 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v8i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <6 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %v16i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <12 x i32> ; CHECK-NEXT: Cost Model: Found costs of 24 for: %v32i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <24 x i32> ; CHECK-NEXT: Cost Model: Found costs of 48 for: %v64i16 = shufflevector <32 x i16> undef, <32 x i16> undef, <48 x i32> ; CHECK-NEXT: Cost Model: Found costs of 5 for: %v8i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <6 x i32> ; CHECK-NEXT: Cost Model: Found costs of 12 for: %v16i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <12 x i32> ; CHECK-NEXT: Cost Model: Found costs of 24 for: %v32i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <24 x i32> ; CHECK-NEXT: Cost Model: Found costs of 48 for: %v64i32 = shufflevector <32 x i32> undef, <32 x i32> undef, <48 x i32> ; CHECK-NEXT: Cost Model: Found costs of 3 for: %v8i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <6 x i32> ; CHECK-NEXT: Cost Model: Found costs of 6 for: %v16i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <12 x i32> ; CHECK-NEXT: Cost Model: Found costs of 12 for: %v32i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <24 x i32> ; CHECK-NEXT: Cost Model: Found costs of 24 for: %v64i64 = shufflevector <32 x i64> undef, <32 x i64> undef, <48 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v8i8 = shufflevector <4 x i8> undef, <4 x i8> undef, <6 x i32> %v16i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <12 x i32> %v32i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <24 x i32> %v64i8 = shufflevector <32 x i8> undef, <32 x i8> undef, <48 x i32> %v8i16 = shufflevector <4 x i16> undef, <4 x i16> undef, <6 x i32> %v16i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <12 x i32> %v32i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <24 x i32> %v64i16 = shufflevector <32 x i16> undef, <32 x i16> undef, <48 x i32> %v8i32 = shufflevector <4 x i32> undef, <4 x i32> undef, <6 x i32> %v16i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <12 x i32> %v32i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <24 x i32> %v64i32 = shufflevector <32 x i32> undef, <32 x i32> undef, <48 x i32> %v8i64 = shufflevector <4 x i64> undef, <4 x i64> undef, <6 x i32> %v16i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <12 x i32> %v32i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <24 x i32> %v64i64 = shufflevector <32 x i64> undef, <32 x i64> undef, <48 x i32> ret void } define void @vst4(ptr %p) { ; CHECK-LABEL: 'vst4' ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:128 CodeSize:64 Lat:128 SizeLat:128 for: %v32i8 = shufflevector <32 x i8> undef, <32 x i8> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 64 for: %v64i8 = shufflevector <64 x i8> undef, <64 x i8> undef, <64 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:64 CodeSize:32 Lat:64 SizeLat:64 for: %v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 32 for: %v32i16 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 64 for: %v64i16 = shufflevector <64 x i16> undef, <64 x i16> undef, <64 x i32> ; CHECK-NEXT: Cost Model: Found costs of 2 for: %v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 32 for: %v32i32 = shufflevector <32 x i32> undef, <32 x i32> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 64 for: %v64i32 = shufflevector <64 x i32> undef, <64 x i32> undef, <64 x i32> ; CHECK-NEXT: Cost Model: Found costs of 4 for: %v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> ; CHECK-NEXT: Cost Model: Found costs of 8 for: %v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> ; CHECK-NEXT: Cost Model: Found costs of 16 for: %v32i64 = shufflevector <32 x i64> undef, <32 x i64> undef, <32 x i32> ; CHECK-NEXT: Cost Model: Found costs of 32 for: %v64i64 = shufflevector <64 x i64> undef, <64 x i64> undef, <64 x i32> ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void ; %v8i8 = shufflevector <8 x i8> undef, <8 x i8> undef, <8 x i32> %v16i8 = shufflevector <16 x i8> undef, <16 x i8> undef, <16 x i32> %v32i8 = shufflevector <32 x i8> undef, <32 x i8> undef, <32 x i32> %v64i8 = shufflevector <64 x i8> undef, <64 x i8> undef, <64 x i32> %v8i16 = shufflevector <8 x i16> undef, <8 x i16> undef, <8 x i32> %v16i16 = shufflevector <16 x i16> undef, <16 x i16> undef, <16 x i32> %v32i16 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> %v64i16 = shufflevector <64 x i16> undef, <64 x i16> undef, <64 x i32> %v8i32 = shufflevector <8 x i32> undef, <8 x i32> undef, <8 x i32> %v16i32 = shufflevector <16 x i32> undef, <16 x i32> undef, <16 x i32> %v32i32 = shufflevector <32 x i32> undef, <32 x i32> undef, <32 x i32> %v64i32 = shufflevector <64 x i32> undef, <64 x i32> undef, <64 x i32> %v8i64 = shufflevector <8 x i64> undef, <8 x i64> undef, <8 x i32> %v16i64 = shufflevector <16 x i64> undef, <16 x i64> undef, <16 x i32> %v32i64 = shufflevector <32 x i64> undef, <32 x i64> undef, <32 x i32> %v64i64 = shufflevector <64 x i64> undef, <64 x i64> undef, <64 x i32> ret void } define void @identity_shuffle_costs() #0 { bb: ; CHECK-LABEL: 'identity_shuffle_costs' ; CHECK: Cost Model: Found costs of 0 for: %shufflevector142 = shufflevector <16 x i8> zeroinitializer, <16 x i8> zeroinitializer, <16 x i32> ; CHECK: Cost Model: Found costs of 0 for: %shufflevector84 = shufflevector <16 x i8> zeroinitializer, <16 x i8> poison, <32 x i32> %shufflevector142 = shufflevector <16 x i8> zeroinitializer, <16 x i8> zeroinitializer, <16 x i32> %shufflevector84 = shufflevector <16 x i8> zeroinitializer, <16 x i8> poison, <32 x i32> ret void } attributes #0 = { "target-features"="+sve,+neon" }