1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s -check-prefixes=SSE2 3; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+sse4.1 | FileCheck %s -check-prefixes=SSE4 4; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+avx | FileCheck %s -check-prefixes=AVX,AVX1 5; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s -check-prefixes=AVX,AVX2 6; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+avx512f,+avx512vl | FileCheck %s -check-prefixes=AVX512,AVX512F 7; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mattr=+avx512bw,+avx512vl | FileCheck %s -check-prefixes=AVX512,AVX512BW 8; 9; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mcpu=slm | FileCheck %s --check-prefixes=SLM 10; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mcpu=goldmont | FileCheck %s --check-prefixes=SSE4 11; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=size-latency -mtriple=x86_64-- -mcpu=btver2 | FileCheck %s --check-prefixes=AVX,AVX1 12 13; Verify the cost of vector select instructions. 14 15define i32 @test_select() { 16; SSE2-LABEL: 'test_select' 17; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 18; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 19; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 20; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 21; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 22; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 23; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 24; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 25; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 26; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 27; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 28; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 29; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 30; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 31; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 32; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 33; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 34; 35; SSE4-LABEL: 'test_select' 36; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 37; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 38; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 39; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 40; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 41; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 42; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 43; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 44; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 45; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 46; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 47; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 48; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 49; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 50; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 51; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 52; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 53; 54; AVX1-LABEL: 'test_select' 55; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 56; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 57; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 58; AVX1-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 59; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 60; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 61; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 62; AVX1-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 63; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 64; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 65; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 66; AVX1-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 67; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 68; AVX1-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 69; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 70; AVX1-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 71; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 72; 73; AVX2-LABEL: 'test_select' 74; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 75; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 76; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 77; AVX2-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 78; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 79; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 80; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 81; AVX2-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 82; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 83; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 84; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 85; AVX2-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 86; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 87; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 88; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 89; AVX2-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 90; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 91; 92; AVX512F-LABEL: 'test_select' 93; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 94; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 95; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 96; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 97; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 98; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 99; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 100; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 101; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 102; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 103; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 104; AVX512F-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 105; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 106; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 107; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 108; AVX512F-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 109; AVX512F-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 110; 111; AVX512BW-LABEL: 'test_select' 112; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 113; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 114; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 115; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 116; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 117; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 118; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 119; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 120; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 121; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 122; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 123; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 124; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 125; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 126; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 127; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 128; AVX512BW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 129; 130; SLM-LABEL: 'test_select' 131; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I64 = select i1 undef, i64 undef, i64 undef 132; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 133; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 134; SLM-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 135; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I32 = select i1 undef, i32 undef, i32 undef 136; SLM-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 137; SLM-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 138; SLM-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 139; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I16 = select i1 undef, i16 undef, i16 undef 140; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 141; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 142; SLM-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 143; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %I8 = select i1 undef, i8 undef, i8 undef 144; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 145; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 146; SLM-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 147; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 148; 149 %I64 = select i1 undef, i64 undef, i64 undef 150 %V2I64 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef 151 %V4I64 = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef 152 %V8I64 = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef 153 154 %I32 = select i1 undef, i32 undef, i32 undef 155 %V4I32 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef 156 %V8I32 = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef 157 %V16I32 = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef 158 159 %I16 = select i1 undef, i16 undef, i16 undef 160 %V8I16 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef 161 %V16I16 = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef 162 %V32I16 = select <32 x i1> undef, <32 x i16> undef, <32 x i16> undef 163 164 %I8 = select i1 undef, i8 undef, i8 undef 165 %V16I8 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef 166 %V32I8 = select <32 x i1> undef, <32 x i8> undef, <32 x i8> undef 167 %V64I8 = select <64 x i1> undef, <64 x i8> undef, <64 x i8> undef 168 169 ret i32 undef 170} 171 172define i32 @test_select_fp() { 173; SSE2-LABEL: 'test_select_fp' 174; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %F64 = select i1 undef, double undef, double undef 175; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 176; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 177; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 178; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %F32 = select i1 undef, float undef, float undef 179; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 180; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 181; SSE2-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 182; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 183; 184; SSE4-LABEL: 'test_select_fp' 185; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F64 = select i1 undef, double undef, double undef 186; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 187; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 188; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 189; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F32 = select i1 undef, float undef, float undef 190; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 191; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 192; SSE4-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 193; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 194; 195; AVX-LABEL: 'test_select_fp' 196; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F64 = select i1 undef, double undef, double undef 197; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 198; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 199; AVX-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 200; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F32 = select i1 undef, float undef, float undef 201; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 202; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 203; AVX-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 204; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 205; 206; AVX512-LABEL: 'test_select_fp' 207; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %F64 = select i1 undef, double undef, double undef 208; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 209; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 210; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 211; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %F32 = select i1 undef, float undef, float undef 212; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 213; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 214; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 215; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 216; 217; SLM-LABEL: 'test_select_fp' 218; SLM-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F64 = select i1 undef, double undef, double undef 219; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 220; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 221; SLM-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 222; SLM-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %F32 = select i1 undef, float undef, float undef 223; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 224; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 225; SLM-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 226; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef 227; 228 %F64 = select i1 undef, double undef, double undef 229 %V2F64 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef 230 %V4F64 = select <4 x i1> undef, <4 x double> undef, <4 x double> undef 231 %V8F64 = select <8 x i1> undef, <8 x double> undef, <8 x double> undef 232 233 %F32 = select i1 undef, float undef, float undef 234 %V4F32 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef 235 %V8F32 = select <8 x i1> undef, <8 x float> undef, <8 x float> undef 236 %V16F32 = select <16 x i1> undef, <16 x float> undef, <16 x float> undef 237 238 ret i32 undef 239} 240 241; Immediate blend instructions for <2 x double> and <4 x float> added at SSE41. 242; Integers of the same size should also use those instructions. 243 244define <2 x i64> @test_2i64(<2 x i64> %a, <2 x i64> %b) { 245; SSE2-LABEL: 'test_2i64' 246; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 247; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %sel 248; 249; SSE4-LABEL: 'test_2i64' 250; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 251; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %sel 252; 253; AVX-LABEL: 'test_2i64' 254; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 255; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %sel 256; 257; AVX512-LABEL: 'test_2i64' 258; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 259; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %sel 260; 261; SLM-LABEL: 'test_2i64' 262; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 263; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x i64> %sel 264; 265 %sel = select <2 x i1> <i1 true, i1 false>, <2 x i64> %a, <2 x i64> %b 266 ret <2 x i64> %sel 267} 268 269define <2 x double> @test_2double(<2 x double> %a, <2 x double> %b) { 270; SSE2-LABEL: 'test_2double' 271; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 272; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x double> %sel 273; 274; SSE4-LABEL: 'test_2double' 275; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 276; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x double> %sel 277; 278; AVX-LABEL: 'test_2double' 279; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 280; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x double> %sel 281; 282; AVX512-LABEL: 'test_2double' 283; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 284; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x double> %sel 285; 286; SLM-LABEL: 'test_2double' 287; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 288; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <2 x double> %sel 289; 290 %sel = select <2 x i1> <i1 true, i1 false>, <2 x double> %a, <2 x double> %b 291 ret <2 x double> %sel 292} 293 294define <4 x i32> @test_4i32(<4 x i32> %a, <4 x i32> %b) { 295; SSE2-LABEL: 'test_4i32' 296; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 297; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %sel 298; 299; SSE4-LABEL: 'test_4i32' 300; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 301; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %sel 302; 303; AVX-LABEL: 'test_4i32' 304; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 305; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %sel 306; 307; AVX512-LABEL: 'test_4i32' 308; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 309; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %sel 310; 311; SLM-LABEL: 'test_4i32' 312; SLM-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 313; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i32> %sel 314; 315 %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x i32> %a, <4 x i32> %b 316 ret <4 x i32> %sel 317} 318 319define <4 x float> @test_4float(<4 x float> %a, <4 x float> %b) { 320; SSE2-LABEL: 'test_4float' 321; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 322; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x float> %sel 323; 324; SSE4-LABEL: 'test_4float' 325; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 326; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x float> %sel 327; 328; AVX-LABEL: 'test_4float' 329; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 330; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x float> %sel 331; 332; AVX512-LABEL: 'test_4float' 333; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 334; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x float> %sel 335; 336; SLM-LABEL: 'test_4float' 337; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 338; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x float> %sel 339; 340 %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x float> %a, <4 x float> %b 341 ret <4 x float> %sel 342} 343 344define <16 x i8> @test_16i8(<16 x i8> %a, <16 x i8> %b) { 345; SSE2-LABEL: 'test_16i8' 346; SSE2-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 347; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %sel 348; 349; SSE4-LABEL: 'test_16i8' 350; SSE4-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 351; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %sel 352; 353; AVX-LABEL: 'test_16i8' 354; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 355; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %sel 356; 357; AVX512-LABEL: 'test_16i8' 358; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 359; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %sel 360; 361; SLM-LABEL: 'test_16i8' 362; SLM-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 363; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i8> %sel 364; 365 %sel = select <16 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <16 x i8> %a, <16 x i8> %b 366 ret <16 x i8> %sel 367} 368 369; Immediate blend instructions for <4 x double> and <8 x float> added at AVX. 370; Integers of the same size should also use those instructions. 371 372define <4 x i64> @test_4i64(<4 x i64> %a, <4 x i64> %b) { 373; SSE2-LABEL: 'test_4i64' 374; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 375; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %sel 376; 377; SSE4-LABEL: 'test_4i64' 378; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 379; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %sel 380; 381; AVX-LABEL: 'test_4i64' 382; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 383; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %sel 384; 385; AVX512-LABEL: 'test_4i64' 386; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 387; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %sel 388; 389; SLM-LABEL: 'test_4i64' 390; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 391; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x i64> %sel 392; 393 %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i64> %a, <4 x i64> %b 394 ret <4 x i64> %sel 395} 396 397define <4 x double> @test_4double(<4 x double> %a, <4 x double> %b) { 398; SSE2-LABEL: 'test_4double' 399; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 400; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x double> %sel 401; 402; SSE4-LABEL: 'test_4double' 403; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 404; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x double> %sel 405; 406; AVX-LABEL: 'test_4double' 407; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 408; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x double> %sel 409; 410; AVX512-LABEL: 'test_4double' 411; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 412; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x double> %sel 413; 414; SLM-LABEL: 'test_4double' 415; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 416; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <4 x double> %sel 417; 418 %sel = select <4 x i1> <i1 true, i1 false, i1 true, i1 false>, <4 x double> %a, <4 x double> %b 419 ret <4 x double> %sel 420} 421 422define <8 x i32> @test_8i32(<8 x i32> %a, <8 x i32> %b) { 423; SSE2-LABEL: 'test_8i32' 424; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 425; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %sel 426; 427; SSE4-LABEL: 'test_8i32' 428; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 429; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %sel 430; 431; AVX-LABEL: 'test_8i32' 432; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 433; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %sel 434; 435; AVX512-LABEL: 'test_8i32' 436; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 437; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %sel 438; 439; SLM-LABEL: 'test_8i32' 440; SLM-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 441; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x i32> %sel 442; 443 %sel = select <8 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 false>, <8 x i32> %a, <8 x i32> %b 444 ret <8 x i32> %sel 445} 446 447define <8 x float> @test_8float(<8 x float> %a, <8 x float> %b) { 448; SSE2-LABEL: 'test_8float' 449; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 450; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x float> %sel 451; 452; SSE4-LABEL: 'test_8float' 453; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 454; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x float> %sel 455; 456; AVX-LABEL: 'test_8float' 457; AVX-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 458; AVX-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x float> %sel 459; 460; AVX512-LABEL: 'test_8float' 461; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 462; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x float> %sel 463; 464; SLM-LABEL: 'test_8float' 465; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 466; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <8 x float> %sel 467; 468 %sel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x float> %a, <8 x float> %b 469 ret <8 x float> %sel 470} 471 472define <16 x i16> @test_16i16(<16 x i16> %a, <16 x i16> %b) { 473; SSE2-LABEL: 'test_16i16' 474; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 475; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 476; 477; SSE4-LABEL: 'test_16i16' 478; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 479; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 480; 481; AVX1-LABEL: 'test_16i16' 482; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 483; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 484; 485; AVX2-LABEL: 'test_16i16' 486; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 487; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 488; 489; AVX512-LABEL: 'test_16i16' 490; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 491; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 492; 493; SLM-LABEL: 'test_16i16' 494; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 495; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <16 x i16> %sel 496; 497 %sel = select <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <16 x i16> %a, <16 x i16> %b 498 ret <16 x i16> %sel 499} 500 501define <32 x i8> @test_32i8(<32 x i8> %a, <32 x i8> %b) { 502; SSE2-LABEL: 'test_32i8' 503; SSE2-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 504; SSE2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 505; 506; SSE4-LABEL: 'test_32i8' 507; SSE4-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 508; SSE4-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 509; 510; AVX1-LABEL: 'test_32i8' 511; AVX1-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 512; AVX1-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 513; 514; AVX2-LABEL: 'test_32i8' 515; AVX2-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 516; AVX2-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 517; 518; AVX512-LABEL: 'test_32i8' 519; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 520; AVX512-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 521; 522; SLM-LABEL: 'test_32i8' 523; SLM-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 524; SLM-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret <32 x i8> %sel 525; 526 %sel = select <32 x i1> <i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true>, <32 x i8> %a, <32 x i8> %b 527 ret <32 x i8> %sel 528} 529 530