309 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=SSE,SSE23; 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=SSE,SSSE34; 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=SSE,SSE425; 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.xor.v1i64(<1 x i64> undef)14; SSE-NEXT: Cost Model: Found costs of 3 for: %V2 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)15; SSE-NEXT: Cost Model: Found costs of 4 for: %V4 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> undef)16; SSE-NEXT: Cost Model: Found costs of 6 for: %V8 = call i64 @llvm.vector.reduce.xor.v8i64(<8 x i64> undef)17; SSE-NEXT: Cost Model: Found costs of 10 for: %V16 = call i64 @llvm.vector.reduce.xor.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.xor.v1i64(<1 x i64> undef)22; AVX-NEXT: Cost Model: Found costs of 3 for: %V2 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)23; AVX-NEXT: Cost Model: Found costs of 5 for: %V4 = call i64 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v1i64(<1 x i64> undef)37 %V2 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)38 %V4 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> undef)39 %V8 = call i64 @llvm.vector.reduce.xor.v8i64(<8 x i64> undef)40 %V16 = call i64 @llvm.vector.reduce.xor.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.xor.v2i32(<2 x i32> undef)47; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)48; SSE-NEXT: Cost Model: Found costs of 6 for: %V8 = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)49; SSE-NEXT: Cost Model: Found costs of 8 for: %V16 = call i32 @llvm.vector.reduce.xor.v16i32(<16 x i32> undef)50; SSE-NEXT: Cost Model: Found costs of 12 for: %V32 = call i32 @llvm.vector.reduce.xor.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.xor.v2i32(<2 x i32> undef)55; AVX-NEXT: Cost Model: Found costs of 5 for: %V4 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)56; AVX-NEXT: Cost Model: Found costs of 7 for: %V8 = call i32 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v2i32(<2 x i32> undef)70 %V4 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)71 %V8 = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)72 %V16 = call i32 @llvm.vector.reduce.xor.v16i32(<16 x i32> undef)73 %V32 = call i32 @llvm.vector.reduce.xor.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.xor.v2i16(<2 x i16> undef)80; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)81; SSE-NEXT: Cost Model: Found costs of 7 for: %V8 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)82; SSE-NEXT: Cost Model: Found costs of 8 for: %V16 = call i16 @llvm.vector.reduce.xor.v16i16(<16 x i16> undef)83; SSE-NEXT: Cost Model: Found costs of 10 for: %V32 = call i16 @llvm.vector.reduce.xor.v32i16(<32 x i16> undef)84; SSE-NEXT: Cost Model: Found costs of 14 for: %V64 = call i16 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v2i16(<2 x i16> undef)98; AVX2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)99; AVX2-NEXT: Cost Model: Found costs of 7 for: %V8 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)100; AVX2-NEXT: Cost Model: Found costs of 9 for: %V16 = call i16 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v2i16(<2 x i16> undef)115 %V4 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)116 %V8 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)117 %V16 = call i16 @llvm.vector.reduce.xor.v16i16(<16 x i16> undef)118 %V32 = call i16 @llvm.vector.reduce.xor.v32i16(<32 x i16> undef)119 %V64 = call i16 @llvm.vector.reduce.xor.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.xor.v2i8(<2 x i8> undef)126; SSE-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)127; SSE-NEXT: Cost Model: Found costs of 7 for: %V8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)128; SSE-NEXT: Cost Model: Found costs of 9 for: %V16 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)129; SSE-NEXT: Cost Model: Found costs of 10 for: %V32 = call i8 @llvm.vector.reduce.xor.v32i8(<32 x i8> undef)130; SSE-NEXT: Cost Model: Found costs of 12 for: %V64 = call i8 @llvm.vector.reduce.xor.v64i8(<64 x i8> undef)131; SSE-NEXT: Cost Model: Found costs of 16 for: %V128 = call i8 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v2i8(<2 x i8> undef)146; AVX2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)147; AVX2-NEXT: Cost Model: Found costs of 7 for: %V8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)148; AVX2-NEXT: Cost Model: Found costs of 9 for: %V16 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)149; AVX2-NEXT: Cost Model: Found costs of 11 for: %V32 = call i8 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.v2i8(<2 x i8> undef)156; AVX512-NEXT: Cost Model: Found costs of 5 for: %V4 = call i8 @llvm.vector.reduce.xor.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.xor.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.xor.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.xor.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.xor.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.xor.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.xor.v2i8(<2 x i8> undef)165 %V4 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)166 %V8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)167 %V16 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)168 %V32 = call i8 @llvm.vector.reduce.xor.v32i8(<32 x i8> undef)169 %V64 = call i8 @llvm.vector.reduce.xor.v64i8(<64 x i8> undef)170 %V128 = call i8 @llvm.vector.reduce.xor.v128i8(<128 x i8> undef)171 ret i32 undef172}173 174define i32 @reduce_i1(i32 %arg) {175; SSE2-LABEL: 'reduce_i1'176; SSE2-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)177; SSE2-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)178; SSE2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)179; SSE2-NEXT: Cost Model: Found costs of RThru:13 CodeSize:19 Lat:19 SizeLat:19 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)180; SSE2-NEXT: Cost Model: Found costs of RThru:37 CodeSize:45 Lat:45 SizeLat:45 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)181; SSE2-NEXT: Cost Model: Found costs of RThru:38 CodeSize:46 Lat:46 SizeLat:46 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)182; SSE2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:48 Lat:48 SizeLat:48 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)183; SSE2-NEXT: Cost Model: Found costs of RThru:44 CodeSize:52 Lat:52 SizeLat:52 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)184; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef185;186; SSSE3-LABEL: 'reduce_i1'187; SSSE3-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)188; SSSE3-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)189; SSSE3-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)190; SSSE3-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)191; SSSE3-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)192; SSSE3-NEXT: Cost Model: Found costs of 10 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)193; SSSE3-NEXT: Cost Model: Found costs of 12 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)194; SSSE3-NEXT: Cost Model: Found costs of 16 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)195; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef196;197; SSE42-LABEL: 'reduce_i1'198; SSE42-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)199; SSE42-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)200; SSE42-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)201; SSE42-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)202; SSE42-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)203; SSE42-NEXT: Cost Model: Found costs of 10 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)204; SSE42-NEXT: Cost Model: Found costs of 12 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)205; SSE42-NEXT: Cost Model: Found costs of 16 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)206; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef207;208; AVX1-LABEL: 'reduce_i1'209; AVX1-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)210; AVX1-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)211; AVX1-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)212; AVX1-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)213; AVX1-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)214; AVX1-NEXT: Cost Model: Found costs of RThru:46 CodeSize:46 Lat:46 SizeLat:51 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)215; AVX1-NEXT: Cost Model: Found costs of RThru:47 CodeSize:47 Lat:47 SizeLat:53 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)216; AVX1-NEXT: Cost Model: Found costs of RThru:49 CodeSize:49 Lat:49 SizeLat:57 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)217; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef218;219; AVX2-LABEL: 'reduce_i1'220; AVX2-NEXT: Cost Model: Found costs of 0 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)221; AVX2-NEXT: Cost Model: Found costs of 3 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)222; AVX2-NEXT: Cost Model: Found costs of 5 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)223; AVX2-NEXT: Cost Model: Found costs of 7 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)224; AVX2-NEXT: Cost Model: Found costs of 9 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)225; AVX2-NEXT: Cost Model: Found costs of RThru:26 CodeSize:26 Lat:26 SizeLat:31 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)226; AVX2-NEXT: Cost Model: Found costs of RThru:27 CodeSize:27 Lat:27 SizeLat:33 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)227; AVX2-NEXT: Cost Model: Found costs of RThru:29 CodeSize:29 Lat:29 SizeLat:37 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)228; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef229;230; AVX512F-LABEL: 'reduce_i1'231; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)232; AVX512F-NEXT: Cost Model: Found costs of 6 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)233; AVX512F-NEXT: Cost Model: Found costs of 19 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)234; AVX512F-NEXT: Cost Model: Found costs of 52 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)235; AVX512F-NEXT: Cost Model: Found costs of 133 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)236; AVX512F-NEXT: Cost Model: Found costs of 134 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)237; AVX512F-NEXT: Cost Model: Found costs of RThru:136 CodeSize:136 Lat:135 SizeLat:135 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)238; AVX512F-NEXT: Cost Model: Found costs of RThru:140 CodeSize:140 Lat:136 SizeLat:136 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)239; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef240;241; AVX512BW-LABEL: 'reduce_i1'242; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)243; AVX512BW-NEXT: Cost Model: Found costs of 6 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)244; AVX512BW-NEXT: Cost Model: Found costs of 19 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)245; AVX512BW-NEXT: Cost Model: Found costs of 52 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)246; AVX512BW-NEXT: Cost Model: Found costs of 133 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)247; AVX512BW-NEXT: Cost Model: Found costs of 326 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)248; AVX512BW-NEXT: Cost Model: Found costs of 775 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)249; AVX512BW-NEXT: Cost Model: Found costs of 776 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)250; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef251;252; AVX512DQ-LABEL: 'reduce_i1'253; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)254; AVX512DQ-NEXT: Cost Model: Found costs of 6 for: %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)255; AVX512DQ-NEXT: Cost Model: Found costs of 19 for: %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)256; AVX512DQ-NEXT: Cost Model: Found costs of 52 for: %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)257; AVX512DQ-NEXT: Cost Model: Found costs of 133 for: %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)258; AVX512DQ-NEXT: Cost Model: Found costs of 134 for: %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)259; AVX512DQ-NEXT: Cost Model: Found costs of RThru:136 CodeSize:136 Lat:135 SizeLat:135 for: %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)260; AVX512DQ-NEXT: Cost Model: Found costs of RThru:140 CodeSize:140 Lat:136 SizeLat:136 for: %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)261; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef262;263 %V1 = call i1 @llvm.vector.reduce.xor.v1i1(<1 x i1> undef)264 %V2 = call i1 @llvm.vector.reduce.xor.v2i1(<2 x i1> undef)265 %V4 = call i1 @llvm.vector.reduce.xor.v4i1(<4 x i1> undef)266 %V8 = call i1 @llvm.vector.reduce.xor.v8i1(<8 x i1> undef)267 %V16 = call i1 @llvm.vector.reduce.xor.v16i1(<16 x i1> undef)268 %V32 = call i1 @llvm.vector.reduce.xor.v32i1(<32 x i1> undef)269 %V64 = call i1 @llvm.vector.reduce.xor.v64i1(<64 x i1> undef)270 %V128 = call i1 @llvm.vector.reduce.xor.v128i1(<128 x i1> undef)271 ret i32 undef272}273 274declare i64 @llvm.vector.reduce.xor.v1i64(<1 x i64>)275declare i64 @llvm.vector.reduce.xor.v2i64(<2 x i64>)276declare i64 @llvm.vector.reduce.xor.v4i64(<4 x i64>)277declare i64 @llvm.vector.reduce.xor.v8i64(<8 x i64>)278declare i64 @llvm.vector.reduce.xor.v16i64(<16 x i64>)279 280declare i32 @llvm.vector.reduce.xor.v2i32(<2 x i32>)281declare i32 @llvm.vector.reduce.xor.v4i32(<4 x i32>)282declare i32 @llvm.vector.reduce.xor.v8i32(<8 x i32>)283declare i32 @llvm.vector.reduce.xor.v16i32(<16 x i32>)284declare i32 @llvm.vector.reduce.xor.v32i32(<32 x i32>)285 286declare i16 @llvm.vector.reduce.xor.v2i16(<2 x i16>)287declare i16 @llvm.vector.reduce.xor.v4i16(<4 x i16>)288declare i16 @llvm.vector.reduce.xor.v8i16(<8 x i16>)289declare i16 @llvm.vector.reduce.xor.v16i16(<16 x i16>)290declare i16 @llvm.vector.reduce.xor.v32i16(<32 x i16>)291declare i16 @llvm.vector.reduce.xor.v64i16(<64 x i16>)292 293declare i8 @llvm.vector.reduce.xor.v2i8(<2 x i8>)294declare i8 @llvm.vector.reduce.xor.v4i8(<4 x i8>)295declare i8 @llvm.vector.reduce.xor.v8i8(<8 x i8>)296declare i8 @llvm.vector.reduce.xor.v16i8(<16 x i8>)297declare i8 @llvm.vector.reduce.xor.v32i8(<32 x i8>)298declare i8 @llvm.vector.reduce.xor.v64i8(<64 x i8>)299declare i8 @llvm.vector.reduce.xor.v128i8(<128 x i8>)300 301declare i1 @llvm.vector.reduce.xor.v1i1(<1 x i1>)302declare i1 @llvm.vector.reduce.xor.v2i1(<2 x i1>)303declare i1 @llvm.vector.reduce.xor.v4i1(<4 x i1>)304declare i1 @llvm.vector.reduce.xor.v8i1(<8 x i1>)305declare i1 @llvm.vector.reduce.xor.v16i1(<16 x i1>)306declare i1 @llvm.vector.reduce.xor.v32i1(<32 x i1>)307declare i1 @llvm.vector.reduce.xor.v64i1(<64 x i1>)308declare i1 @llvm.vector.reduce.xor.v128i1(<128 x i1>)309