brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.1 KiB · 1370beb Raw
346 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=riscv32 -mattr=+v -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s3; RUN: opt < %s -mtriple=riscv64 -mattr=+v -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s4; RUN: opt < %s -mtriple=riscv32 -mattr=+v -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE5; RUN: opt < %s -mtriple=riscv64 -mattr=+v -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE6 7define i32 @reduce_umin_i1(i32 %arg) {8; CHECK-LABEL: 'reduce_umin_i1'9; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i1 @llvm.vector.reduce.umax.v1i1(<1 x i1> undef)10; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i1 @llvm.vector.reduce.umax.v2i1(<2 x i1> undef)11; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i1 @llvm.vector.reduce.umax.v4i1(<4 x i1> undef)12; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i1 @llvm.vector.reduce.umax.v8i1(<8 x i1> undef)13; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i1 @llvm.vector.reduce.umax.v16i1(<16 x i1> undef)14; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i1 @llvm.vector.reduce.umax.v32i1(<32 x i1> undef)15; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i1 @llvm.vector.reduce.umax.v64i1(<64 x i1> undef)16; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i1 @llvm.vector.reduce.umax.v128i1(<128 x i1> undef)17; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef18;19; SIZE-LABEL: 'reduce_umin_i1'20; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i1 @llvm.vector.reduce.umax.v1i1(<1 x i1> undef)21; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i1 @llvm.vector.reduce.umax.v2i1(<2 x i1> undef)22; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i1 @llvm.vector.reduce.umax.v4i1(<4 x i1> undef)23; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i1 @llvm.vector.reduce.umax.v8i1(<8 x i1> undef)24; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i1 @llvm.vector.reduce.umax.v16i1(<16 x i1> undef)25; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i1 @llvm.vector.reduce.umax.v32i1(<32 x i1> undef)26; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i1 @llvm.vector.reduce.umax.v64i1(<64 x i1> undef)27; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i1 @llvm.vector.reduce.umax.v128i1(<128 x i1> undef)28; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef29;30  %V1   = call i1 @llvm.vector.reduce.umax.v1i1(<1 x i1> undef)31  %V2   = call i1 @llvm.vector.reduce.umax.v2i1(<2 x i1> undef)32  %V4   = call i1 @llvm.vector.reduce.umax.v4i1(<4 x i1> undef)33  %V8   = call i1 @llvm.vector.reduce.umax.v8i1(<8 x i1> undef)34  %V16  = call i1 @llvm.vector.reduce.umax.v16i1(<16 x i1> undef)35  %V32  = call i1 @llvm.vector.reduce.umax.v32i1(<32 x i1> undef)36  %V64  = call i1 @llvm.vector.reduce.umax.v64i1(<64 x i1> undef)37  %V128 = call i1 @llvm.vector.reduce.umax.v128i1(<128 x i1> undef)38  ret i32 undef39}40 41define i32 @reduce_umax_i8(i32 %arg) {42; CHECK-LABEL: 'reduce_umax_i8'43; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef)44; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef)45; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef)46; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef)47; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef)48; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef)49; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef)50; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef)51; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef52;53; SIZE-LABEL: 'reduce_umax_i8'54; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef)55; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef)56; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef)57; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef)58; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef)59; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef)60; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef)61; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef)62; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef63;64  %V1   = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef)65  %V2   = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef)66  %V4   = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef)67  %V8   = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef)68  %V16  = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef)69  %V32  = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef)70  %V64  = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef)71  %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef)72  ret i32 undef73}74 75define i32 @reduce_umax_i16(i32 %arg) {76; CHECK-LABEL: 'reduce_umax_i16'77; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef)78; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef)79; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef)80; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef)81; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef)82; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef)83; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef)84; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef)85; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef86;87; SIZE-LABEL: 'reduce_umax_i16'88; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef)89; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef)90; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef)91; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef)92; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef)93; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef)94; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef)95; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef)96; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef97;98  %V1   = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef)99  %V2   = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef)100  %V4   = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef)101  %V8   = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef)102  %V16  = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef)103  %V32  = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef)104  %V64  = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef)105  %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef)106  ret i32 undef107}108 109define i32 @reduce_umax_i32(i32 %arg) {110; CHECK-LABEL: 'reduce_umax_i32'111; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef)112; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef)113; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef)114; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef)115; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef)116; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef)117; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef)118; CHECK-NEXT:  Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef)119; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef120;121; SIZE-LABEL: 'reduce_umax_i32'122; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef)123; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef)124; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef)125; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef)126; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef)127; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef)128; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef)129; SIZE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef)130; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef131;132  %V1   = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef)133  %V2   = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef)134  %V4   = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef)135  %V8   = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef)136  %V16  = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef)137  %V32  = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef)138  %V64  = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef)139  %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef)140  ret i32 undef141}142 143define i32 @reduce_umax_i64(i32 %arg) {144; CHECK-LABEL: 'reduce_umax_i64'145; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef)146; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef)147; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef)148; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef)149; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef)150; CHECK-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef)151; CHECK-NEXT:  Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef)152; CHECK-NEXT:  Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef)153; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef154;155; SIZE-LABEL: 'reduce_umax_i64'156; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef)157; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef)158; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef)159; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef)160; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef)161; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef)162; SIZE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef)163; SIZE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef)164; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef165;166  %V1   = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef)167  %V2   = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef)168  %V4   = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef)169  %V8   = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef)170  %V16  = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef)171  %V32  = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef)172  %V64  = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef)173  %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef)174  ret i32 undef175}176 177define i32 @reduce_smin_i1(i32 %arg) {178; CHECK-LABEL: 'reduce_smin_i1'179; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i1 @llvm.vector.reduce.smax.v1i1(<1 x i1> undef)180; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i1 @llvm.vector.reduce.smax.v2i1(<2 x i1> undef)181; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i1 @llvm.vector.reduce.smax.v4i1(<4 x i1> undef)182; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i1 @llvm.vector.reduce.smax.v8i1(<8 x i1> undef)183; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i1 @llvm.vector.reduce.smax.v16i1(<16 x i1> undef)184; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i1 @llvm.vector.reduce.smax.v32i1(<32 x i1> undef)185; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i1 @llvm.vector.reduce.smax.v64i1(<64 x i1> undef)186; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i1 @llvm.vector.reduce.smax.v128i1(<128 x i1> undef)187; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef188;189; SIZE-LABEL: 'reduce_smin_i1'190; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i1 @llvm.vector.reduce.smax.v1i1(<1 x i1> undef)191; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i1 @llvm.vector.reduce.smax.v2i1(<2 x i1> undef)192; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i1 @llvm.vector.reduce.smax.v4i1(<4 x i1> undef)193; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i1 @llvm.vector.reduce.smax.v8i1(<8 x i1> undef)194; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i1 @llvm.vector.reduce.smax.v16i1(<16 x i1> undef)195; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i1 @llvm.vector.reduce.smax.v32i1(<32 x i1> undef)196; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i1 @llvm.vector.reduce.smax.v64i1(<64 x i1> undef)197; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i1 @llvm.vector.reduce.smax.v128i1(<128 x i1> undef)198; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef199;200  %V1   = call i1 @llvm.vector.reduce.smax.v1i1(<1 x i1> undef)201  %V2   = call i1 @llvm.vector.reduce.smax.v2i1(<2 x i1> undef)202  %V4   = call i1 @llvm.vector.reduce.smax.v4i1(<4 x i1> undef)203  %V8   = call i1 @llvm.vector.reduce.smax.v8i1(<8 x i1> undef)204  %V16  = call i1 @llvm.vector.reduce.smax.v16i1(<16 x i1> undef)205  %V32  = call i1 @llvm.vector.reduce.smax.v32i1(<32 x i1> undef)206  %V64  = call i1 @llvm.vector.reduce.smax.v64i1(<64 x i1> undef)207  %V128 = call i1 @llvm.vector.reduce.smax.v128i1(<128 x i1> undef)208  ret i32 undef209}210 211define i32 @reduce_smax_i8(i32 %arg) {212; CHECK-LABEL: 'reduce_smax_i8'213; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef)214; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef)215; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef)216; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef)217; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef)218; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef)219; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef)220; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef)221; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef222;223; SIZE-LABEL: 'reduce_smax_i8'224; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef)225; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef)226; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef)227; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef)228; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef)229; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef)230; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef)231; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef)232; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef233;234  %V1   = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef)235  %V2   = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef)236  %V4   = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef)237  %V8   = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef)238  %V16  = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef)239  %V32  = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef)240  %V64  = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef)241  %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef)242  ret i32 undef243}244 245define i32 @reduce_smax_i16(i32 %arg) {246; CHECK-LABEL: 'reduce_smax_i16'247; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef)248; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef)249; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef)250; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef)251; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef)252; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef)253; CHECK-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef)254; CHECK-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef)255; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef256;257; SIZE-LABEL: 'reduce_smax_i16'258; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef)259; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef)260; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef)261; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef)262; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef)263; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef)264; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef)265; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef)266; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef267;268  %V1   = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef)269  %V2   = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef)270  %V4   = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef)271  %V8   = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef)272  %V16  = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef)273  %V32  = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef)274  %V64  = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef)275  %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef)276  ret i32 undef277}278 279define i32 @reduce_smax_i32(i32 %arg) {280; CHECK-LABEL: 'reduce_smax_i32'281; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef)282; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef)283; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef)284; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef)285; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef)286; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef)287; CHECK-NEXT:  Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef)288; CHECK-NEXT:  Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef)289; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef290;291; SIZE-LABEL: 'reduce_smax_i32'292; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef)293; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef)294; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef)295; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef)296; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef)297; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef)298; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef)299; SIZE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef)300; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef301;302  %V1   = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef)303  %V2   = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef)304  %V4   = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef)305  %V8   = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef)306  %V16  = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef)307  %V32  = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef)308  %V64  = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef)309  %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef)310  ret i32 undef311}312 313define i32 @reduce_smax_i64(i32 %arg) {314; CHECK-LABEL: 'reduce_smax_i64'315; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef)316; CHECK-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef)317; CHECK-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef)318; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef)319; CHECK-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef)320; CHECK-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef)321; CHECK-NEXT:  Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef)322; CHECK-NEXT:  Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef)323; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef324;325; SIZE-LABEL: 'reduce_smax_i64'326; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef)327; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef)328; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef)329; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef)330; SIZE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef)331; SIZE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef)332; SIZE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef)333; SIZE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef)334; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef335;336  %V1   = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef)337  %V2   = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef)338  %V4   = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef)339  %V8   = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef)340  %V16  = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef)341  %V32  = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef)342  %V64  = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef)343  %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef)344  ret i32 undef345}346