480 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse2 | FileCheck %s -check-prefixes=SSE23,SSE23; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+ssse3 | FileCheck %s -check-prefixes=SSE23,SSSE34; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse4.2 | FileCheck %s -check-prefixes=SSE45; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx | FileCheck %s -check-prefixes=AVX16; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx2 | FileCheck %s -check-prefixes=AVX27; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f | FileCheck %s -check-prefixes=AVX512,AVX512F8; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512vl,+avx512dq | FileCheck %s -check-prefixes=AVX512,AVX512DQ9; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512vl,+avx512bw | FileCheck %s -check-prefixes=AVX512,AVX512BW10 11;12; abs(X, not_posion)13;14 15define void @cost_abs_i64(i64 %a64, <2 x i64> %a128, <4 x i64> %a256, <8 x i64> %a512) {16; SSE23-LABEL: 'cost_abs_i64'17; SSE23-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 false)18; SSE23-NEXT: Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 false)19; SSE23-NEXT: Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:10 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 false)20; SSE23-NEXT: Cost Model: Found costs of RThru:12 CodeSize:20 Lat:24 SizeLat:20 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 false)21; SSE23-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void22;23; SSE4-LABEL: 'cost_abs_i64'24; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 false)25; SSE4-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 false)26; SSE4-NEXT: Cost Model: Found costs of RThru:6 CodeSize:6 Lat:8 SizeLat:10 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 false)27; SSE4-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:16 SizeLat:20 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 false)28; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void29;30; AVX1-LABEL: 'cost_abs_i64'31; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 false)32; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 false)33; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:6 Lat:8 SizeLat:12 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 false)34; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:16 SizeLat:24 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 false)35; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void36;37; AVX2-LABEL: 'cost_abs_i64'38; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 false)39; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 false)40; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:4 SizeLat:5 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 false)41; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:6 Lat:8 SizeLat:10 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 false)42; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void43;44; AVX512-LABEL: 'cost_abs_i64'45; AVX512-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 false)46; AVX512-NEXT: Cost Model: Found costs of 1 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 false)47; AVX512-NEXT: Cost Model: Found costs of 1 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 false)48; AVX512-NEXT: Cost Model: Found costs of 1 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 false)49; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void50;51 %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 0)52 %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 0)53 %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 0)54 %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 0)55 ret void56}57 58define void @cost_abs_i32(i32 %a32, <4 x i32> %a128, <8 x i32> %a256, <16 x i32> %a512) {59; SSE2-LABEL: 'cost_abs_i32'60; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)61; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:4 Lat:4 SizeLat:4 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)62; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:8 Lat:8 SizeLat:8 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)63; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:16 Lat:16 SizeLat:16 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)64; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void65;66; SSSE3-LABEL: 'cost_abs_i32'67; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)68; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)69; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)70; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)71; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void72;73; SSE4-LABEL: 'cost_abs_i32'74; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)75; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)76; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)77; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)78; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void79;80; AVX1-LABEL: 'cost_abs_i32'81; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)82; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)83; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)84; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)85; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void86;87; AVX2-LABEL: 'cost_abs_i32'88; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)89; AVX2-NEXT: Cost Model: Found costs of 1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)90; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)91; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)92; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void93;94; AVX512-LABEL: 'cost_abs_i32'95; AVX512-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 false)96; AVX512-NEXT: Cost Model: Found costs of 1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 false)97; AVX512-NEXT: Cost Model: Found costs of 1 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 false)98; AVX512-NEXT: Cost Model: Found costs of 1 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 false)99; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void100;101 %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 0)102 %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 0)103 %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 0)104 %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 0)105 ret void106}107 108define void @cost_abs_i16(i16 %a16, <8 x i16> %a128, <16 x i16> %a256, <32 x i16> %a512) {109; SSE2-LABEL: 'cost_abs_i16'110; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)111; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)112; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:6 Lat:4 SizeLat:6 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)113; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:12 Lat:8 SizeLat:12 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)114; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void115;116; SSSE3-LABEL: 'cost_abs_i16'117; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)118; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)119; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)120; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)121; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void122;123; SSE4-LABEL: 'cost_abs_i16'124; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)125; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)126; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)127; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)128; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void129;130; AVX1-LABEL: 'cost_abs_i16'131; AVX1-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)132; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)133; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)134; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)135; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void136;137; AVX2-LABEL: 'cost_abs_i16'138; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)139; AVX2-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)140; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)141; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)142; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void143;144; AVX512F-LABEL: 'cost_abs_i16'145; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)146; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)147; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)148; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)149; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void150;151; AVX512DQ-LABEL: 'cost_abs_i16'152; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)153; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)154; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)155; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)156; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void157;158; AVX512BW-LABEL: 'cost_abs_i16'159; AVX512BW-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 false)160; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 false)161; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 false)162; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 false)163; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void164;165 %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 0)166 %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 0)167 %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 0)168 %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 0)169 ret void170}171 172define void @cost_abs_i8(i8 %a8, <16 x i8> %a128, <32 x i8> %a256, <64 x i8> %a512) {173; SSE2-LABEL: 'cost_abs_i8'174; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)175; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)176; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:6 Lat:4 SizeLat:6 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)177; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:12 Lat:8 SizeLat:12 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)178; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void179;180; SSSE3-LABEL: 'cost_abs_i8'181; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)182; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)183; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)184; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)185; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void186;187; SSE4-LABEL: 'cost_abs_i8'188; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)189; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)190; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)191; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)192; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void193;194; AVX1-LABEL: 'cost_abs_i8'195; AVX1-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)196; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)197; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)198; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)199; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void200;201; AVX2-LABEL: 'cost_abs_i8'202; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)203; AVX2-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)204; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)205; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)206; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void207;208; AVX512F-LABEL: 'cost_abs_i8'209; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)210; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)211; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)212; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)213; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void214;215; AVX512DQ-LABEL: 'cost_abs_i8'216; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)217; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)218; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)219; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)220; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void221;222; AVX512BW-LABEL: 'cost_abs_i8'223; AVX512BW-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 false)224; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 false)225; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 false)226; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 false)227; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void228;229 %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 0)230 %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 0)231 %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 0)232 %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 0)233 ret void234}235 236;237; abs(X, posion)238;239 240define void @cost_abs_i64_poison(i64 %a64, <2 x i64> %a128, <4 x i64> %a256, <8 x i64> %a512) {241; SSE23-LABEL: 'cost_abs_i64_poison'242; SSE23-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 true)243; SSE23-NEXT: Cost Model: Found costs of RThru:3 CodeSize:5 Lat:6 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 true)244; SSE23-NEXT: Cost Model: Found costs of RThru:6 CodeSize:10 Lat:12 SizeLat:10 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 true)245; SSE23-NEXT: Cost Model: Found costs of RThru:12 CodeSize:20 Lat:24 SizeLat:20 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 true)246; SSE23-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void247;248; SSE4-LABEL: 'cost_abs_i64_poison'249; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 true)250; SSE4-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 true)251; SSE4-NEXT: Cost Model: Found costs of RThru:6 CodeSize:6 Lat:8 SizeLat:10 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 true)252; SSE4-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:16 SizeLat:20 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 true)253; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void254;255; AVX1-LABEL: 'cost_abs_i64_poison'256; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 true)257; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 true)258; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:6 Lat:8 SizeLat:12 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 true)259; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:12 Lat:16 SizeLat:24 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 true)260; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void261;262; AVX2-LABEL: 'cost_abs_i64_poison'263; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 true)264; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:4 SizeLat:5 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 true)265; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:4 SizeLat:5 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 true)266; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:6 Lat:8 SizeLat:10 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 true)267; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void268;269; AVX512-LABEL: 'cost_abs_i64_poison'270; AVX512-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 true)271; AVX512-NEXT: Cost Model: Found costs of 1 for: %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 true)272; AVX512-NEXT: Cost Model: Found costs of 1 for: %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 true)273; AVX512-NEXT: Cost Model: Found costs of 1 for: %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 true)274; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void275;276 %I64 = call i64 @llvm.abs.i64(i64 %a64, i1 -1)277 %V2I64 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a128, i1 -1)278 %V4I64 = call <4 x i64> @llvm.abs.v4i64(<4 x i64> %a256, i1 -1)279 %V8I64 = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %a512, i1 -1)280 ret void281}282 283define void @cost_abs_i32_poison(i32 %a32, <4 x i32> %a128, <8 x i32> %a256, <16 x i32> %a512) {284; SSE2-LABEL: 'cost_abs_i32_poison'285; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)286; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:4 Lat:4 SizeLat:4 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)287; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:8 Lat:8 SizeLat:8 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)288; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:16 Lat:16 SizeLat:16 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)289; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void290;291; SSSE3-LABEL: 'cost_abs_i32_poison'292; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)293; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)294; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)295; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)296; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void297;298; SSE4-LABEL: 'cost_abs_i32_poison'299; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)300; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)301; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)302; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)303; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void304;305; AVX1-LABEL: 'cost_abs_i32_poison'306; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)307; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)308; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)309; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)310; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void311;312; AVX2-LABEL: 'cost_abs_i32_poison'313; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)314; AVX2-NEXT: Cost Model: Found costs of 1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)315; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)316; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)317; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void318;319; AVX512-LABEL: 'cost_abs_i32_poison'320; AVX512-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 true)321; AVX512-NEXT: Cost Model: Found costs of 1 for: %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 true)322; AVX512-NEXT: Cost Model: Found costs of 1 for: %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 true)323; AVX512-NEXT: Cost Model: Found costs of 1 for: %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 true)324; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void325;326 %I32 = call i32 @llvm.abs.i32(i32 %a32, i1 -1)327 %V2I32 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a128, i1 -1)328 %V4I32 = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %a256, i1 -1)329 %V8I32 = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %a512, i1 -1)330 ret void331}332 333define void @cost_abs_i16_poison(i16 %a16, <8 x i16> %a128, <16 x i16> %a256, <32 x i16> %a512) {334; SSE2-LABEL: 'cost_abs_i16_poison'335; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)336; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)337; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:6 Lat:4 SizeLat:6 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)338; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:12 Lat:8 SizeLat:12 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)339; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void340;341; SSSE3-LABEL: 'cost_abs_i16_poison'342; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)343; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)344; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)345; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)346; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void347;348; SSE4-LABEL: 'cost_abs_i16_poison'349; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)350; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)351; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)352; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)353; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void354;355; AVX1-LABEL: 'cost_abs_i16_poison'356; AVX1-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)357; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)358; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)359; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)360; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void361;362; AVX2-LABEL: 'cost_abs_i16_poison'363; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)364; AVX2-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)365; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)366; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)367; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void368;369; AVX512F-LABEL: 'cost_abs_i16_poison'370; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)371; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)372; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)373; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)374; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void375;376; AVX512DQ-LABEL: 'cost_abs_i16_poison'377; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)378; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)379; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)380; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)381; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void382;383; AVX512BW-LABEL: 'cost_abs_i16_poison'384; AVX512BW-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 true)385; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 true)386; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 true)387; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 true)388; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void389;390 %I16 = call i16 @llvm.abs.i16(i16 %a16, i1 -1)391 %V8I16 = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a128, i1 -1)392 %V16I16 = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %a256, i1 -1)393 %V32I16 = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %a512, i1 -1)394 ret void395}396 397define void @cost_abs_i8_poison(i8 %a8, <16 x i8> %a128, <32 x i8> %a256, <64 x i8> %a512) {398; SSE2-LABEL: 'cost_abs_i8_poison'399; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)400; SSE2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)401; SSE2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:6 Lat:4 SizeLat:6 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)402; SSE2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:12 Lat:8 SizeLat:12 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)403; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void404;405; SSSE3-LABEL: 'cost_abs_i8_poison'406; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)407; SSSE3-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)408; SSSE3-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)409; SSSE3-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)410; SSSE3-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void411;412; SSE4-LABEL: 'cost_abs_i8_poison'413; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)414; SSE4-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)415; SSE4-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:4 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)416; SSE4-NEXT: Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)417; SSE4-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void418;419; AVX1-LABEL: 'cost_abs_i8_poison'420; AVX1-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)421; AVX1-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)422; AVX1-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)423; AVX1-NEXT: Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)424; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void425;426; AVX2-LABEL: 'cost_abs_i8_poison'427; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)428; AVX2-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)429; AVX2-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:1 SizeLat:2 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)430; AVX2-NEXT: Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)431; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void432;433; AVX512F-LABEL: 'cost_abs_i8_poison'434; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)435; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)436; AVX512F-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)437; AVX512F-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)438; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void439;440; AVX512DQ-LABEL: 'cost_abs_i8_poison'441; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)442; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)443; AVX512DQ-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)444; AVX512DQ-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)445; AVX512DQ-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void446;447; AVX512BW-LABEL: 'cost_abs_i8_poison'448; AVX512BW-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:3 for: %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 true)449; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 true)450; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 true)451; AVX512BW-NEXT: Cost Model: Found costs of 1 for: %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 true)452; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void453;454 %I8 = call i8 @llvm.abs.i8(i8 %a8, i1 -1)455 %V16I8 = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a128, i1 -1)456 %V32I8 = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %a256, i1 -1)457 %V64I8 = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %a512, i1 -1)458 ret void459}460 461declare i64 @llvm.abs.i64(i64, i1)462declare i32 @llvm.abs.i32(i32, i1)463declare i16 @llvm.abs.i16(i16, i1)464declare i8 @llvm.abs.i8(i8, i1)465 466declare <2 x i64> @llvm.abs.v2i64(<2 x i64>, i1)467declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1)468declare <8 x i16> @llvm.abs.v8i16(<8 x i16>, i1)469declare <16 x i8> @llvm.abs.v16i8(<16 x i8>, i1)470 471declare <4 x i64> @llvm.abs.v4i64(<4 x i64>, i1)472declare <8 x i32> @llvm.abs.v8i32(<8 x i32>, i1)473declare <16 x i16> @llvm.abs.v16i16(<16 x i16>, i1)474declare <32 x i8> @llvm.abs.v32i8(<32 x i8>, i1)475 476declare <8 x i64> @llvm.abs.v8i64(<8 x i64>, i1)477declare <16 x i32> @llvm.abs.v16i32(<16 x i32>, i1)478declare <32 x i16> @llvm.abs.v32i16(<32 x i16>, i1)479declare <64 x i8> @llvm.abs.v64i8(<64 x i8>, i1)480