287 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+sse2 | FileCheck %s --check-prefixes=SSE3; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE4; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE5; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX16; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX27; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F8; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX512,AVX512BW9; RUN: opt < %s -passes="print<cost-model>" -mtriple=x86_64-apple-darwin 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512dq | FileCheck %s --check-prefixes=AVX512,AVX512DQ10 11define i32 @reduce_i64(i32 %arg) {12; SSE-LABEL: 'reduce_i64'13; SSE-NEXT: Cost Model: Found costs of 0 for: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)14; SSE-NEXT: Cost Model: Found costs of 3 for: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)15; SSE-NEXT: Cost Model: Found costs of 4 for: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)16; SSE-NEXT: Cost Model: Found costs of 6 for: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef)17; SSE-NEXT: Cost Model: Found costs of 10 for: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef)18; SSE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef19;20; AVX-LABEL: 'reduce_i64'21; AVX-NEXT: Cost Model: Found costs of 0 for: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)22; AVX-NEXT: Cost Model: Found costs of 3 for: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)23; AVX-NEXT: Cost Model: Found costs of 5 for: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)24; AVX-NEXT: Cost Model: Found costs of RThru:6 CodeSize:6 Lat:6 SizeLat:7 for: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef)25; AVX-NEXT: Cost Model: Found costs of RThru:8 CodeSize:8 Lat:8 SizeLat:11 for: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef)26; AVX-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef27;28; AVX512-LABEL: 'reduce_i64'29; AVX512-NEXT: Cost Model: Found costs of 0 for: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)30; AVX512-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:5 SizeLat:3 for: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)31; AVX512-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:7 SizeLat:5 for: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)32; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:9 SizeLat:7 for: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef)33; AVX512-NEXT: Cost Model: Found costs of RThru:8 CodeSize:8 Lat:10 SizeLat:8 for: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef)34; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef35;36 %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)37 %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)38 %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)39 %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef)40 %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef)41 ret i32 undef42}43 44define i32 @reduce_i32(i32 %arg) {45; SSE-LABEL: 'reduce_i32'46; SSE-NEXT: Cost Model: Found costs of 3 for: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)47; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)48; SSE-NEXT: Cost Model: Found costs of 6 for: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)49; SSE-NEXT: Cost Model: Found costs of 8 for: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef)50; SSE-NEXT: Cost Model: Found costs of 12 for: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef)51; SSE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef52;53; AVX-LABEL: 'reduce_i32'54; AVX-NEXT: Cost Model: Found costs of 3 for: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)55; AVX-NEXT: Cost Model: Found costs of 5 for: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)56; AVX-NEXT: Cost Model: Found costs of 7 for: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)57; AVX-NEXT: Cost Model: Found costs of RThru:8 CodeSize:8 Lat:8 SizeLat:9 for: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef)58; AVX-NEXT: Cost Model: Found costs of RThru:10 CodeSize:10 Lat:10 SizeLat:13 for: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef)59; AVX-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef60;61; AVX512-LABEL: 'reduce_i32'62; AVX512-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:5 SizeLat:3 for: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)63; AVX512-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:9 SizeLat:5 for: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)64; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:11 SizeLat:7 for: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)65; AVX512-NEXT: Cost Model: Found costs of RThru:9 CodeSize:9 Lat:13 SizeLat:9 for: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef)66; AVX512-NEXT: Cost Model: Found costs of RThru:10 CodeSize:10 Lat:14 SizeLat:10 for: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef)67; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef68;69 %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)70 %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)71 %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)72 %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef)73 %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef)74 ret i32 undef75}76 77define i32 @reduce_i16(i32 %arg) {78; SSE-LABEL: 'reduce_i16'79; SSE-NEXT: Cost Model: Found costs of 3 for: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)80; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)81; SSE-NEXT: Cost Model: Found costs of 7 for: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)82; SSE-NEXT: Cost Model: Found costs of 8 for: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)83; SSE-NEXT: Cost Model: Found costs of 10 for: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef)84; SSE-NEXT: Cost Model: Found costs of 14 for: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef)85; SSE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef86;87; AVX1-LABEL: 'reduce_i16'88; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:3 for: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)89; AVX1-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:6 SizeLat:5 for: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)90; AVX1-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:8 SizeLat:7 for: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)91; AVX1-NEXT: Cost Model: Found costs of RThru:9 CodeSize:9 Lat:10 SizeLat:9 for: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)92; AVX1-NEXT: Cost Model: Found costs of RThru:10 CodeSize:10 Lat:11 SizeLat:11 for: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef)93; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:13 SizeLat:15 for: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef)94; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef95;96; AVX2-LABEL: 'reduce_i16'97; AVX2-NEXT: Cost Model: Found costs of 3 for: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)98; AVX2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)99; AVX2-NEXT: Cost Model: Found costs of 7 for: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)100; AVX2-NEXT: Cost Model: Found costs of 9 for: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)101; AVX2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:10 Lat:10 SizeLat:11 for: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef)102; AVX2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:12 SizeLat:15 for: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef)103; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef104;105; AVX512-LABEL: 'reduce_i16'106; AVX512-NEXT: Cost Model: Found costs of 3 for: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)107; AVX512-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:7 SizeLat:5 for: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)108; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:11 SizeLat:7 for: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)109; AVX512-NEXT: Cost Model: Found costs of RThru:9 CodeSize:9 Lat:13 SizeLat:9 for: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)110; AVX512-NEXT: Cost Model: Found costs of RThru:11 CodeSize:11 Lat:15 SizeLat:11 for: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef)111; AVX512-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:16 SizeLat:12 for: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef)112; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef113;114 %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)115 %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)116 %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)117 %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)118 %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef)119 %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef)120 ret i32 undef121}122 123define i32 @reduce_i8(i32 %arg) {124; SSE-LABEL: 'reduce_i8'125; SSE-NEXT: Cost Model: Found costs of 3 for: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)126; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)127; SSE-NEXT: Cost Model: Found costs of 7 for: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)128; SSE-NEXT: Cost Model: Found costs of 9 for: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)129; SSE-NEXT: Cost Model: Found costs of 10 for: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)130; SSE-NEXT: Cost Model: Found costs of 12 for: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef)131; SSE-NEXT: Cost Model: Found costs of 16 for: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef)132; SSE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef133;134; AVX1-LABEL: 'reduce_i8'135; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:3 for: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)136; AVX1-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:7 SizeLat:5 for: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)137; AVX1-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:9 SizeLat:7 for: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)138; AVX1-NEXT: Cost Model: Found costs of RThru:9 CodeSize:9 Lat:11 SizeLat:9 for: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)139; AVX1-NEXT: Cost Model: Found costs of RThru:11 CodeSize:11 Lat:13 SizeLat:11 for: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)140; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:14 SizeLat:13 for: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef)141; AVX1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:14 Lat:16 SizeLat:17 for: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef)142; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef143;144; AVX2-LABEL: 'reduce_i8'145; AVX2-NEXT: Cost Model: Found costs of 3 for: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)146; AVX2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)147; AVX2-NEXT: Cost Model: Found costs of 7 for: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)148; AVX2-NEXT: Cost Model: Found costs of 9 for: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)149; AVX2-NEXT: Cost Model: Found costs of 11 for: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)150; AVX2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:12 SizeLat:13 for: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef)151; AVX2-NEXT: Cost Model: Found costs of RThru:14 CodeSize:14 Lat:14 SizeLat:17 for: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef)152; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef153;154; AVX512-LABEL: 'reduce_i8'155; AVX512-NEXT: Cost Model: Found costs of 3 for: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)156; AVX512-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)157; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:9 SizeLat:7 for: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)158; AVX512-NEXT: Cost Model: Found costs of RThru:9 CodeSize:9 Lat:13 SizeLat:9 for: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)159; AVX512-NEXT: Cost Model: Found costs of RThru:11 CodeSize:11 Lat:15 SizeLat:11 for: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)160; AVX512-NEXT: Cost Model: Found costs of RThru:13 CodeSize:13 Lat:17 SizeLat:13 for: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef)161; AVX512-NEXT: Cost Model: Found costs of RThru:14 CodeSize:14 Lat:18 SizeLat:14 for: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef)162; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef163;164 %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)165 %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)166 %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)167 %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)168 %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)169 %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef)170 %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef)171 ret i32 undef172}173 174define i32 @reduce_i1(i32 %arg) {175; SSE-LABEL: 'reduce_i1'176; SSE-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)177; SSE-NEXT: Cost Model: Found costs of 2 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)178; SSE-NEXT: Cost Model: Found costs of 2 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)179; SSE-NEXT: Cost Model: Found costs of 2 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)180; SSE-NEXT: Cost Model: Found costs of 2 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)181; SSE-NEXT: Cost Model: Found costs of 3 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)182; SSE-NEXT: Cost Model: Found costs of 5 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)183; SSE-NEXT: Cost Model: Found costs of 9 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)184; SSE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef185;186; AVX1-LABEL: 'reduce_i1'187; AVX1-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)188; AVX1-NEXT: Cost Model: Found costs of 2 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)189; AVX1-NEXT: Cost Model: Found costs of 2 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)190; AVX1-NEXT: Cost Model: Found costs of 2 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)191; AVX1-NEXT: Cost Model: Found costs of 2 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)192; AVX1-NEXT: Cost Model: Found costs of 4 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)193; AVX1-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:5 SizeLat:6 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)194; AVX1-NEXT: Cost Model: Found costs of RThru:7 CodeSize:7 Lat:7 SizeLat:10 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)195; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef196;197; AVX2-LABEL: 'reduce_i1'198; AVX2-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)199; AVX2-NEXT: Cost Model: Found costs of 2 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)200; AVX2-NEXT: Cost Model: Found costs of 2 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)201; AVX2-NEXT: Cost Model: Found costs of 2 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)202; AVX2-NEXT: Cost Model: Found costs of 2 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)203; AVX2-NEXT: Cost Model: Found costs of 2 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)204; AVX2-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:3 SizeLat:4 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)205; AVX2-NEXT: Cost Model: Found costs of RThru:5 CodeSize:5 Lat:5 SizeLat:8 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)206; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef207;208; AVX512F-LABEL: 'reduce_i1'209; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)210; AVX512F-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)211; AVX512F-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)212; AVX512F-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)213; AVX512F-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)214; AVX512F-NEXT: Cost Model: Found costs of 10 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)215; AVX512F-NEXT: Cost Model: Found costs of 12 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)216; AVX512F-NEXT: Cost Model: Found costs of 16 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)217; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef218;219; AVX512BW-LABEL: 'reduce_i1'220; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)221; AVX512BW-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)222; AVX512BW-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)223; AVX512BW-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)224; AVX512BW-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)225; AVX512BW-NEXT: Cost Model: Found costs of 11 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)226; AVX512BW-NEXT: Cost Model: Found costs of 13 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)227; AVX512BW-NEXT: Cost Model: Found costs of 14 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)228; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef229;230; AVX512DQ-LABEL: 'reduce_i1'231; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)232; AVX512DQ-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)233; AVX512DQ-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)234; AVX512DQ-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)235; AVX512DQ-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)236; AVX512DQ-NEXT: Cost Model: Found costs of 10 for: %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)237; AVX512DQ-NEXT: Cost Model: Found costs of 12 for: %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)238; AVX512DQ-NEXT: Cost Model: Found costs of 16 for: %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)239; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef240;241 %V1 = call i1 @llvm.vector.reduce.or.v1i1(<1 x i1> undef)242 %V2 = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> undef)243 %V4 = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> undef)244 %V8 = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> undef)245 %V16 = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> undef)246 %V32 = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> undef)247 %V64 = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> undef)248 %V128 = call i1 @llvm.vector.reduce.or.v128i1(<128 x i1> undef)249 ret i32 undef250}251 252declare i64 @llvm.vector.reduce.or.v1i64(<1 x i64>)253declare i64 @llvm.vector.reduce.or.v2i64(<2 x i64>)254declare i64 @llvm.vector.reduce.or.v4i64(<4 x i64>)255declare i64 @llvm.vector.reduce.or.v8i64(<8 x i64>)256declare i64 @llvm.vector.reduce.or.v16i64(<16 x i64>)257 258declare i32 @llvm.vector.reduce.or.v2i32(<2 x i32>)259declare i32 @llvm.vector.reduce.or.v4i32(<4 x i32>)260declare i32 @llvm.vector.reduce.or.v8i32(<8 x i32>)261declare i32 @llvm.vector.reduce.or.v16i32(<16 x i32>)262declare i32 @llvm.vector.reduce.or.v32i32(<32 x i32>)263 264declare i16 @llvm.vector.reduce.or.v2i16(<2 x i16>)265declare i16 @llvm.vector.reduce.or.v4i16(<4 x i16>)266declare i16 @llvm.vector.reduce.or.v8i16(<8 x i16>)267declare i16 @llvm.vector.reduce.or.v16i16(<16 x i16>)268declare i16 @llvm.vector.reduce.or.v32i16(<32 x i16>)269declare i16 @llvm.vector.reduce.or.v64i16(<64 x i16>)270 271declare i8 @llvm.vector.reduce.or.v2i8(<2 x i8>)272declare i8 @llvm.vector.reduce.or.v4i8(<4 x i8>)273declare i8 @llvm.vector.reduce.or.v8i8(<8 x i8>)274declare i8 @llvm.vector.reduce.or.v16i8(<16 x i8>)275declare i8 @llvm.vector.reduce.or.v32i8(<32 x i8>)276declare i8 @llvm.vector.reduce.or.v64i8(<64 x i8>)277declare i8 @llvm.vector.reduce.or.v128i8(<128 x i8>)278 279declare i1 @llvm.vector.reduce.or.v1i1(<1 x i1>)280declare i1 @llvm.vector.reduce.or.v2i1(<2 x i1>)281declare i1 @llvm.vector.reduce.or.v4i1(<4 x i1>)282declare i1 @llvm.vector.reduce.or.v8i1(<8 x i1>)283declare i1 @llvm.vector.reduce.or.v16i1(<16 x i1>)284declare i1 @llvm.vector.reduce.or.v32i1(<32 x i1>)285declare i1 @llvm.vector.reduce.or.v64i1(<64 x i1>)286declare i1 @llvm.vector.reduce.or.v128i1(<128 x i1>)287