1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2 ; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FUSED,SLOWF32 %s
3 ; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FASTF32,GFX9SLOW %s
4 ; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=fast < %s | FileCheck -check-prefixes=FUSED,SLOWF32,GFX9FAST %s
5 ; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1030 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FUSED,FASTF32 %s
7 ; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FUSED-SIZE,SLOWF32-SIZE %s
8 ; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FASTF32-SIZE,GFX9SLOW-SIZE %s
9 ; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=fast < %s | FileCheck -check-prefixes=FUSED-SIZE,SLOWF32-SIZE,GFX9FAST-SIZE %s
10 ; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1030 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FUSED-SIZE,FASTF32-SIZE %s
13 target triple = "amdgcn--"
15 define void @fmul_fadd_f32() #0 {
16 ; SLOWF32-LABEL: 'fmul_fadd_f32'
17 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32 = fmul float undef, undef
18 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef
19 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef
20 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef
21 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = fmul <2 x float> undef, undef
22 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef
23 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32_2 = fmul float undef, undef
24 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef
25 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef
26 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef
27 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_2 = fmul <2 x float> undef, undef
28 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef
29 ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
31 ; FASTF32-LABEL: 'fmul_fadd_f32'
32 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = fmul float undef, undef
33 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef
34 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef
35 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef
36 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32 = fmul <2 x float> undef, undef
37 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef
38 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32_2 = fmul float undef, undef
39 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef
40 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef
41 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef
42 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_2 = fmul <2 x float> undef, undef
43 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef
44 ; FASTF32-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
46 ; SLOWF32-SIZE-LABEL: 'fmul_fadd_f32'
47 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32 = fmul float undef, undef
48 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef
49 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef
50 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef
51 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = fmul <2 x float> undef, undef
52 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef
53 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32_2 = fmul float undef, undef
54 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef
55 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef
56 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef
57 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_2 = fmul <2 x float> undef, undef
58 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef
59 ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
61 ; FASTF32-SIZE-LABEL: 'fmul_fadd_f32'
62 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = fmul float undef, undef
63 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef
64 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef
65 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef
66 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32 = fmul <2 x float> undef, undef
67 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef
68 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32_2 = fmul float undef, undef
69 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef
70 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef
71 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef
72 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_2 = fmul <2 x float> undef, undef
73 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef
74 ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
76 %f32 = fmul float undef, undef
77 %f32add = fadd float %f32, undef
79 %f32c = fmul contract float undef, undef
80 %f32cadd = fadd contract float %f32c, undef
82 %v2f32 = fmul <2 x float> undef, undef
83 %v2f32add = fadd <2 x float> %v2f32, undef
85 %f32_2 = fmul float undef, undef
86 %f32sub = fsub float %f32_2, undef
88 %f32c_2 = fmul contract float undef, undef
89 %f32csub = fsub contract float %f32c_2, undef
91 %v2f32_2 = fmul <2 x float> undef, undef
92 %v2f32sub = fsub <2 x float> %v2f32_2, undef
96 define void @fmul_fadd_f16() #0 {
97 ; FUSED-LABEL: 'fmul_fadd_f16'
98 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16 = fmul half undef, undef
99 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef
100 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef
101 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef
102 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = fmul <2 x half> undef, undef
103 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef
104 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16_2 = fmul half undef, undef
105 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef
106 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef
107 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef
108 ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_2 = fmul <2 x half> undef, undef
109 ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef
110 ; FUSED-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
112 ; GFX9SLOW-LABEL: 'fmul_fadd_f16'
113 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = fmul half undef, undef
114 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef
115 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef
116 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef
117 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16 = fmul <2 x half> undef, undef
118 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef
119 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16_2 = fmul half undef, undef
120 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef
121 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef
122 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef
123 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_2 = fmul <2 x half> undef, undef
124 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef
125 ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
127 ; FUSED-SIZE-LABEL: 'fmul_fadd_f16'
128 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16 = fmul half undef, undef
129 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef
130 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef
131 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef
132 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = fmul <2 x half> undef, undef
133 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef
134 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16_2 = fmul half undef, undef
135 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef
136 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef
137 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef
138 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_2 = fmul <2 x half> undef, undef
139 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef
140 ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
142 ; GFX9SLOW-SIZE-LABEL: 'fmul_fadd_f16'
143 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = fmul half undef, undef
144 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef
145 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef
146 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef
147 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16 = fmul <2 x half> undef, undef
148 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef
149 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16_2 = fmul half undef, undef
150 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef
151 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef
152 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef
153 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_2 = fmul <2 x half> undef, undef
154 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef
155 ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
157 %f16 = fmul half undef, undef
158 %f16add = fadd half %f16, undef
160 %f16c = fmul contract half undef, undef
161 %f15cadd = fadd contract half %f16c, undef
163 %v2f16 = fmul <2 x half> undef, undef
164 %v2f16add = fadd <2 x half> %v2f16, undef
166 %f16_2 = fmul half undef, undef
167 %f16sub = fsub half %f16_2, undef
169 %f16c_2 = fmul contract half undef, undef
170 %f15csub = fsub contract half %f16c_2, undef
172 %v2f16_2 = fmul <2 x half> undef, undef
173 %v2f16sub = fsub <2 x half> %v2f16_2, undef
177 define void @fmul_fadd_f64() #0 {
178 ; SLOWF64-LABEL: 'fmul_fadd_f64'
179 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64 = fmul double undef, undef
180 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64add = fadd double %f64, undef
181 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef
182 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64cadd = fadd contract double %f64c, undef
183 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64 = fmul <2 x double> undef, undef
184 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef
185 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64_2 = fmul double undef, undef
186 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64sub = fsub double %f64_2, undef
187 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef
188 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64csub = fsub contract double %f64c_2, undef
189 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64_2 = fmul <2 x double> undef, undef
190 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef
191 ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
193 ; GFX9FAST-LABEL: 'fmul_fadd_f64'
194 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64 = fmul double undef, undef
195 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64add = fadd double %f64, undef
196 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef
197 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64cadd = fadd contract double %f64c, undef
198 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = fmul <2 x double> undef, undef
199 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef
200 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64_2 = fmul double undef, undef
201 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64sub = fsub double %f64_2, undef
202 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef
203 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64csub = fsub contract double %f64c_2, undef
204 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_2 = fmul <2 x double> undef, undef
205 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef
206 ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
208 ; SLOWF64-SIZE-LABEL: 'fmul_fadd_f64'
209 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64 = fmul double undef, undef
210 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64add = fadd double %f64, undef
211 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef
212 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64cadd = fadd contract double %f64c, undef
213 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64 = fmul <2 x double> undef, undef
214 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef
215 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64_2 = fmul double undef, undef
216 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64sub = fsub double %f64_2, undef
217 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef
218 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64csub = fsub contract double %f64c_2, undef
219 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_2 = fmul <2 x double> undef, undef
220 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef
221 ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
223 ; GFX9FAST-SIZE-LABEL: 'fmul_fadd_f64'
224 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64 = fmul double undef, undef
225 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64add = fadd double %f64, undef
226 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef
227 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64cadd = fadd contract double %f64c, undef
228 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = fmul <2 x double> undef, undef
229 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef
230 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64_2 = fmul double undef, undef
231 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64sub = fsub double %f64_2, undef
232 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef
233 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64csub = fsub contract double %f64c_2, undef
234 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_2 = fmul <2 x double> undef, undef
235 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef
236 ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
238 %f64 = fmul double undef, undef
239 %f64add = fadd double %f64, undef
241 %f64c = fmul contract double undef, undef
242 %f64cadd = fadd contract double %f64c, undef
244 %v2f64 = fmul <2 x double> undef, undef
245 %v2f64add = fadd <2 x double> %v2f64, undef
247 %f64_2 = fmul double undef, undef
248 %f64sub = fsub double %f64_2, undef
250 %f64c_2 = fmul contract double undef, undef
251 %f64csub = fsub contract double %f64c_2, undef
253 %v2f64_2 = fmul <2 x double> undef, undef
254 %v2f64sub = fsub <2 x double> %v2f64_2, undef
258 attributes #0 = { nounwind }