1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa %s | FileCheck -check-prefixes=GCN,CI %s 3; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=fiji %s | FileCheck -check-prefixes=GCN,GFX89 %s 4; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 %s | FileCheck -check-prefixes=GCN,GFX89 %s 5; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa %s | FileCheck -check-prefixes=GCN-SIZE,CI-SIZE %s 6; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=fiji %s | FileCheck -check-prefixes=GCN-SIZE,GFX89-SIZE %s 7; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 %s | FileCheck -check-prefixes=GCN-SIZE,GFX89-SIZE %s 8; END. 9 10define amdgpu_kernel void @extractelement_32(i32 %arg) { 11; GCN-LABEL: 'extractelement_32' 12; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 13; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 14; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_0 = extractelement <3 x i32> undef, i32 0 15; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 16; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_0 = extractelement <5 x i32> undef, i32 0 17; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 18; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 19; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 20; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_1 = extractelement <3 x i32> undef, i32 1 21; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 22; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_1 = extractelement <5 x i32> undef, i32 1 23; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 24; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_2 = extractelement <3 x i32> undef, i32 2 25; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_2 = extractelement <4 x i32> undef, i32 2 26; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_2 = extractelement <5 x i32> undef, i32 2 27; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_2 = extractelement <8 x i32> undef, i32 2 28; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_3 = extractelement <4 x i32> undef, i32 3 29; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_3 = extractelement <5 x i32> undef, i32 3 30; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_3 = extractelement <8 x i32> undef, i32 3 31; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_a = extractelement <2 x i32> undef, i32 %arg 32; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_a = extractelement <4 x i32> undef, i32 %arg 33; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_a = extractelement <8 x i32> undef, i32 %arg 34; GCN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void 35; 36; GCN-SIZE-LABEL: 'extractelement_32' 37; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i32_0 = extractelement <2 x i32> undef, i32 0 38; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_0 = extractelement <2 x float> undef, i32 0 39; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_0 = extractelement <3 x i32> undef, i32 0 40; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_0 = extractelement <4 x i32> undef, i32 0 41; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_0 = extractelement <5 x i32> undef, i32 0 42; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_0 = extractelement <8 x i32> undef, i32 0 43; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i32_1 = extractelement <2 x i32> undef, i32 1 44; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_1 = extractelement <2 x float> undef, i32 1 45; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_1 = extractelement <3 x i32> undef, i32 1 46; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_1 = extractelement <4 x i32> undef, i32 1 47; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_1 = extractelement <5 x i32> undef, i32 1 48; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_1 = extractelement <8 x i32> undef, i32 1 49; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i32_2 = extractelement <3 x i32> undef, i32 2 50; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_2 = extractelement <4 x i32> undef, i32 2 51; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_2 = extractelement <5 x i32> undef, i32 2 52; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_2 = extractelement <8 x i32> undef, i32 2 53; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i32_3 = extractelement <4 x i32> undef, i32 3 54; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i32_3 = extractelement <5 x i32> undef, i32 3 55; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i32_3 = extractelement <8 x i32> undef, i32 3 56; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32_a = extractelement <2 x i32> undef, i32 %arg 57; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i32_a = extractelement <4 x i32> undef, i32 %arg 58; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i32_a = extractelement <8 x i32> undef, i32 %arg 59; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void 60; 61 %v2i32_0 = extractelement <2 x i32> undef, i32 0 62 %v2f32_0 = extractelement <2 x float> undef, i32 0 63 %v3i32_0 = extractelement <3 x i32> undef, i32 0 64 %v4i32_0 = extractelement <4 x i32> undef, i32 0 65 %v5i32_0 = extractelement <5 x i32> undef, i32 0 66 %v8i32_0 = extractelement <8 x i32> undef, i32 0 67 68 %v2i32_1 = extractelement <2 x i32> undef, i32 1 69 %v2f32_1 = extractelement <2 x float> undef, i32 1 70 %v3i32_1 = extractelement <3 x i32> undef, i32 1 71 %v4i32_1 = extractelement <4 x i32> undef, i32 1 72 %v5i32_1 = extractelement <5 x i32> undef, i32 1 73 %v8i32_1 = extractelement <8 x i32> undef, i32 1 74 75 %v3i32_2 = extractelement <3 x i32> undef, i32 2 76 %v4i32_2 = extractelement <4 x i32> undef, i32 2 77 %v5i32_2 = extractelement <5 x i32> undef, i32 2 78 %v8i32_2 = extractelement <8 x i32> undef, i32 2 79 80 %v4i32_3 = extractelement <4 x i32> undef, i32 3 81 %v5i32_3 = extractelement <5 x i32> undef, i32 3 82 %v8i32_3 = extractelement <8 x i32> undef, i32 3 83 84 %v2i32_a = extractelement <2 x i32> undef, i32 %arg 85 %v4i32_a = extractelement <4 x i32> undef, i32 %arg 86 %v8i32_a = extractelement <8 x i32> undef, i32 %arg 87 ret void 88} 89 90define amdgpu_kernel void @extractelement_64(i32 %arg) { 91; GCN-LABEL: 'extractelement_64' 92; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 93; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 94; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_0 = extractelement <3 x i64> undef, i32 0 95; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 96; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_0 = extractelement <5 x i64> undef, i32 0 97; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 98; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 99; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 100; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_1 = extractelement <3 x i64> undef, i32 1 101; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 102; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_1 = extractelement <5 x i64> undef, i32 1 103; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 104; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_2 = extractelement <3 x i64> undef, i32 2 105; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_2 = extractelement <4 x i64> undef, i32 2 106; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_2 = extractelement <5 x i64> undef, i32 2 107; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_2 = extractelement <8 x i64> undef, i32 2 108; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_3 = extractelement <4 x i64> undef, i32 3 109; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_3 = extractelement <5 x i64> undef, i32 3 110; GCN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_3 = extractelement <8 x i64> undef, i32 3 111; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_a = extractelement <2 x i64> undef, i32 %arg 112; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_a = extractelement <4 x i64> undef, i32 %arg 113; GCN-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_a = extractelement <8 x i64> undef, i32 %arg 114; GCN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void 115; 116; GCN-SIZE-LABEL: 'extractelement_64' 117; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i64_0 = extractelement <2 x i64> undef, i32 0 118; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_0 = extractelement <2 x double> undef, i32 0 119; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_0 = extractelement <3 x i64> undef, i32 0 120; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_0 = extractelement <4 x i64> undef, i32 0 121; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_0 = extractelement <5 x i64> undef, i32 0 122; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_0 = extractelement <8 x i64> undef, i32 0 123; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i64_1 = extractelement <2 x i64> undef, i32 1 124; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_1 = extractelement <2 x double> undef, i32 1 125; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_1 = extractelement <3 x i64> undef, i32 1 126; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_1 = extractelement <4 x i64> undef, i32 1 127; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_1 = extractelement <5 x i64> undef, i32 1 128; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_1 = extractelement <8 x i64> undef, i32 1 129; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i64_2 = extractelement <3 x i64> undef, i32 2 130; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_2 = extractelement <4 x i64> undef, i32 2 131; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_2 = extractelement <5 x i64> undef, i32 2 132; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_2 = extractelement <8 x i64> undef, i32 2 133; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i64_3 = extractelement <4 x i64> undef, i32 3 134; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i64_3 = extractelement <5 x i64> undef, i32 3 135; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i64_3 = extractelement <8 x i64> undef, i32 3 136; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i64_a = extractelement <2 x i64> undef, i32 %arg 137; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v4i64_a = extractelement <4 x i64> undef, i32 %arg 138; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v8i64_a = extractelement <8 x i64> undef, i32 %arg 139; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void 140; 141 %v2i64_0 = extractelement <2 x i64> undef, i32 0 142 %v2f64_0 = extractelement <2 x double> undef, i32 0 143 %v3i64_0 = extractelement <3 x i64> undef, i32 0 144 %v4i64_0 = extractelement <4 x i64> undef, i32 0 145 %v5i64_0 = extractelement <5 x i64> undef, i32 0 146 %v8i64_0 = extractelement <8 x i64> undef, i32 0 147 148 %v2i64_1 = extractelement <2 x i64> undef, i32 1 149 %v2f64_1 = extractelement <2 x double> undef, i32 1 150 %v3i64_1 = extractelement <3 x i64> undef, i32 1 151 %v4i64_1 = extractelement <4 x i64> undef, i32 1 152 %v5i64_1 = extractelement <5 x i64> undef, i32 1 153 %v8i64_1 = extractelement <8 x i64> undef, i32 1 154 155 %v3i64_2 = extractelement <3 x i64> undef, i32 2 156 %v4i64_2 = extractelement <4 x i64> undef, i32 2 157 %v5i64_2 = extractelement <5 x i64> undef, i32 2 158 %v8i64_2 = extractelement <8 x i64> undef, i32 2 159 160 %v4i64_3 = extractelement <4 x i64> undef, i32 3 161 %v5i64_3 = extractelement <5 x i64> undef, i32 3 162 %v8i64_3 = extractelement <8 x i64> undef, i32 3 163 164 %v2i64_a = extractelement <2 x i64> undef, i32 %arg 165 %v4i64_a = extractelement <4 x i64> undef, i32 %arg 166 %v8i64_a = extractelement <8 x i64> undef, i32 %arg 167 ret void 168} 169 170define amdgpu_kernel void @extractelement_8(i32 %arg) { 171; GCN-LABEL: 'extractelement_8' 172; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 173; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_0 = extractelement <3 x i8> undef, i32 0 174; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 175; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_0 = extractelement <5 x i8> undef, i32 0 176; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 177; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 178; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_1 = extractelement <3 x i8> undef, i32 1 179; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 180; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_1 = extractelement <5 x i8> undef, i32 1 181; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 182; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_2 = extractelement <3 x i8> undef, i32 2 183; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_2 = extractelement <4 x i8> undef, i32 2 184; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_2 = extractelement <5 x i8> undef, i32 2 185; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_2 = extractelement <8 x i8> undef, i32 2 186; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_3 = extractelement <4 x i8> undef, i32 3 187; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_3 = extractelement <5 x i8> undef, i32 3 188; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_3 = extractelement <8 x i8> undef, i32 3 189; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_a = extractelement <2 x i8> undef, i32 %arg 190; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_a = extractelement <4 x i8> undef, i32 %arg 191; GCN-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_a = extractelement <8 x i8> undef, i32 %arg 192; GCN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void 193; 194; GCN-SIZE-LABEL: 'extractelement_8' 195; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_0 = extractelement <2 x i8> undef, i32 0 196; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_0 = extractelement <3 x i8> undef, i32 0 197; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_0 = extractelement <4 x i8> undef, i32 0 198; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_0 = extractelement <5 x i8> undef, i32 0 199; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_0 = extractelement <8 x i8> undef, i32 0 200; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_1 = extractelement <2 x i8> undef, i32 1 201; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_1 = extractelement <3 x i8> undef, i32 1 202; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_1 = extractelement <4 x i8> undef, i32 1 203; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_1 = extractelement <5 x i8> undef, i32 1 204; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_1 = extractelement <8 x i8> undef, i32 1 205; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i8_2 = extractelement <3 x i8> undef, i32 2 206; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_2 = extractelement <4 x i8> undef, i32 2 207; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_2 = extractelement <5 x i8> undef, i32 2 208; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_2 = extractelement <8 x i8> undef, i32 2 209; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_3 = extractelement <4 x i8> undef, i32 3 210; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i8_3 = extractelement <5 x i8> undef, i32 3 211; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_3 = extractelement <8 x i8> undef, i32 3 212; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i8_a = extractelement <2 x i8> undef, i32 %arg 213; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i8_a = extractelement <4 x i8> undef, i32 %arg 214; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i8_a = extractelement <8 x i8> undef, i32 %arg 215; GCN-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void 216; 217 %v2i8_0 = extractelement <2 x i8> undef, i32 0 218 %v3i8_0 = extractelement <3 x i8> undef, i32 0 219 %v4i8_0 = extractelement <4 x i8> undef, i32 0 220 %v5i8_0 = extractelement <5 x i8> undef, i32 0 221 %v8i8_0 = extractelement <8 x i8> undef, i32 0 222 223 %v2i8_1 = extractelement <2 x i8> undef, i32 1 224 %v3i8_1 = extractelement <3 x i8> undef, i32 1 225 %v4i8_1 = extractelement <4 x i8> undef, i32 1 226 %v5i8_1 = extractelement <5 x i8> undef, i32 1 227 %v8i8_1 = extractelement <8 x i8> undef, i32 1 228 229 %v3i8_2 = extractelement <3 x i8> undef, i32 2 230 %v4i8_2 = extractelement <4 x i8> undef, i32 2 231 %v5i8_2 = extractelement <5 x i8> undef, i32 2 232 %v8i8_2 = extractelement <8 x i8> undef, i32 2 233 234 %v4i8_3 = extractelement <4 x i8> undef, i32 3 235 %v5i8_3 = extractelement <5 x i8> undef, i32 3 236 %v8i8_3 = extractelement <8 x i8> undef, i32 3 237 238 %v2i8_a = extractelement <2 x i8> undef, i32 %arg 239 %v4i8_a = extractelement <4 x i8> undef, i32 %arg 240 %v8i8_a = extractelement <8 x i8> undef, i32 %arg 241 ret void 242} 243 244define amdgpu_kernel void @extractelement_16(i32 %arg) { 245; CI-LABEL: 'extractelement_16' 246; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 247; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 248; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_0 = extractelement <3 x i16> undef, i32 0 249; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 250; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_0 = extractelement <5 x i16> undef, i32 0 251; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 252; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 253; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 254; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_1 = extractelement <3 x i16> undef, i32 1 255; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 256; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_1 = extractelement <5 x i16> undef, i32 1 257; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 258; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_2 = extractelement <3 x i16> undef, i32 2 259; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_2 = extractelement <4 x i16> undef, i32 2 260; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_2 = extractelement <5 x i16> undef, i32 2 261; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_2 = extractelement <8 x i16> undef, i32 2 262; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_3 = extractelement <4 x i16> undef, i32 3 263; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_3 = extractelement <5 x i16> undef, i32 3 264; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_3 = extractelement <8 x i16> undef, i32 3 265; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_a = extractelement <2 x i16> undef, i32 %arg 266; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_a = extractelement <4 x i16> undef, i32 %arg 267; CI-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_a = extractelement <8 x i16> undef, i32 %arg 268; CI-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void 269; 270; GFX89-LABEL: 'extractelement_16' 271; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 272; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 273; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i16_0 = extractelement <3 x i16> undef, i32 0 274; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 275; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i16_0 = extractelement <5 x i16> undef, i32 0 276; GFX89-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 277; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 278; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 279; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_1 = extractelement <3 x i16> undef, i32 1 280; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 281; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_1 = extractelement <5 x i16> undef, i32 1 282; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 283; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_2 = extractelement <3 x i16> undef, i32 2 284; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_2 = extractelement <4 x i16> undef, i32 2 285; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_2 = extractelement <5 x i16> undef, i32 2 286; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_2 = extractelement <8 x i16> undef, i32 2 287; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_3 = extractelement <4 x i16> undef, i32 3 288; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_3 = extractelement <5 x i16> undef, i32 3 289; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_3 = extractelement <8 x i16> undef, i32 3 290; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_a = extractelement <2 x i16> undef, i32 %arg 291; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_a = extractelement <4 x i16> undef, i32 %arg 292; GFX89-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_a = extractelement <8 x i16> undef, i32 %arg 293; GFX89-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void 294; 295; CI-SIZE-LABEL: 'extractelement_16' 296; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 297; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 298; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_0 = extractelement <3 x i16> undef, i32 0 299; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 300; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_0 = extractelement <5 x i16> undef, i32 0 301; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 302; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 303; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 304; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_1 = extractelement <3 x i16> undef, i32 1 305; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 306; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_1 = extractelement <5 x i16> undef, i32 1 307; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 308; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_2 = extractelement <3 x i16> undef, i32 2 309; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_2 = extractelement <4 x i16> undef, i32 2 310; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_2 = extractelement <5 x i16> undef, i32 2 311; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_2 = extractelement <8 x i16> undef, i32 2 312; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_3 = extractelement <4 x i16> undef, i32 3 313; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_3 = extractelement <5 x i16> undef, i32 3 314; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_3 = extractelement <8 x i16> undef, i32 3 315; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_a = extractelement <2 x i16> undef, i32 %arg 316; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_a = extractelement <4 x i16> undef, i32 %arg 317; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_a = extractelement <8 x i16> undef, i32 %arg 318; CI-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void 319; 320; GFX89-SIZE-LABEL: 'extractelement_16' 321; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i16_0 = extractelement <2 x i16> undef, i32 0 322; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_0 = extractelement <2 x half> undef, i32 0 323; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v3i16_0 = extractelement <3 x i16> undef, i32 0 324; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v4i16_0 = extractelement <4 x i16> undef, i32 0 325; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v5i16_0 = extractelement <5 x i16> undef, i32 0 326; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v8i16_0 = extractelement <8 x i16> undef, i32 0 327; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_1 = extractelement <2 x i16> undef, i32 1 328; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_1 = extractelement <2 x half> undef, i32 1 329; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_1 = extractelement <3 x i16> undef, i32 1 330; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_1 = extractelement <4 x i16> undef, i32 1 331; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_1 = extractelement <5 x i16> undef, i32 1 332; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_1 = extractelement <8 x i16> undef, i32 1 333; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v3i16_2 = extractelement <3 x i16> undef, i32 2 334; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_2 = extractelement <4 x i16> undef, i32 2 335; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_2 = extractelement <5 x i16> undef, i32 2 336; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_2 = extractelement <8 x i16> undef, i32 2 337; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_3 = extractelement <4 x i16> undef, i32 3 338; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v5i16_3 = extractelement <5 x i16> undef, i32 3 339; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_3 = extractelement <8 x i16> undef, i32 3 340; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16_a = extractelement <2 x i16> undef, i32 %arg 341; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v4i16_a = extractelement <4 x i16> undef, i32 %arg 342; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v8i16_a = extractelement <8 x i16> undef, i32 %arg 343; GFX89-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void 344; 345 %v2i16_0 = extractelement <2 x i16> undef, i32 0 346 %v2f16_0 = extractelement <2 x half> undef, i32 0 347 %v3i16_0 = extractelement <3 x i16> undef, i32 0 348 %v4i16_0 = extractelement <4 x i16> undef, i32 0 349 %v5i16_0 = extractelement <5 x i16> undef, i32 0 350 %v8i16_0 = extractelement <8 x i16> undef, i32 0 351 352 %v2i16_1 = extractelement <2 x i16> undef, i32 1 353 %v2f16_1 = extractelement <2 x half> undef, i32 1 354 %v3i16_1 = extractelement <3 x i16> undef, i32 1 355 %v4i16_1 = extractelement <4 x i16> undef, i32 1 356 %v5i16_1 = extractelement <5 x i16> undef, i32 1 357 %v8i16_1 = extractelement <8 x i16> undef, i32 1 358 359 %v3i16_2 = extractelement <3 x i16> undef, i32 2 360 %v4i16_2 = extractelement <4 x i16> undef, i32 2 361 %v5i16_2 = extractelement <5 x i16> undef, i32 2 362 %v8i16_2 = extractelement <8 x i16> undef, i32 2 363 364 %v4i16_3 = extractelement <4 x i16> undef, i32 3 365 %v5i16_3 = extractelement <5 x i16> undef, i32 3 366 %v8i16_3 = extractelement <8 x i16> undef, i32 3 367 368 %v2i16_a = extractelement <2 x i16> undef, i32 %arg 369 %v4i16_a = extractelement <4 x i16> undef, i32 %arg 370 %v8i16_a = extractelement <8 x i16> undef, i32 %arg 371 ret void 372} 373