1; RUN: opt < %s -passes='print<cost-model>' 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
2
3define void @store() {
4  store i8 undef, i8* undef
5  store i16 undef, i16* undef
6  store i32 undef, i32* undef
7  store i64 undef, i64* undef
8  store float undef, float* undef
9  store double undef, double* undef
10  store fp128 undef, fp128* undef
11  store <2 x i8> undef, <2 x i8>* undef
12  store <2 x i16> undef, <2 x i16>* undef
13  store <2 x i32> undef, <2 x i32>* undef
14  store <2 x i64> undef, <2 x i64>* undef
15  store <2 x float> undef, <2 x float>* undef
16  store <2 x double> undef, <2 x double>* undef
17  store <4 x i8> undef, <4 x i8>* undef
18  store <4 x i16> undef, <4 x i16>* undef
19  store <4 x i32> undef, <4 x i32>* undef
20  store <4 x i64> undef, <4 x i64>* undef
21  store <4 x float> undef, <4 x float>* undef
22  store <4 x double> undef, <4 x double>* undef
23  store <8 x i8> undef, <8 x i8>* undef
24  store <8 x i16> undef, <8 x i16>* undef
25  store <8 x i32> undef, <8 x i32>* undef
26  store <8 x i64> undef, <8 x i64>* undef
27  store <8 x float> undef, <8 x float>* undef
28  store <8 x double> undef, <8 x double>* undef
29  store <16 x i8> undef, <16 x i8>* undef
30  store <16 x i16> undef, <16 x i16>* undef
31  store <16 x i32> undef, <16 x i32>* undef
32  store <16 x i64> undef, <16 x i64>* undef
33  store <16 x float> undef, <16 x float>* undef
34  store <16 x double> undef, <16 x double>* undef
35
36; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i8 undef, i8* undef
37; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i16 undef, i16* undef
38; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i32 undef, i32* undef
39; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i64 undef, i64* undef
40; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store float undef, float* undef
41; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store double undef, double* undef
42; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store fp128 undef, fp128* undef
43; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i8> undef, <2 x i8>* undef
44; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i16> undef, <2 x i16>* undef
45; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i32> undef, <2 x i32>* undef
46; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i64> undef, <2 x i64>* undef
47; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x float> undef, <2 x float>* undef
48; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x double> undef, <2 x double>* undef
49; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i8> undef, <4 x i8>* undef
50; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i16> undef, <4 x i16>* undef
51; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i32> undef, <4 x i32>* undef
52; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <4 x i64> undef, <4 x i64>* undef
53; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x float> undef, <4 x float>* undef
54; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <4 x double> undef, <4 x double>* undef
55; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <8 x i8> undef, <8 x i8>* undef
56; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <8 x i16> undef, <8 x i16>* undef
57; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <8 x i32> undef, <8 x i32>* undef
58; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <8 x i64> undef, <8 x i64>* undef
59; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <8 x float> undef, <8 x float>* undef
60; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <8 x double> undef, <8 x double>* undef
61; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <16 x i8> undef, <16 x i8>* undef
62; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <16 x i16> undef, <16 x i16>* undef
63; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <16 x i32> undef, <16 x i32>* undef
64; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   store <16 x i64> undef, <16 x i64>* undef
65; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <16 x float> undef, <16 x float>* undef
66; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   store <16 x double> undef, <16 x double>* undef
67
68  ret void;
69}
70
71define void @load() {
72  load i8, i8* undef
73  load i16, i16* undef
74  load i32, i32* undef
75  load i64, i64* undef
76  load float, float* undef
77  load double, double* undef
78  load fp128, fp128* undef
79  load <2 x i8>, <2 x i8>* undef
80  load <2 x i16>, <2 x i16>* undef
81  load <2 x i32>, <2 x i32>* undef
82  load <2 x i64>, <2 x i64>* undef
83  load <2 x float>, <2 x float>* undef
84  load <2 x double>, <2 x double>* undef
85  load <4 x i8>, <4 x i8>* undef
86  load <4 x i16>, <4 x i16>* undef
87  load <4 x i32>, <4 x i32>* undef
88  load <4 x i64>, <4 x i64>* undef
89  load <4 x float>, <4 x float>* undef
90  load <4 x double>, <4 x double>* undef
91  load <8 x i8>, <8 x i8>* undef
92  load <8 x i16>, <8 x i16>* undef
93  load <8 x i32>, <8 x i32>* undef
94  load <8 x i64>, <8 x i64>* undef
95  load <8 x float>, <8 x float>* undef
96  load <8 x double>, <8 x double>* undef
97  load <16 x i8>, <16 x i8>* undef
98  load <16 x i16>, <16 x i16>* undef
99  load <16 x i32>, <16 x i32>* undef
100  load <16 x i64>, <16 x i64>* undef
101  load <16 x float>, <16 x float>* undef
102  load <16 x double>, <16 x double>* undef
103
104; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %1 = load i8, i8* undef
105; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %2 = load i16, i16* undef
106; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %3 = load i32, i32* undef
107; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %4 = load i64, i64* undef
108; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %5 = load float, float* undef
109; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %6 = load double, double* undef
110; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %7 = load fp128, fp128* undef
111; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %8 = load <2 x i8>, <2 x i8>* undef
112; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %9 = load <2 x i16>, <2 x i16>* undef
113; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %10 = load <2 x i32>, <2 x i32>* undef
114; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %11 = load <2 x i64>, <2 x i64>* undef
115; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %12 = load <2 x float>, <2 x float>* undef
116; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %13 = load <2 x double>, <2 x double>* undef
117; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %14 = load <4 x i8>, <4 x i8>* undef
118; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %15 = load <4 x i16>, <4 x i16>* undef
119; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %16 = load <4 x i32>, <4 x i32>* undef
120; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %17 = load <4 x i64>, <4 x i64>* undef
121; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %18 = load <4 x float>, <4 x float>* undef
122; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %19 = load <4 x double>, <4 x double>* undef
123; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %20 = load <8 x i8>, <8 x i8>* undef
124; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %21 = load <8 x i16>, <8 x i16>* undef
125; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %22 = load <8 x i32>, <8 x i32>* undef
126; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %23 = load <8 x i64>, <8 x i64>* undef
127; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %24 = load <8 x float>, <8 x float>* undef
128; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %25 = load <8 x double>, <8 x double>* undef
129; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %26 = load <16 x i8>, <16 x i8>* undef
130; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %27 = load <16 x i16>, <16 x i16>* undef
131; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %28 = load <16 x i32>, <16 x i32>* undef
132; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %29 = load <16 x i64>, <16 x i64>* undef
133; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %30 = load <16 x float>, <16 x float>* undef
134; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %31 = load <16 x double>, <16 x double>* undef
135
136  ret void;
137}
138