brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.0 KiB · 4488e6e Raw
282 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=aarch64--linux-gnu -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output | FileCheck %s3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"5 6define i8 @add.i8.v8i8(<8 x i8> %v) {7; CHECK-LABEL: 'add.i8.v8i8'8; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> %v)9; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r10;11  %r = call i8 @llvm.vector.reduce.add.v8i8(<8 x i8> %v)12  ret i8 %r13}14 15define i8 @add.i8.v16i8(<16 x i8> %v) {16; CHECK-LABEL: 'add.i8.v16i8'17; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %v)18; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r19;20  %r = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %v)21  ret i8 %r22}23 24define i16 @add.i16.v4i16(<4 x i16> %v) {25; CHECK-LABEL: 'add.i16.v4i16'26; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %v)27; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r28;29  %r = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %v)30  ret i16 %r31}32 33define i16 @add.i16.v8i16(<8 x i16> %v) {34; CHECK-LABEL: 'add.i16.v8i16'35; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %v)36; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r37;38  %r = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %v)39  ret i16 %r40}41 42define i32 @add.i32.v4i32(<4 x i32> %v) {43; CHECK-LABEL: 'add.i32.v4i32'44; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %v)45; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r46;47  %r = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %v)48  ret i32 %r49}50 51define i8 @umin.i8.v8i8(<8 x i8> %v) {52; CHECK-LABEL: 'umin.i8.v8i8'53; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> %v)54; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r55;56  %r = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> %v)57  ret i8 %r58}59 60define i8 @umin.i8.v16i8(<16 x i8> %v) {61; CHECK-LABEL: 'umin.i8.v16i8'62; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %v)63; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r64;65  %r = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %v)66  ret i8 %r67}68 69define i16 @umin.i16.v4i16(<4 x i16> %v) {70; CHECK-LABEL: 'umin.i16.v4i16'71; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> %v)72; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r73;74  %r = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> %v)75  ret i16 %r76}77 78define i16 @umin.i16.v8i16(<8 x i16> %v) {79; CHECK-LABEL: 'umin.i16.v8i16'80; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> %v)81; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r82;83  %r = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> %v)84  ret i16 %r85}86 87define i32 @umin.i32.v4i32(<4 x i32> %v) {88; CHECK-LABEL: 'umin.i32.v4i32'89; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %v)90; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r91;92  %r = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %v)93  ret i32 %r94}95 96define i8 @umax.i8.v8i8(<8 x i8> %v) {97; CHECK-LABEL: 'umax.i8.v8i8'98; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> %v)99; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r100;101  %r = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> %v)102  ret i8 %r103}104 105define i8 @umax.i8.v16i8(<16 x i8> %v) {106; CHECK-LABEL: 'umax.i8.v16i8'107; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %v)108; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r109;110  %r = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %v)111  ret i8 %r112}113 114define i16 @umax.i16.v4i16(<4 x i16> %v) {115; CHECK-LABEL: 'umax.i16.v4i16'116; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> %v)117; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r118;119  %r = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> %v)120  ret i16 %r121}122 123define i16 @umax.i16.v8i16(<8 x i16> %v) {124; CHECK-LABEL: 'umax.i16.v8i16'125; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> %v)126; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r127;128  %r = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> %v)129  ret i16 %r130}131 132define i32 @umax.i32.v4i32(<4 x i32> %v) {133; CHECK-LABEL: 'umax.i32.v4i32'134; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %v)135; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r136;137  %r = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %v)138  ret i32 %r139}140 141define i8 @smin.i8.v8i8(<8 x i8> %v) {142; CHECK-LABEL: 'smin.i8.v8i8'143; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> %v)144; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r145;146  %r = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> %v)147  ret i8 %r148}149 150define i8 @smin.i8.v16i8(<16 x i8> %v) {151; CHECK-LABEL: 'smin.i8.v16i8'152; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> %v)153; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r154;155  %r = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> %v)156  ret i8 %r157}158 159define i16 @smin.i16.v4i16(<4 x i16> %v) {160; CHECK-LABEL: 'smin.i16.v4i16'161; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> %v)162; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r163;164  %r = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> %v)165  ret i16 %r166}167 168define i16 @smin.i16.v8i16(<8 x i16> %v) {169; CHECK-LABEL: 'smin.i16.v8i16'170; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> %v)171; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r172;173  %r = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> %v)174  ret i16 %r175}176 177define i32 @smin.i32.v4i32(<4 x i32> %v) {178; CHECK-LABEL: 'smin.i32.v4i32'179; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %v)180; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r181;182  %r = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %v)183  ret i32 %r184}185 186define i8 @smax.i8.v8i8(<8 x i8> %v) {187; CHECK-LABEL: 'smax.i8.v8i8'188; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> %v)189; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r190;191  %r = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> %v)192  ret i8 %r193}194 195define i8 @smax.i8.v16i8(<16 x i8> %v) {196; CHECK-LABEL: 'smax.i8.v16i8'197; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> %v)198; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %r199;200  %r = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> %v)201  ret i8 %r202}203 204define i16 @smax.i16.v4i16(<4 x i16> %v) {205; CHECK-LABEL: 'smax.i16.v4i16'206; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> %v)207; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r208;209  %r = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> %v)210  ret i16 %r211}212 213define i16 @smax.i16.v8i16(<8 x i16> %v) {214; CHECK-LABEL: 'smax.i16.v8i16'215; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> %v)216; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %r217;218  %r = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> %v)219  ret i16 %r220}221 222define i32 @smax.i32.v4i32(<4 x i32> %v) {223; CHECK-LABEL: 'smax.i32.v4i32'224; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %v)225; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %r226;227  %r = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %v)228  ret i32 %r229}230 231define float @fmin.f32.v4f32(<4 x float> %v) {232; CHECK-LABEL: 'fmin.f32.v4f32'233; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call nnan float @llvm.vector.reduce.fmin.v4f32(<4 x float> %v)234; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r235;236  %r = call nnan float @llvm.vector.reduce.fmin.v4f32(<4 x float> %v)237  ret float %r238}239 240define float @fmax.f32.v4f32(<4 x float> %v) {241; CHECK-LABEL: 'fmax.f32.v4f32'242; CHECK-NEXT:  Cost Model: Found costs of 2 for: %r = call nnan float @llvm.vector.reduce.fmax.v4f32(<4 x float> %v)243; CHECK-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret float %r244;245  %r = call nnan float @llvm.vector.reduce.fmax.v4f32(<4 x float> %v)246  ret float %r247}248 249declare i8 @llvm.vector.reduce.add.v8i8(<8 x i8>)250declare i8 @llvm.vector.reduce.add.v16i8(<16 x i8>)251declare i16 @llvm.vector.reduce.add.v4i16(<4 x i16>)252declare i16 @llvm.vector.reduce.add.v8i16(<8 x i16>)253declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)254 255declare i8 @llvm.vector.reduce.umin.v8i8(<8 x i8>)256declare i8 @llvm.vector.reduce.umin.v16i8(<16 x i8>)257declare i16 @llvm.vector.reduce.umin.v4i16(<4 x i16>)258declare i16 @llvm.vector.reduce.umin.v8i16(<8 x i16>)259declare i32 @llvm.vector.reduce.umin.v4i32(<4 x i32>)260 261declare i8 @llvm.vector.reduce.umax.v8i8(<8 x i8>)262declare i8 @llvm.vector.reduce.umax.v16i8(<16 x i8>)263declare i16 @llvm.vector.reduce.umax.v4i16(<4 x i16>)264declare i16 @llvm.vector.reduce.umax.v8i16(<8 x i16>)265declare i32 @llvm.vector.reduce.umax.v4i32(<4 x i32>)266 267declare i8 @llvm.vector.reduce.smin.v8i8(<8 x i8>)268declare i8 @llvm.vector.reduce.smin.v16i8(<16 x i8>)269declare i16 @llvm.vector.reduce.smin.v4i16(<4 x i16>)270declare i16 @llvm.vector.reduce.smin.v8i16(<8 x i16>)271declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32>)272 273declare i8 @llvm.vector.reduce.smax.v8i8(<8 x i8>)274declare i8 @llvm.vector.reduce.smax.v16i8(<16 x i8>)275declare i16 @llvm.vector.reduce.smax.v4i16(<4 x i16>)276declare i16 @llvm.vector.reduce.smax.v8i16(<8 x i16>)277declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32>)278 279declare float @llvm.vector.reduce.fmin.v4f32(<4 x float>)280 281declare float @llvm.vector.reduce.fmax.v4f32(<4 x float>)282