blob: bc2cd104aae627f11049d877d2f977fc828ca659 [file] [log] [blame]
David Green84cb4b22019-08-12 15:40:27 +00001; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2; RUN: opt -cost-model -analyze -mtriple=thumbv8.1-m.main-none-eabi -mattr=+mve < %s | FileCheck %s --check-prefix=CHECK-MVE
3; RUN: opt -cost-model -analyze -mtriple=thumbv8.1-m.main-none-eabi -mattr=+mve.fp < %s | FileCheck %s --check-prefix=CHECK-MVEFP
4
5define void @f32() {
6; CHECK-MVE-LABEL: 'f32'
David Greena6553932019-08-13 18:12:08 +00007; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd float undef, undef
8; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub float undef, undef
9; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul float undef, undef
David Green84cb4b22019-08-12 15:40:27 +000010; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
11;
12; CHECK-MVEFP-LABEL: 'f32'
David Greena6553932019-08-13 18:12:08 +000013; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd float undef, undef
14; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub float undef, undef
15; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul float undef, undef
David Green84cb4b22019-08-12 15:40:27 +000016; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
17;
18 %c = fadd float undef, undef
19 %d = fsub float undef, undef
20 %e = fmul float undef, undef
21 ret void
22}
23
24define void @f16() {
25; CHECK-MVE-LABEL: 'f16'
David Greena6553932019-08-13 18:12:08 +000026; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd half undef, undef
27; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub half undef, undef
28; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul half undef, undef
David Green84cb4b22019-08-12 15:40:27 +000029; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
30;
31; CHECK-MVEFP-LABEL: 'f16'
David Greena6553932019-08-13 18:12:08 +000032; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd half undef, undef
33; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub half undef, undef
34; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul half undef, undef
David Green84cb4b22019-08-12 15:40:27 +000035; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
36;
37 %c = fadd half undef, undef
38 %d = fsub half undef, undef
39 %e = fmul half undef, undef
40 ret void
41}
42
43define void @f64() {
44; CHECK-MVE-LABEL: 'f64'
David Greena6553932019-08-13 18:12:08 +000045; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd double undef, undef
46; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub double undef, undef
47; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul double undef, undef
David Green84cb4b22019-08-12 15:40:27 +000048; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
49;
50; CHECK-MVEFP-LABEL: 'f64'
David Greena6553932019-08-13 18:12:08 +000051; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd double undef, undef
52; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub double undef, undef
53; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul double undef, undef
David Green84cb4b22019-08-12 15:40:27 +000054; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
55;
56 %c = fadd double undef, undef
57 %d = fsub double undef, undef
58 %e = fmul double undef, undef
59 ret void
60}
61
62define void @vf32() {
63; CHECK-MVE-LABEL: 'vf32'
David Greena6553932019-08-13 18:12:08 +000064; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x float> undef, undef
65; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x float> undef, undef
66; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x float> undef, undef
67; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x float> undef, undef
68; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x float> undef, undef
69; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x float> undef, undef
70; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x float> undef, undef
71; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x float> undef, undef
72; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x float> undef, undef
David Green84cb4b22019-08-12 15:40:27 +000073; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
74;
75; CHECK-MVEFP-LABEL: 'vf32'
76; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c2 = fadd <2 x float> undef, undef
77; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d2 = fsub <2 x float> undef, undef
78; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e2 = fmul <2 x float> undef, undef
79; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c4 = fadd <4 x float> undef, undef
80; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d4 = fsub <4 x float> undef, undef
81; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e4 = fmul <4 x float> undef, undef
82; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %c8 = fadd <8 x float> undef, undef
83; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %d8 = fsub <8 x float> undef, undef
84; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %e8 = fmul <8 x float> undef, undef
85; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
86;
87 %c2 = fadd <2 x float> undef, undef
88 %d2 = fsub <2 x float> undef, undef
89 %e2 = fmul <2 x float> undef, undef
90 %c4 = fadd <4 x float> undef, undef
91 %d4 = fsub <4 x float> undef, undef
92 %e4 = fmul <4 x float> undef, undef
93 %c8 = fadd <8 x float> undef, undef
94 %d8 = fsub <8 x float> undef, undef
95 %e8 = fmul <8 x float> undef, undef
96 ret void
97}
98
99define void @vf16() {
100; CHECK-MVE-LABEL: 'vf16'
David Greena6553932019-08-13 18:12:08 +0000101; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x half> undef, undef
102; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x half> undef, undef
103; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x half> undef, undef
104; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x half> undef, undef
105; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x half> undef, undef
106; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x half> undef, undef
107; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x half> undef, undef
108; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x half> undef, undef
109; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x half> undef, undef
David Green84cb4b22019-08-12 15:40:27 +0000110; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
111;
112; CHECK-MVEFP-LABEL: 'vf16'
113; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c2 = fadd <2 x half> undef, undef
114; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d2 = fsub <2 x half> undef, undef
115; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e2 = fmul <2 x half> undef, undef
116; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c4 = fadd <4 x half> undef, undef
117; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d4 = fsub <4 x half> undef, undef
118; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e4 = fmul <4 x half> undef, undef
119; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c8 = fadd <8 x half> undef, undef
120; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d8 = fsub <8 x half> undef, undef
121; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e8 = fmul <8 x half> undef, undef
122; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
123;
124 %c2 = fadd <2 x half> undef, undef
125 %d2 = fsub <2 x half> undef, undef
126 %e2 = fmul <2 x half> undef, undef
127 %c4 = fadd <4 x half> undef, undef
128 %d4 = fsub <4 x half> undef, undef
129 %e4 = fmul <4 x half> undef, undef
130 %c8 = fadd <8 x half> undef, undef
131 %d8 = fsub <8 x half> undef, undef
132 %e8 = fmul <8 x half> undef, undef
133 ret void
134}
135
136define void @vf64() {
137; CHECK-MVE-LABEL: 'vf64'
David Greena6553932019-08-13 18:12:08 +0000138; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x double> undef, undef
139; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x double> undef, undef
140; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x double> undef, undef
141; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x double> undef, undef
142; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x double> undef, undef
143; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x double> undef, undef
144; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x double> undef, undef
145; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x double> undef, undef
146; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x double> undef, undef
David Green84cb4b22019-08-12 15:40:27 +0000147; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
148;
149; CHECK-MVEFP-LABEL: 'vf64'
David Greena6553932019-08-13 18:12:08 +0000150; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x double> undef, undef
151; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x double> undef, undef
152; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x double> undef, undef
153; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x double> undef, undef
154; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x double> undef, undef
155; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x double> undef, undef
156; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x double> undef, undef
157; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x double> undef, undef
158; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x double> undef, undef
David Green84cb4b22019-08-12 15:40:27 +0000159; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
160;
161 %c2 = fadd <2 x double> undef, undef
162 %d2 = fsub <2 x double> undef, undef
163 %e2 = fmul <2 x double> undef, undef
164 %c4 = fadd <4 x double> undef, undef
165 %d4 = fsub <4 x double> undef, undef
166 %e4 = fmul <4 x double> undef, undef
167 %c8 = fadd <8 x double> undef, undef
168 %d8 = fsub <8 x double> undef, undef
169 %e8 = fmul <8 x double> undef, undef
170 ret void
171}
172