brintos

brintos / llvm-project-archived public Read only

0
0
Text · 90.4 KiB · 71bf0d6 Raw
717 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse2 | FileCheck %s --check-prefix=SSE23; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+ssse3 | FileCheck %s --check-prefix=SSSE34; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+sse4.2 | FileCheck %s --check-prefix=SSE425; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx | FileCheck %s --check-prefix=AVX16; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx2 | FileCheck %s --check-prefix=AVX27; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F8; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix=AVX512BW9;10; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=slm | FileCheck %s --check-prefix=SLM11; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=goldmont | FileCheck %s --check-prefix=SSE4212; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mcpu=btver2 | FileCheck %s --check-prefix=AVX113 14define i32 @mul_constpow2() {15; SSE2-LABEL: 'mul_constpow2'16; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 1617; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:7 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>18; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:14 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>19; SSE2-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:24 SizeLat:28 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>20; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 1621; SSE2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:7 Lat:8 SizeLat:7 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>22; SSE2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:14 Lat:16 SizeLat:14 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>23; SSE2-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:28 Lat:32 SizeLat:28 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>24; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 1625; SSE2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>26; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:10 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>27; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:20 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>28; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 1629; SSE2-NEXT:  Cost Model: Found costs of RThru:13 CodeSize:26 Lat:21 SizeLat:28 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>30; SSE2-NEXT:  Cost Model: Found costs of RThru:26 CodeSize:52 Lat:42 SizeLat:56 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>31; SSE2-NEXT:  Cost Model: Found costs of RThru:52 CodeSize:104 Lat:84 SizeLat:112 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>32; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef33;34; SSSE3-LABEL: 'mul_constpow2'35; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 1636; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:7 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>37; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:14 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>38; SSSE3-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:24 SizeLat:28 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>39; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 1640; SSSE3-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:7 Lat:8 SizeLat:7 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>41; SSSE3-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:14 Lat:16 SizeLat:14 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>42; SSSE3-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:28 Lat:32 SizeLat:28 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>43; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 1644; SSSE3-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>45; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:10 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>46; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:20 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>47; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 1648; SSSE3-NEXT:  Cost Model: Found costs of RThru:13 CodeSize:26 Lat:21 SizeLat:28 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>49; SSSE3-NEXT:  Cost Model: Found costs of RThru:26 CodeSize:52 Lat:42 SizeLat:56 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>50; SSSE3-NEXT:  Cost Model: Found costs of RThru:52 CodeSize:104 Lat:84 SizeLat:112 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>51; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef52;53; SSE42-LABEL: 'mul_constpow2'54; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 1655; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:7 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>56; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:14 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>57; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:24 SizeLat:28 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>58; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 1659; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:11 SizeLat:1 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>60; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:22 SizeLat:2 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>61; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:4 Lat:44 SizeLat:4 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>62; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 1663; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>64; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:10 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>65; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:20 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>66; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 1667; SSE42-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:17 Lat:24 SizeLat:22 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>68; SSE42-NEXT:  Cost Model: Found costs of RThru:30 CodeSize:34 Lat:48 SizeLat:44 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>69; SSE42-NEXT:  Cost Model: Found costs of RThru:60 CodeSize:68 Lat:96 SizeLat:88 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>70; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef71;72; AVX1-LABEL: 'mul_constpow2'73; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 1674; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:6 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>75; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:7 SizeLat:15 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>76; AVX1-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:14 SizeLat:30 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>77; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 1678; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:3 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>79; AVX1-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:8 SizeLat:10 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>80; AVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:10 Lat:16 SizeLat:20 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>81; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 1682; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>83; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:8 SizeLat:6 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>84; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:16 SizeLat:12 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>85; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 1686; AVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:11 Lat:21 SizeLat:17 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>87; AVX1-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:27 Lat:22 SizeLat:40 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>88; AVX1-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:54 Lat:44 SizeLat:80 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>89; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef90;91; AVX2-LABEL: 'mul_constpow2'92; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 1693; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>94; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:2 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>95; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:4 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>96; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 1697; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:3 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>98; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:1 Lat:4 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>99; AVX2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:2 Lat:8 SizeLat:6 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>100; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16101; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>102; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>103; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:10 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>104; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16105; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:21 SizeLat:16 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>106; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:23 SizeLat:22 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>107; AVX2-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:22 Lat:46 SizeLat:44 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>108; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef109;110; AVX512F-LABEL: 'mul_constpow2'111; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16112; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>113; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>114; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>115; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16116; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>117; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>118; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>119; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16120; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>121; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>122; AVX512F-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:11 Lat:16 SizeLat:15 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>123; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16124; AVX512F-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:21 SizeLat:16 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>125; AVX512F-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:11 Lat:23 SizeLat:22 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>126; AVX512F-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:27 Lat:19 SizeLat:33 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>127; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef128;129; AVX512BW-LABEL: 'mul_constpow2'130; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16131; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>132; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>133; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>134; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16135; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>136; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>137; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>138; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16139; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>140; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>141; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>142; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16143; AVX512BW-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:8 SizeLat:5 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>144; AVX512BW-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:11 Lat:23 SizeLat:16 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>145; AVX512BW-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:13 Lat:19 SizeLat:15 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>146; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef147;148; SLM-LABEL: 'mul_constpow2'149; SLM-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16150; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:6 SizeLat:7 for: %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>151; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:12 SizeLat:14 for: %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>152; SLM-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:24 SizeLat:28 for: %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>153; SLM-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16154; SLM-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:1 Lat:11 SizeLat:7 for: %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>155; SLM-NEXT:  Cost Model: Found costs of RThru:22 CodeSize:2 Lat:22 SizeLat:14 for: %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>156; SLM-NEXT:  Cost Model: Found costs of RThru:44 CodeSize:4 Lat:44 SizeLat:28 for: %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>157; SLM-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16158; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:5 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>159; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:10 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>160; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:4 Lat:20 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>161; SLM-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16162; SLM-NEXT:  Cost Model: Found costs of RThru:15 CodeSize:17 Lat:24 SizeLat:22 for: %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>163; SLM-NEXT:  Cost Model: Found costs of RThru:30 CodeSize:34 Lat:48 SizeLat:44 for: %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>164; SLM-NEXT:  Cost Model: Found costs of RThru:60 CodeSize:68 Lat:96 SizeLat:88 for: %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>165; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef166;167  %I64 = mul i64 undef, 16168  %V2i64 = mul <2 x i64> undef, <i64 8, i64 16>169  %V4i64 = mul <4 x i64> undef, <i64 2, i64 4, i64 8, i64 16>170  %V8i64 = mul <8 x i64> undef, <i64 2, i64 4, i64 8, i64 16, i64 32, i64 64, i64 128, i64 256>171 172  %I32 = mul i32 undef, 16173  %V4i32 = mul <4 x i32> undef, <i32 2, i32 4, i32 8, i32 16>174  %V8i32 = mul <8 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>175  %V16i32 = mul <16 x i32> undef, <i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256>176 177  %I16 = mul i16 undef, 16178  %V8i16 = mul <8 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>179  %V16i16 = mul <16 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>180  %V32i16 = mul <32 x i16> undef, <i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256, i16 2, i16 4, i16 8, i16 16, i16 32, i16 64, i16 128, i16 256>181 182  %I8 = mul i8 undef, 16183  %V16i8 = mul <16 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>184  %V32i8 = mul <32 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>185  %V64i8 = mul <64 x i8> undef, <i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16, i8 2, i8 4, i8 8, i8 16>186 187  ret i32 undef188}189 190define i32 @mul_uniformconstpow2() {191; SSE2-LABEL: 'mul_uniformconstpow2'192; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16193; SSE2-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)194; SSE2-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)195; SSE2-NEXT:  Cost Model: Found costs of 4 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)196; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16197; SSE2-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)198; SSE2-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)199; SSE2-NEXT:  Cost Model: Found costs of 4 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)200; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16201; SSE2-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)202; SSE2-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)203; SSE2-NEXT:  Cost Model: Found costs of 4 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)204; SSE2-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16205; SSE2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)206; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:14 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)207; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:28 SizeLat:12 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)208; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef209;210; SSSE3-LABEL: 'mul_uniformconstpow2'211; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16212; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)213; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)214; SSSE3-NEXT:  Cost Model: Found costs of 4 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)215; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16216; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)217; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)218; SSSE3-NEXT:  Cost Model: Found costs of 4 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)219; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16220; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)221; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)222; SSSE3-NEXT:  Cost Model: Found costs of 4 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)223; SSSE3-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16224; SSSE3-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)225; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:14 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)226; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:28 SizeLat:12 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)227; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef228;229; SSE42-LABEL: 'mul_uniformconstpow2'230; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16231; SSE42-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)232; SSE42-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)233; SSE42-NEXT:  Cost Model: Found costs of 4 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)234; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16235; SSE42-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)236; SSE42-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)237; SSE42-NEXT:  Cost Model: Found costs of 4 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)238; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16239; SSE42-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)240; SSE42-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)241; SSE42-NEXT:  Cost Model: Found costs of 4 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)242; SSE42-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16243; SSE42-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)244; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:14 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)245; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:28 SizeLat:12 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)246; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef247;248; AVX1-LABEL: 'mul_uniformconstpow2'249; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16250; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)251; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)252; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)253; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16254; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)255; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)256; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)257; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16258; AVX1-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:1 Lat:2 SizeLat:1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)259; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:4 Lat:6 SizeLat:5 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)260; AVX1-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:8 Lat:12 SizeLat:10 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)261; AVX1-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16262; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)263; AVX1-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:7 Lat:7 SizeLat:8 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)264; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:14 Lat:14 SizeLat:16 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)265; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef266;267; AVX2-LABEL: 'mul_uniformconstpow2'268; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16269; AVX2-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)270; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)271; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)272; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16273; AVX2-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)274; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)275; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)276; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16277; AVX2-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)278; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:1 Lat:2 SizeLat:2 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)279; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:2 Lat:4 SizeLat:4 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)280; AVX2-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16281; AVX2-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)282; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:8 SizeLat:4 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)283; AVX2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:16 SizeLat:8 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)284; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef285;286; AVX512F-LABEL: 'mul_uniformconstpow2'287; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16288; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)289; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)290; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)291; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16292; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)293; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)294; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)295; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16296; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)297; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:7 SizeLat:4 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)298; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:10 SizeLat:7 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)299; AVX512F-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16300; AVX512F-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)301; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:8 SizeLat:4 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)302; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:5 Lat:12 SizeLat:6 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)303; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef304;305; AVX512BW-LABEL: 'mul_uniformconstpow2'306; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16307; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)308; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)309; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)310; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16311; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)312; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)313; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)314; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16315; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)316; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)317; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)318; AVX512BW-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16319; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)320; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:3 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)321; AVX512BW-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:8 SizeLat:3 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)322; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef323;324; SLM-LABEL: 'mul_uniformconstpow2'325; SLM-NEXT:  Cost Model: Found costs of 1 for: %I64 = mul i64 undef, 16326; SLM-NEXT:  Cost Model: Found costs of 1 for: %V2i64 = mul <2 x i64> undef, splat (i64 16)327; SLM-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, splat (i64 16)328; SLM-NEXT:  Cost Model: Found costs of 4 for: %V8i64 = mul <8 x i64> undef, splat (i64 16)329; SLM-NEXT:  Cost Model: Found costs of 1 for: %I32 = mul i32 undef, 16330; SLM-NEXT:  Cost Model: Found costs of 1 for: %V4i32 = mul <4 x i32> undef, splat (i32 16)331; SLM-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, splat (i32 16)332; SLM-NEXT:  Cost Model: Found costs of 4 for: %V16i32 = mul <16 x i32> undef, splat (i32 16)333; SLM-NEXT:  Cost Model: Found costs of 1 for: %I16 = mul i16 undef, 16334; SLM-NEXT:  Cost Model: Found costs of 1 for: %V8i16 = mul <8 x i16> undef, splat (i16 16)335; SLM-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, splat (i16 16)336; SLM-NEXT:  Cost Model: Found costs of 4 for: %V32i16 = mul <32 x i16> undef, splat (i16 16)337; SLM-NEXT:  Cost Model: Found costs of 1 for: %I8 = mul i8 undef, 16338; SLM-NEXT:  Cost Model: Found costs of RThru:1 CodeSize:2 Lat:7 SizeLat:3 for: %V16i8 = mul <16 x i8> undef, splat (i8 16)339; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:4 Lat:14 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 16)340; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:8 Lat:28 SizeLat:12 for: %V64i8 = mul <64 x i8> undef, splat (i8 16)341; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef342;343  %I64 = mul i64 undef, 16344  %V2i64 = mul <2 x i64> undef, <i64 16, i64 16>345  %V4i64 = mul <4 x i64> undef, <i64 16, i64 16, i64 16, i64 16>346  %V8i64 = mul <8 x i64> undef, <i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16, i64 16>347 348  %I32 = mul i32 undef, 16349  %V4i32 = mul <4 x i32> undef, <i32 16, i32 16, i32 16, i32 16>350  %V8i32 = mul <8 x i32> undef, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>351  %V16i32 = mul <16 x i32> undef, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>352 353  %I16 = mul i16 undef, 16354  %V8i16 = mul <8 x i16> undef, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>355  %V16i16 = mul <16 x i16> undef, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>356  %V32i16 = mul <32 x i16> undef, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>357 358  %I8 = mul i8 undef, 16359  %V16i8 = mul <16 x i8> undef, <i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16>360  %V32i8 = mul <32 x i8> undef, <i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16>361  %V64i8 = mul <64 x i8> undef, <i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16, i8 16>362 363  ret i32 undef364}365 366define i32 @mul_constnegpow2() {367; SSE2-LABEL: 'mul_constnegpow2'368; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16369; SSE2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:6 Lat:8 SizeLat:9 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>370; SSE2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:12 Lat:16 SizeLat:18 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>371; SSE2-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:24 Lat:32 SizeLat:36 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>372; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16373; SSE2-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:8 Lat:9 SizeLat:8 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>374; SSE2-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:15 Lat:17 SizeLat:15 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>375; SSE2-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:29 Lat:33 SizeLat:29 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>376; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16377; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>378; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:11 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>379; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:21 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>380; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16381; SSE2-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:27 Lat:22 SizeLat:29 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>382; SSE2-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:53 Lat:43 SizeLat:57 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>383; SSE2-NEXT:  Cost Model: Found costs of RThru:56 CodeSize:105 Lat:85 SizeLat:113 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>384; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef385;386; SSSE3-LABEL: 'mul_constnegpow2'387; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16388; SSSE3-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:6 Lat:8 SizeLat:9 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>389; SSSE3-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:12 Lat:16 SizeLat:18 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>390; SSSE3-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:24 Lat:32 SizeLat:36 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>391; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16392; SSSE3-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:8 Lat:9 SizeLat:8 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>393; SSSE3-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:15 Lat:17 SizeLat:15 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>394; SSSE3-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:29 Lat:33 SizeLat:29 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>395; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16396; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>397; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:11 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>398; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:21 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>399; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16400; SSSE3-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:27 Lat:22 SizeLat:29 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>401; SSSE3-NEXT:  Cost Model: Found costs of RThru:28 CodeSize:53 Lat:43 SizeLat:57 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>402; SSSE3-NEXT:  Cost Model: Found costs of RThru:56 CodeSize:105 Lat:85 SizeLat:113 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>403; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef404;405; SSE42-LABEL: 'mul_constnegpow2'406; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16407; SSE42-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:6 Lat:8 SizeLat:9 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>408; SSE42-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:12 Lat:16 SizeLat:18 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>409; SSE42-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:24 Lat:32 SizeLat:36 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>410; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16411; SSE42-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:12 SizeLat:2 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>412; SSE42-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:3 Lat:23 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>413; SSE42-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:5 Lat:45 SizeLat:5 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>414; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16415; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>416; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:11 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>417; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:21 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>418; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16419; SSE42-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:18 Lat:25 SizeLat:23 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>420; SSE42-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:35 Lat:49 SizeLat:45 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>421; SSE42-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:69 Lat:97 SizeLat:89 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>422; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef423;424; AVX1-LABEL: 'mul_constnegpow2'425; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16426; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:5 SizeLat:7 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>427; AVX1-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:16 Lat:9 SizeLat:21 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>428; AVX1-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:32 Lat:18 SizeLat:42 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>429; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16430; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:6 SizeLat:4 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>431; AVX1-NEXT:  Cost Model: Found costs of RThru:9 CodeSize:10 Lat:10 SizeLat:16 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>432; AVX1-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:20 Lat:20 SizeLat:32 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>433; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16434; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>435; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:10 SizeLat:12 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>436; AVX1-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:20 Lat:20 SizeLat:24 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>437; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16438; AVX1-NEXT:  Cost Model: Found costs of RThru:11 CodeSize:12 Lat:22 SizeLat:18 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>439; AVX1-NEXT:  Cost Model: Found costs of RThru:26 CodeSize:32 Lat:24 SizeLat:46 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>440; AVX1-NEXT:  Cost Model: Found costs of RThru:52 CodeSize:64 Lat:48 SizeLat:92 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>441; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef442;443; AVX2-LABEL: 'mul_constnegpow2'444; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16445; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:4 SizeLat:2 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>446; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:2 Lat:5 SizeLat:4 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>447; AVX2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:4 Lat:10 SizeLat:8 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>448; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16449; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:4 SizeLat:4 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>450; AVX2-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:2 Lat:5 SizeLat:5 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>451; AVX2-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:4 Lat:10 SizeLat:10 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>452; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16453; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>454; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:6 SizeLat:4 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>455; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:4 Lat:12 SizeLat:8 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>456; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16457; AVX2-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:12 Lat:22 SizeLat:17 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>458; AVX2-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:12 Lat:24 SizeLat:24 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>459; AVX2-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:24 Lat:48 SizeLat:48 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>460; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef461;462; AVX512F-LABEL: 'mul_constnegpow2'463; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16464; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>465; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:3 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>466; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>467; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16468; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>469; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>470; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>471; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16472; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>473; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:6 SizeLat:4 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>474; AVX512F-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:16 Lat:23 SizeLat:20 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>475; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16476; AVX512F-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:12 Lat:22 SizeLat:17 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>477; AVX512F-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:12 Lat:24 SizeLat:24 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>478; AVX512F-NEXT:  Cost Model: Found costs of RThru:18 CodeSize:32 Lat:26 SizeLat:38 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>479; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef480;481; AVX512BW-LABEL: 'mul_constnegpow2'482; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16483; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>484; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>485; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>486; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16487; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>488; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>489; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>490; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16491; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>492; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>493; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>494; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16495; AVX512BW-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:5 Lat:9 SizeLat:6 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>496; AVX512BW-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:12 Lat:24 SizeLat:17 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>497; AVX512BW-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:14 Lat:20 SizeLat:16 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>498; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef499;500; SLM-LABEL: 'mul_constnegpow2'501; SLM-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16502; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:6 Lat:8 SizeLat:9 for: %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>503; SLM-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:12 Lat:16 SizeLat:18 for: %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>504; SLM-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:24 Lat:32 SizeLat:36 for: %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>505; SLM-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16506; SLM-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:2 Lat:12 SizeLat:8 for: %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>507; SLM-NEXT:  Cost Model: Found costs of RThru:24 CodeSize:3 Lat:23 SizeLat:15 for: %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>508; SLM-NEXT:  Cost Model: Found costs of RThru:48 CodeSize:5 Lat:45 SizeLat:29 for: %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>509; SLM-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16510; SLM-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:6 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>511; SLM-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:3 Lat:11 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>512; SLM-NEXT:  Cost Model: Found costs of RThru:12 CodeSize:5 Lat:21 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>513; SLM-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16514; SLM-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:18 Lat:25 SizeLat:23 for: %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>515; SLM-NEXT:  Cost Model: Found costs of RThru:32 CodeSize:35 Lat:49 SizeLat:45 for: %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>516; SLM-NEXT:  Cost Model: Found costs of RThru:64 CodeSize:69 Lat:97 SizeLat:89 for: %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>517; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef518;519  %I64 = mul i64 undef, -16520  %V2i64 = mul <2 x i64> undef, <i64 -8, i64 -16>521  %V4i64 = mul <4 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16>522  %V8i64 = mul <8 x i64> undef, <i64 -2, i64 -4, i64 -8, i64 -16, i64 -32, i64 -64, i64 -128, i64 -256>523 524  %I32 = mul i32 undef, -16525  %V4i32 = mul <4 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16>526  %V8i32 = mul <8 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>527  %V16i32 = mul <16 x i32> undef, <i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256, i32 -2, i32 -4, i32 -8, i32 -16, i32 -32, i32 -64, i32 -128, i32 -256>528 529  %I16 = mul i16 undef, -16530  %V8i16 = mul <8 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>531  %V16i16 = mul <16 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>532  %V32i16 = mul <32 x i16> undef, <i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256>533 534  %I8 = mul i8 undef, -16535  %V16i8 = mul <16 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>536  %V32i8 = mul <32 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>537  %V64i8 = mul <64 x i8> undef, <i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16, i8 -2, i8 -4, i8 -8, i8 -16>538 539  ret i32 undef540}541 542define i32 @mul_uniformconstnegpow2() {543; SSE2-LABEL: 'mul_uniformconstnegpow2'544; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16545; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)546; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:6 SizeLat:6 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)547; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:8 Lat:12 SizeLat:12 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)548; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16549; SSE2-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)550; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)551; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)552; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16553; SSE2-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)554; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)555; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)556; SSE2-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16557; SSE2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)558; SSE2-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:15 SizeLat:7 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)559; SSE2-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:9 Lat:29 SizeLat:13 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)560; SSE2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef561;562; SSSE3-LABEL: 'mul_uniformconstnegpow2'563; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16564; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)565; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:6 SizeLat:6 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)566; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:8 Lat:12 SizeLat:12 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)567; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16568; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)569; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)570; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)571; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16572; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)573; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)574; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)575; SSSE3-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16576; SSSE3-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)577; SSSE3-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:15 SizeLat:7 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)578; SSSE3-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:9 Lat:29 SizeLat:13 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)579; SSSE3-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef580;581; SSE42-LABEL: 'mul_uniformconstnegpow2'582; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16583; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:3 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)584; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:4 Lat:6 SizeLat:6 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)585; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:8 Lat:12 SizeLat:12 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)586; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16587; SSE42-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)588; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)589; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)590; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16591; SSE42-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)592; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)593; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)594; SSE42-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16595; SSE42-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)596; SSE42-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:15 SizeLat:7 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)597; SSE42-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:9 Lat:29 SizeLat:13 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)598; SSE42-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef599;600; AVX1-LABEL: 'mul_uniformconstnegpow2'601; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16602; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:2 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)603; AVX1-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:9 Lat:8 SizeLat:11 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)604; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:18 Lat:16 SizeLat:22 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)605; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16606; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)607; AVX1-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:9 Lat:8 SizeLat:11 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)608; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:18 Lat:16 SizeLat:22 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)609; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16610; AVX1-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:3 SizeLat:2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)611; AVX1-NEXT:  Cost Model: Found costs of RThru:7 CodeSize:9 Lat:8 SizeLat:11 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)612; AVX1-NEXT:  Cost Model: Found costs of RThru:14 CodeSize:18 Lat:16 SizeLat:22 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)613; AVX1-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16614; AVX1-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)615; AVX1-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:12 Lat:9 SizeLat:14 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)616; AVX1-NEXT:  Cost Model: Found costs of RThru:16 CodeSize:24 Lat:18 SizeLat:28 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)617; AVX1-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef618;619; AVX2-LABEL: 'mul_uniformconstnegpow2'620; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16621; AVX2-NEXT:  Cost Model: Found costs of 2 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)622; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:3 SizeLat:4 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)623; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:8 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)624; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16625; AVX2-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)626; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:3 SizeLat:4 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)627; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:8 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)628; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16629; AVX2-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)630; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:2 Lat:3 SizeLat:4 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)631; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:8 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)632; AVX2-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16633; AVX2-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:9 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)634; AVX2-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:9 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)635; AVX2-NEXT:  Cost Model: Found costs of RThru:6 CodeSize:6 Lat:18 SizeLat:12 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)636; AVX2-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef637;638; AVX512F-LABEL: 'mul_uniformconstnegpow2'639; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16640; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)641; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:3 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)642; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)643; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16644; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)645; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:2 Lat:2 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)646; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)647; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16648; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)649; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:5 Lat:8 SizeLat:6 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)650; AVX512F-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:10 Lat:17 SizeLat:12 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)651; AVX512F-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16652; AVX512F-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:9 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)653; AVX512F-NEXT:  Cost Model: Found costs of RThru:3 CodeSize:3 Lat:9 SizeLat:6 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)654; AVX512F-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:10 Lat:19 SizeLat:11 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)655; AVX512F-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef656;657; AVX512BW-LABEL: 'mul_uniformconstnegpow2'658; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16659; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)660; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)661; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)662; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16663; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)664; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)665; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)666; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16667; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)668; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)669; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)670; AVX512BW-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16671; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)672; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:9 SizeLat:4 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)673; AVX512BW-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:9 SizeLat:4 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)674; AVX512BW-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef675;676; SLM-LABEL: 'mul_uniformconstnegpow2'677; SLM-NEXT:  Cost Model: Found costs of 2 for: %I64 = mul i64 undef, -16678; SLM-NEXT:  Cost Model: Found costs of RThru:5 CodeSize:2 Lat:3 SizeLat:3 for: %V2i64 = mul <2 x i64> undef, splat (i64 -16)679; SLM-NEXT:  Cost Model: Found costs of RThru:10 CodeSize:4 Lat:6 SizeLat:6 for: %V4i64 = mul <4 x i64> undef, splat (i64 -16)680; SLM-NEXT:  Cost Model: Found costs of RThru:20 CodeSize:8 Lat:12 SizeLat:12 for: %V8i64 = mul <8 x i64> undef, splat (i64 -16)681; SLM-NEXT:  Cost Model: Found costs of 2 for: %I32 = mul i32 undef, -16682; SLM-NEXT:  Cost Model: Found costs of 2 for: %V4i32 = mul <4 x i32> undef, splat (i32 -16)683; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V8i32 = mul <8 x i32> undef, splat (i32 -16)684; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V16i32 = mul <16 x i32> undef, splat (i32 -16)685; SLM-NEXT:  Cost Model: Found costs of 2 for: %I16 = mul i16 undef, -16686; SLM-NEXT:  Cost Model: Found costs of 2 for: %V8i16 = mul <8 x i16> undef, splat (i16 -16)687; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:3 Lat:3 SizeLat:3 for: %V16i16 = mul <16 x i16> undef, splat (i16 -16)688; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:5 Lat:5 SizeLat:5 for: %V32i16 = mul <32 x i16> undef, splat (i16 -16)689; SLM-NEXT:  Cost Model: Found costs of 2 for: %I8 = mul i8 undef, -16690; SLM-NEXT:  Cost Model: Found costs of RThru:2 CodeSize:3 Lat:8 SizeLat:4 for: %V16i8 = mul <16 x i8> undef, splat (i8 -16)691; SLM-NEXT:  Cost Model: Found costs of RThru:4 CodeSize:5 Lat:15 SizeLat:7 for: %V32i8 = mul <32 x i8> undef, splat (i8 -16)692; SLM-NEXT:  Cost Model: Found costs of RThru:8 CodeSize:9 Lat:29 SizeLat:13 for: %V64i8 = mul <64 x i8> undef, splat (i8 -16)693; SLM-NEXT:  Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 undef694;695  %I64 = mul i64 undef, -16696  %V2i64 = mul <2 x i64> undef, <i64 -16, i64 -16>697  %V4i64 = mul <4 x i64> undef, <i64 -16, i64 -16, i64 -16, i64 -16>698  %V8i64 = mul <8 x i64> undef, <i64 -16, i64 -16, i64 -16, i64 -16, i64 -16, i64 -16, i64 -16, i64 -16>699 700  %I32 = mul i32 undef, -16701  %V4i32 = mul <4 x i32> undef, <i32 -16, i32 -16, i32 -16, i32 -16>702  %V8i32 = mul <8 x i32> undef, <i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16>703  %V16i32 = mul <16 x i32> undef, <i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16, i32 -16>704 705  %I16 = mul i16 undef, -16706  %V8i16 = mul <8 x i16> undef, <i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16>707  %V16i16 = mul <16 x i16> undef, <i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16>708  %V32i16 = mul <32 x i16> undef, <i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16, i16 -16>709 710  %I8 = mul i8 undef, -16711  %V16i8 = mul <16 x i8> undef, <i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16>712  %V32i8 = mul <32 x i8> undef, <i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16>713  %V64i8 = mul <64 x i8> undef, <i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16>714 715  ret i32 undef716}717