1; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa %s | FileCheck -check-prefixes=GCN,CI %s 2; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=fiji %s | FileCheck -check-prefixes=GCN,GFX89 %s 3; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 %s | FileCheck -check-prefixes=GCN,GFX89 %s 4; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa %s | FileCheck -check-prefixes=GCN,CI %s 5; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=fiji %s | FileCheck -check-prefixes=GCN,GFX89 %s 6; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 %s | FileCheck -check-prefixes=GCN,GFX89 %s 7; END. 8 9; GCN-LABEL: 'extractelement_32' 10; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <2 x i32> 11; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <2 x float> 12; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <3 x i32> 13; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <4 x i32> 14; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <5 x i32> 15; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <8 x i32> 16; GCN-NEXT: estimated cost of 2 for {{.*}} extractelement <8 x i32> 17define amdgpu_kernel void @extractelement_32(i32 %arg) { 18 %v2i32_1 = extractelement <2 x i32> undef, i32 1 19 %v2f32_1 = extractelement <2 x float> undef, i32 1 20 %v3i32_1 = extractelement <3 x i32> undef, i32 1 21 %v4i32_1 = extractelement <4 x i32> undef, i32 1 22 %v5i32_1 = extractelement <5 x i32> undef, i32 1 23 %v8i32_1 = extractelement <8 x i32> undef, i32 1 24 %v8i32_a = extractelement <8 x i32> undef, i32 %arg 25 ret void 26} 27 28; GCN-LABEL: 'extractelement_64' 29; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <2 x i64> 30; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <3 x i64> 31; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <4 x i64> 32; GCN-NEXT: estimated cost of 0 for {{.*}} extractelement <8 x i64> 33define amdgpu_kernel void @extractelement_64() { 34 %v2i64_1 = extractelement <2 x i64> undef, i64 1 35 %v3i64_1 = extractelement <3 x i64> undef, i64 1 36 %v4i64_1 = extractelement <4 x i64> undef, i64 1 37 %v8i64_1 = extractelement <8 x i64> undef, i64 1 38 ret void 39} 40 41; GCN-LABEL: 'extractelement_8' 42; GCN-NEXT: estimated cost of 1 for {{.*}} extractelement <4 x i8> 43define amdgpu_kernel void @extractelement_8() { 44 %v4i8_1 = extractelement <4 x i8> undef, i8 1 45 ret void 46} 47 48; GCN-LABEL: 'extractelement_16' 49; CI-NEXT: estimated cost of 1 for {{.*}} extractelement <2 x i16> undef, i16 0 50; GFX89-NEXT: estimated cost of 0 for {{.*}} extractelement <2 x i16> 51; GCN-NEXT: estimated cost of 1 for {{.*}} extractelement <2 x i16> 52; GCN-NEXT: estimated cost of 1 for {{.*}} extractelement <2 x i16> 53define amdgpu_kernel void @extractelement_16(i32 %arg) { 54 %v2i16_0 = extractelement <2 x i16> undef, i16 0 55 %v2i16_1 = extractelement <2 x i16> undef, i16 1 56 %v2i16_a = extractelement <2 x i16> undef, i32 %arg 57 ret void 58} 59