xref: /llvm-project/llvm/test/Analysis/CostModel/X86/fcmp-codesize.ll (revision 83552e8c72b8c41d7a07fbd4bf859ece3eb55099)
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+sse2 | FileCheck %s --check-prefixes=SSE
3; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+sse3 | FileCheck %s --check-prefixes=SSE
4; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE
5; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE
6; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE
7; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+avx | FileCheck %s --check-prefixes=AVX
8; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+avx2 | FileCheck %s --check-prefixes=AVX
9; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512
10; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX512
11;
12; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mcpu=slm | FileCheck %s --check-prefixes=SSE
13; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mcpu=goldmont | FileCheck %s --check-prefixes=SSE
14; RUN: opt < %s -mtriple=x86_64-- -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=code-size -mcpu=btver2 | FileCheck %s --check-prefixes=AVX
15
16define i32 @cmp_float_oeq(i32 %arg) {
17; SSE-LABEL: 'cmp_float_oeq'
18; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oeq float undef, undef
19; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oeq <2 x float> undef, undef
20; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oeq <4 x float> undef, undef
21; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp oeq <8 x float> undef, undef
22; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp oeq <16 x float> undef, undef
23; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oeq double undef, undef
24; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oeq <2 x double> undef, undef
25; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp oeq <4 x double> undef, undef
26; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp oeq <8 x double> undef, undef
27; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp oeq <16 x double> undef, undef
28; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
29;
30; AVX-LABEL: 'cmp_float_oeq'
31; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oeq float undef, undef
32; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oeq <2 x float> undef, undef
33; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oeq <4 x float> undef, undef
34; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp oeq <8 x float> undef, undef
35; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp oeq <16 x float> undef, undef
36; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oeq double undef, undef
37; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oeq <2 x double> undef, undef
38; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp oeq <4 x double> undef, undef
39; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp oeq <8 x double> undef, undef
40; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp oeq <16 x double> undef, undef
41; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
42;
43; AVX512-LABEL: 'cmp_float_oeq'
44; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oeq float undef, undef
45; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oeq <2 x float> undef, undef
46; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oeq <4 x float> undef, undef
47; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp oeq <8 x float> undef, undef
48; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp oeq <16 x float> undef, undef
49; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oeq double undef, undef
50; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oeq <2 x double> undef, undef
51; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp oeq <4 x double> undef, undef
52; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp oeq <8 x double> undef, undef
53; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp oeq <16 x double> undef, undef
54; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
55;
56  %F32 = fcmp oeq float undef, undef
57  %V2F32 = fcmp oeq <2 x float> undef, undef
58  %V4F32 = fcmp oeq <4 x float> undef, undef
59  %V8F32 = fcmp oeq <8 x float> undef, undef
60  %V16F32 = fcmp oeq <16 x float> undef, undef
61
62  %F64 = fcmp oeq double undef, undef
63  %V2F64 = fcmp oeq <2 x double> undef, undef
64  %V4F64 = fcmp oeq <4 x double> undef, undef
65  %V8F64 = fcmp oeq <8 x double> undef, undef
66  %V16F64 = fcmp oeq <16 x double> undef, undef
67
68  ret i32 undef
69}
70
71define i32 @cmp_float_one(i32 %arg) {
72; SSE-LABEL: 'cmp_float_one'
73; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp one float undef, undef
74; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2F32 = fcmp one <2 x float> undef, undef
75; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4F32 = fcmp one <4 x float> undef, undef
76; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V8F32 = fcmp one <8 x float> undef, undef
77; SSE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V16F32 = fcmp one <16 x float> undef, undef
78; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp one double undef, undef
79; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2F64 = fcmp one <2 x double> undef, undef
80; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V4F64 = fcmp one <4 x double> undef, undef
81; SSE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V8F64 = fcmp one <8 x double> undef, undef
82; SSE-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %V16F64 = fcmp one <16 x double> undef, undef
83; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
84;
85; AVX-LABEL: 'cmp_float_one'
86; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp one float undef, undef
87; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp one <2 x float> undef, undef
88; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp one <4 x float> undef, undef
89; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp one <8 x float> undef, undef
90; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp one <16 x float> undef, undef
91; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp one double undef, undef
92; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp one <2 x double> undef, undef
93; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp one <4 x double> undef, undef
94; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp one <8 x double> undef, undef
95; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp one <16 x double> undef, undef
96; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
97;
98; AVX512-LABEL: 'cmp_float_one'
99; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp one float undef, undef
100; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp one <2 x float> undef, undef
101; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp one <4 x float> undef, undef
102; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp one <8 x float> undef, undef
103; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp one <16 x float> undef, undef
104; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp one double undef, undef
105; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp one <2 x double> undef, undef
106; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp one <4 x double> undef, undef
107; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp one <8 x double> undef, undef
108; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp one <16 x double> undef, undef
109; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
110;
111  %F32 = fcmp one float undef, undef
112  %V2F32 = fcmp one <2 x float> undef, undef
113  %V4F32 = fcmp one <4 x float> undef, undef
114  %V8F32 = fcmp one <8 x float> undef, undef
115  %V16F32 = fcmp one <16 x float> undef, undef
116
117  %F64 = fcmp one double undef, undef
118  %V2F64 = fcmp one <2 x double> undef, undef
119  %V4F64 = fcmp one <4 x double> undef, undef
120  %V8F64 = fcmp one <8 x double> undef, undef
121  %V16F64 = fcmp one <16 x double> undef, undef
122
123  ret i32 undef
124}
125
126define i32 @cmp_float_ord(i32 %arg) {
127; SSE-LABEL: 'cmp_float_ord'
128; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ord float undef, undef
129; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ord <2 x float> undef, undef
130; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ord <4 x float> undef, undef
131; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ord <8 x float> undef, undef
132; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ord <16 x float> undef, undef
133; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ord double undef, undef
134; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ord <2 x double> undef, undef
135; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ord <4 x double> undef, undef
136; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ord <8 x double> undef, undef
137; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ord <16 x double> undef, undef
138; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
139;
140; AVX-LABEL: 'cmp_float_ord'
141; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ord float undef, undef
142; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ord <2 x float> undef, undef
143; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ord <4 x float> undef, undef
144; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ord <8 x float> undef, undef
145; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ord <16 x float> undef, undef
146; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ord double undef, undef
147; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ord <2 x double> undef, undef
148; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ord <4 x double> undef, undef
149; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ord <8 x double> undef, undef
150; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ord <16 x double> undef, undef
151; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
152;
153; AVX512-LABEL: 'cmp_float_ord'
154; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ord float undef, undef
155; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ord <2 x float> undef, undef
156; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ord <4 x float> undef, undef
157; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ord <8 x float> undef, undef
158; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ord <16 x float> undef, undef
159; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ord double undef, undef
160; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ord <2 x double> undef, undef
161; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ord <4 x double> undef, undef
162; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ord <8 x double> undef, undef
163; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ord <16 x double> undef, undef
164; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
165;
166  %F32 = fcmp ord float undef, undef
167  %V2F32 = fcmp ord <2 x float> undef, undef
168  %V4F32 = fcmp ord <4 x float> undef, undef
169  %V8F32 = fcmp ord <8 x float> undef, undef
170  %V16F32 = fcmp ord <16 x float> undef, undef
171
172  %F64 = fcmp ord double undef, undef
173  %V2F64 = fcmp ord <2 x double> undef, undef
174  %V4F64 = fcmp ord <4 x double> undef, undef
175  %V8F64 = fcmp ord <8 x double> undef, undef
176  %V16F64 = fcmp ord <16 x double> undef, undef
177
178  ret i32 undef
179}
180
181define i32 @cmp_float_oge(i32 %arg) {
182; SSE-LABEL: 'cmp_float_oge'
183; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oge float undef, undef
184; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oge <2 x float> undef, undef
185; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oge <4 x float> undef, undef
186; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp oge <8 x float> undef, undef
187; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp oge <16 x float> undef, undef
188; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oge double undef, undef
189; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oge <2 x double> undef, undef
190; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp oge <4 x double> undef, undef
191; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp oge <8 x double> undef, undef
192; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp oge <16 x double> undef, undef
193; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
194;
195; AVX-LABEL: 'cmp_float_oge'
196; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oge float undef, undef
197; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oge <2 x float> undef, undef
198; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oge <4 x float> undef, undef
199; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp oge <8 x float> undef, undef
200; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp oge <16 x float> undef, undef
201; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oge double undef, undef
202; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oge <2 x double> undef, undef
203; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp oge <4 x double> undef, undef
204; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp oge <8 x double> undef, undef
205; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp oge <16 x double> undef, undef
206; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
207;
208; AVX512-LABEL: 'cmp_float_oge'
209; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp oge float undef, undef
210; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp oge <2 x float> undef, undef
211; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp oge <4 x float> undef, undef
212; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp oge <8 x float> undef, undef
213; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp oge <16 x float> undef, undef
214; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp oge double undef, undef
215; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp oge <2 x double> undef, undef
216; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp oge <4 x double> undef, undef
217; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp oge <8 x double> undef, undef
218; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp oge <16 x double> undef, undef
219; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
220;
221  %F32 = fcmp oge float undef, undef
222  %V2F32 = fcmp oge <2 x float> undef, undef
223  %V4F32 = fcmp oge <4 x float> undef, undef
224  %V8F32 = fcmp oge <8 x float> undef, undef
225  %V16F32 = fcmp oge <16 x float> undef, undef
226
227  %F64 = fcmp oge double undef, undef
228  %V2F64 = fcmp oge <2 x double> undef, undef
229  %V4F64 = fcmp oge <4 x double> undef, undef
230  %V8F64 = fcmp oge <8 x double> undef, undef
231  %V16F64 = fcmp oge <16 x double> undef, undef
232
233  ret i32 undef
234}
235
236define i32 @cmp_float_ogt(i32 %arg) {
237; SSE-LABEL: 'cmp_float_ogt'
238; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ogt float undef, undef
239; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ogt <2 x float> undef, undef
240; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ogt <4 x float> undef, undef
241; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ogt <8 x float> undef, undef
242; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ogt <16 x float> undef, undef
243; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ogt double undef, undef
244; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ogt <2 x double> undef, undef
245; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ogt <4 x double> undef, undef
246; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ogt <8 x double> undef, undef
247; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ogt <16 x double> undef, undef
248; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
249;
250; AVX-LABEL: 'cmp_float_ogt'
251; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ogt float undef, undef
252; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ogt <2 x float> undef, undef
253; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ogt <4 x float> undef, undef
254; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ogt <8 x float> undef, undef
255; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ogt <16 x float> undef, undef
256; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ogt double undef, undef
257; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ogt <2 x double> undef, undef
258; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ogt <4 x double> undef, undef
259; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ogt <8 x double> undef, undef
260; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ogt <16 x double> undef, undef
261; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
262;
263; AVX512-LABEL: 'cmp_float_ogt'
264; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ogt float undef, undef
265; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ogt <2 x float> undef, undef
266; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ogt <4 x float> undef, undef
267; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ogt <8 x float> undef, undef
268; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ogt <16 x float> undef, undef
269; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ogt double undef, undef
270; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ogt <2 x double> undef, undef
271; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ogt <4 x double> undef, undef
272; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ogt <8 x double> undef, undef
273; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ogt <16 x double> undef, undef
274; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
275;
276  %F32 = fcmp ogt float undef, undef
277  %V2F32 = fcmp ogt <2 x float> undef, undef
278  %V4F32 = fcmp ogt <4 x float> undef, undef
279  %V8F32 = fcmp ogt <8 x float> undef, undef
280  %V16F32 = fcmp ogt <16 x float> undef, undef
281
282  %F64 = fcmp ogt double undef, undef
283  %V2F64 = fcmp ogt <2 x double> undef, undef
284  %V4F64 = fcmp ogt <4 x double> undef, undef
285  %V8F64 = fcmp ogt <8 x double> undef, undef
286  %V16F64 = fcmp ogt <16 x double> undef, undef
287
288  ret i32 undef
289}
290
291define i32 @cmp_float_ole(i32 %arg) {
292; SSE-LABEL: 'cmp_float_ole'
293; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ole float undef, undef
294; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ole <2 x float> undef, undef
295; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ole <4 x float> undef, undef
296; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ole <8 x float> undef, undef
297; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ole <16 x float> undef, undef
298; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ole double undef, undef
299; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ole <2 x double> undef, undef
300; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ole <4 x double> undef, undef
301; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ole <8 x double> undef, undef
302; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ole <16 x double> undef, undef
303; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
304;
305; AVX-LABEL: 'cmp_float_ole'
306; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ole float undef, undef
307; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ole <2 x float> undef, undef
308; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ole <4 x float> undef, undef
309; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ole <8 x float> undef, undef
310; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ole <16 x float> undef, undef
311; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ole double undef, undef
312; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ole <2 x double> undef, undef
313; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ole <4 x double> undef, undef
314; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ole <8 x double> undef, undef
315; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ole <16 x double> undef, undef
316; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
317;
318; AVX512-LABEL: 'cmp_float_ole'
319; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ole float undef, undef
320; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ole <2 x float> undef, undef
321; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ole <4 x float> undef, undef
322; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ole <8 x float> undef, undef
323; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ole <16 x float> undef, undef
324; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ole double undef, undef
325; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ole <2 x double> undef, undef
326; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ole <4 x double> undef, undef
327; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ole <8 x double> undef, undef
328; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ole <16 x double> undef, undef
329; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
330;
331  %F32 = fcmp ole float undef, undef
332  %V2F32 = fcmp ole <2 x float> undef, undef
333  %V4F32 = fcmp ole <4 x float> undef, undef
334  %V8F32 = fcmp ole <8 x float> undef, undef
335  %V16F32 = fcmp ole <16 x float> undef, undef
336
337  %F64 = fcmp ole double undef, undef
338  %V2F64 = fcmp ole <2 x double> undef, undef
339  %V4F64 = fcmp ole <4 x double> undef, undef
340  %V8F64 = fcmp ole <8 x double> undef, undef
341  %V16F64 = fcmp ole <16 x double> undef, undef
342
343  ret i32 undef
344}
345
346define i32 @cmp_float_olt(i32 %arg) {
347; SSE-LABEL: 'cmp_float_olt'
348; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp olt float undef, undef
349; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp olt <2 x float> undef, undef
350; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp olt <4 x float> undef, undef
351; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp olt <8 x float> undef, undef
352; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp olt <16 x float> undef, undef
353; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp olt double undef, undef
354; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp olt <2 x double> undef, undef
355; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp olt <4 x double> undef, undef
356; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp olt <8 x double> undef, undef
357; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp olt <16 x double> undef, undef
358; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
359;
360; AVX-LABEL: 'cmp_float_olt'
361; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp olt float undef, undef
362; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp olt <2 x float> undef, undef
363; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp olt <4 x float> undef, undef
364; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp olt <8 x float> undef, undef
365; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp olt <16 x float> undef, undef
366; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp olt double undef, undef
367; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp olt <2 x double> undef, undef
368; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp olt <4 x double> undef, undef
369; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp olt <8 x double> undef, undef
370; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp olt <16 x double> undef, undef
371; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
372;
373; AVX512-LABEL: 'cmp_float_olt'
374; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp olt float undef, undef
375; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp olt <2 x float> undef, undef
376; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp olt <4 x float> undef, undef
377; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp olt <8 x float> undef, undef
378; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp olt <16 x float> undef, undef
379; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp olt double undef, undef
380; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp olt <2 x double> undef, undef
381; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp olt <4 x double> undef, undef
382; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp olt <8 x double> undef, undef
383; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp olt <16 x double> undef, undef
384; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
385;
386  %F32 = fcmp olt float undef, undef
387  %V2F32 = fcmp olt <2 x float> undef, undef
388  %V4F32 = fcmp olt <4 x float> undef, undef
389  %V8F32 = fcmp olt <8 x float> undef, undef
390  %V16F32 = fcmp olt <16 x float> undef, undef
391
392  %F64 = fcmp olt double undef, undef
393  %V2F64 = fcmp olt <2 x double> undef, undef
394  %V4F64 = fcmp olt <4 x double> undef, undef
395  %V8F64 = fcmp olt <8 x double> undef, undef
396  %V16F64 = fcmp olt <16 x double> undef, undef
397
398  ret i32 undef
399}
400
401define i32 @cmp_float_ueq(i32 %arg) {
402; SSE-LABEL: 'cmp_float_ueq'
403; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ueq float undef, undef
404; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2F32 = fcmp ueq <2 x float> undef, undef
405; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4F32 = fcmp ueq <4 x float> undef, undef
406; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V8F32 = fcmp ueq <8 x float> undef, undef
407; SSE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V16F32 = fcmp ueq <16 x float> undef, undef
408; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ueq double undef, undef
409; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2F64 = fcmp ueq <2 x double> undef, undef
410; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V4F64 = fcmp ueq <4 x double> undef, undef
411; SSE-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V8F64 = fcmp ueq <8 x double> undef, undef
412; SSE-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %V16F64 = fcmp ueq <16 x double> undef, undef
413; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
414;
415; AVX-LABEL: 'cmp_float_ueq'
416; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ueq float undef, undef
417; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ueq <2 x float> undef, undef
418; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ueq <4 x float> undef, undef
419; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ueq <8 x float> undef, undef
420; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ueq <16 x float> undef, undef
421; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ueq double undef, undef
422; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ueq <2 x double> undef, undef
423; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ueq <4 x double> undef, undef
424; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ueq <8 x double> undef, undef
425; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ueq <16 x double> undef, undef
426; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
427;
428; AVX512-LABEL: 'cmp_float_ueq'
429; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ueq float undef, undef
430; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ueq <2 x float> undef, undef
431; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ueq <4 x float> undef, undef
432; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ueq <8 x float> undef, undef
433; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ueq <16 x float> undef, undef
434; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ueq double undef, undef
435; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ueq <2 x double> undef, undef
436; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ueq <4 x double> undef, undef
437; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ueq <8 x double> undef, undef
438; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ueq <16 x double> undef, undef
439; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
440;
441  %F32 = fcmp ueq float undef, undef
442  %V2F32 = fcmp ueq <2 x float> undef, undef
443  %V4F32 = fcmp ueq <4 x float> undef, undef
444  %V8F32 = fcmp ueq <8 x float> undef, undef
445  %V16F32 = fcmp ueq <16 x float> undef, undef
446
447  %F64 = fcmp ueq double undef, undef
448  %V2F64 = fcmp ueq <2 x double> undef, undef
449  %V4F64 = fcmp ueq <4 x double> undef, undef
450  %V8F64 = fcmp ueq <8 x double> undef, undef
451  %V16F64 = fcmp ueq <16 x double> undef, undef
452
453  ret i32 undef
454}
455
456define i32 @cmp_float_une(i32 %arg) {
457; SSE-LABEL: 'cmp_float_une'
458; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp une float undef, undef
459; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp une <2 x float> undef, undef
460; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp une <4 x float> undef, undef
461; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp une <8 x float> undef, undef
462; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp une <16 x float> undef, undef
463; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp une double undef, undef
464; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp une <2 x double> undef, undef
465; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp une <4 x double> undef, undef
466; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp une <8 x double> undef, undef
467; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp une <16 x double> undef, undef
468; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
469;
470; AVX-LABEL: 'cmp_float_une'
471; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp une float undef, undef
472; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp une <2 x float> undef, undef
473; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp une <4 x float> undef, undef
474; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp une <8 x float> undef, undef
475; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp une <16 x float> undef, undef
476; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp une double undef, undef
477; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp une <2 x double> undef, undef
478; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp une <4 x double> undef, undef
479; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp une <8 x double> undef, undef
480; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp une <16 x double> undef, undef
481; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
482;
483; AVX512-LABEL: 'cmp_float_une'
484; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp une float undef, undef
485; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp une <2 x float> undef, undef
486; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp une <4 x float> undef, undef
487; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp une <8 x float> undef, undef
488; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp une <16 x float> undef, undef
489; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp une double undef, undef
490; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp une <2 x double> undef, undef
491; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp une <4 x double> undef, undef
492; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp une <8 x double> undef, undef
493; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp une <16 x double> undef, undef
494; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
495;
496  %F32 = fcmp une float undef, undef
497  %V2F32 = fcmp une <2 x float> undef, undef
498  %V4F32 = fcmp une <4 x float> undef, undef
499  %V8F32 = fcmp une <8 x float> undef, undef
500  %V16F32 = fcmp une <16 x float> undef, undef
501
502  %F64 = fcmp une double undef, undef
503  %V2F64 = fcmp une <2 x double> undef, undef
504  %V4F64 = fcmp une <4 x double> undef, undef
505  %V8F64 = fcmp une <8 x double> undef, undef
506  %V16F64 = fcmp une <16 x double> undef, undef
507
508  ret i32 undef
509}
510
511define i32 @cmp_float_uno(i32 %arg) {
512; SSE-LABEL: 'cmp_float_uno'
513; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uno float undef, undef
514; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uno <2 x float> undef, undef
515; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uno <4 x float> undef, undef
516; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp uno <8 x float> undef, undef
517; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp uno <16 x float> undef, undef
518; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uno double undef, undef
519; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uno <2 x double> undef, undef
520; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp uno <4 x double> undef, undef
521; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp uno <8 x double> undef, undef
522; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp uno <16 x double> undef, undef
523; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
524;
525; AVX-LABEL: 'cmp_float_uno'
526; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uno float undef, undef
527; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uno <2 x float> undef, undef
528; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uno <4 x float> undef, undef
529; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp uno <8 x float> undef, undef
530; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp uno <16 x float> undef, undef
531; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uno double undef, undef
532; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uno <2 x double> undef, undef
533; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp uno <4 x double> undef, undef
534; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp uno <8 x double> undef, undef
535; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp uno <16 x double> undef, undef
536; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
537;
538; AVX512-LABEL: 'cmp_float_uno'
539; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uno float undef, undef
540; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uno <2 x float> undef, undef
541; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uno <4 x float> undef, undef
542; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp uno <8 x float> undef, undef
543; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp uno <16 x float> undef, undef
544; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uno double undef, undef
545; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uno <2 x double> undef, undef
546; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp uno <4 x double> undef, undef
547; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp uno <8 x double> undef, undef
548; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp uno <16 x double> undef, undef
549; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
550;
551  %F32 = fcmp uno float undef, undef
552  %V2F32 = fcmp uno <2 x float> undef, undef
553  %V4F32 = fcmp uno <4 x float> undef, undef
554  %V8F32 = fcmp uno <8 x float> undef, undef
555  %V16F32 = fcmp uno <16 x float> undef, undef
556
557  %F64 = fcmp uno double undef, undef
558  %V2F64 = fcmp uno <2 x double> undef, undef
559  %V4F64 = fcmp uno <4 x double> undef, undef
560  %V8F64 = fcmp uno <8 x double> undef, undef
561  %V16F64 = fcmp uno <16 x double> undef, undef
562
563  ret i32 undef
564}
565
566define i32 @cmp_float_uge(i32 %arg) {
567; SSE-LABEL: 'cmp_float_uge'
568; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uge float undef, undef
569; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uge <2 x float> undef, undef
570; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uge <4 x float> undef, undef
571; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp uge <8 x float> undef, undef
572; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp uge <16 x float> undef, undef
573; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uge double undef, undef
574; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uge <2 x double> undef, undef
575; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp uge <4 x double> undef, undef
576; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp uge <8 x double> undef, undef
577; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp uge <16 x double> undef, undef
578; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
579;
580; AVX-LABEL: 'cmp_float_uge'
581; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uge float undef, undef
582; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uge <2 x float> undef, undef
583; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uge <4 x float> undef, undef
584; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp uge <8 x float> undef, undef
585; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp uge <16 x float> undef, undef
586; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uge double undef, undef
587; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uge <2 x double> undef, undef
588; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp uge <4 x double> undef, undef
589; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp uge <8 x double> undef, undef
590; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp uge <16 x double> undef, undef
591; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
592;
593; AVX512-LABEL: 'cmp_float_uge'
594; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp uge float undef, undef
595; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp uge <2 x float> undef, undef
596; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp uge <4 x float> undef, undef
597; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp uge <8 x float> undef, undef
598; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp uge <16 x float> undef, undef
599; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp uge double undef, undef
600; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp uge <2 x double> undef, undef
601; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp uge <4 x double> undef, undef
602; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp uge <8 x double> undef, undef
603; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp uge <16 x double> undef, undef
604; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
605;
606  %F32 = fcmp uge float undef, undef
607  %V2F32 = fcmp uge <2 x float> undef, undef
608  %V4F32 = fcmp uge <4 x float> undef, undef
609  %V8F32 = fcmp uge <8 x float> undef, undef
610  %V16F32 = fcmp uge <16 x float> undef, undef
611
612  %F64 = fcmp uge double undef, undef
613  %V2F64 = fcmp uge <2 x double> undef, undef
614  %V4F64 = fcmp uge <4 x double> undef, undef
615  %V8F64 = fcmp uge <8 x double> undef, undef
616  %V16F64 = fcmp uge <16 x double> undef, undef
617
618  ret i32 undef
619}
620
621define i32 @cmp_float_ugt(i32 %arg) {
622; SSE-LABEL: 'cmp_float_ugt'
623; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ugt float undef, undef
624; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ugt <2 x float> undef, undef
625; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ugt <4 x float> undef, undef
626; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ugt <8 x float> undef, undef
627; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ugt <16 x float> undef, undef
628; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ugt double undef, undef
629; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ugt <2 x double> undef, undef
630; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ugt <4 x double> undef, undef
631; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ugt <8 x double> undef, undef
632; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ugt <16 x double> undef, undef
633; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
634;
635; AVX-LABEL: 'cmp_float_ugt'
636; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ugt float undef, undef
637; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ugt <2 x float> undef, undef
638; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ugt <4 x float> undef, undef
639; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ugt <8 x float> undef, undef
640; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ugt <16 x float> undef, undef
641; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ugt double undef, undef
642; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ugt <2 x double> undef, undef
643; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ugt <4 x double> undef, undef
644; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ugt <8 x double> undef, undef
645; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ugt <16 x double> undef, undef
646; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
647;
648; AVX512-LABEL: 'cmp_float_ugt'
649; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ugt float undef, undef
650; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ugt <2 x float> undef, undef
651; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ugt <4 x float> undef, undef
652; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ugt <8 x float> undef, undef
653; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ugt <16 x float> undef, undef
654; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ugt double undef, undef
655; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ugt <2 x double> undef, undef
656; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ugt <4 x double> undef, undef
657; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ugt <8 x double> undef, undef
658; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ugt <16 x double> undef, undef
659; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
660;
661  %F32 = fcmp ugt float undef, undef
662  %V2F32 = fcmp ugt <2 x float> undef, undef
663  %V4F32 = fcmp ugt <4 x float> undef, undef
664  %V8F32 = fcmp ugt <8 x float> undef, undef
665  %V16F32 = fcmp ugt <16 x float> undef, undef
666
667  %F64 = fcmp ugt double undef, undef
668  %V2F64 = fcmp ugt <2 x double> undef, undef
669  %V4F64 = fcmp ugt <4 x double> undef, undef
670  %V8F64 = fcmp ugt <8 x double> undef, undef
671  %V16F64 = fcmp ugt <16 x double> undef, undef
672
673  ret i32 undef
674}
675
676define i32 @cmp_float_ule(i32 %arg) {
677; SSE-LABEL: 'cmp_float_ule'
678; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ule float undef, undef
679; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ule <2 x float> undef, undef
680; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ule <4 x float> undef, undef
681; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ule <8 x float> undef, undef
682; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ule <16 x float> undef, undef
683; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ule double undef, undef
684; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ule <2 x double> undef, undef
685; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ule <4 x double> undef, undef
686; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ule <8 x double> undef, undef
687; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ule <16 x double> undef, undef
688; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
689;
690; AVX-LABEL: 'cmp_float_ule'
691; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ule float undef, undef
692; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ule <2 x float> undef, undef
693; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ule <4 x float> undef, undef
694; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ule <8 x float> undef, undef
695; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ule <16 x float> undef, undef
696; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ule double undef, undef
697; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ule <2 x double> undef, undef
698; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ule <4 x double> undef, undef
699; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ule <8 x double> undef, undef
700; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ule <16 x double> undef, undef
701; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
702;
703; AVX512-LABEL: 'cmp_float_ule'
704; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ule float undef, undef
705; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ule <2 x float> undef, undef
706; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ule <4 x float> undef, undef
707; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ule <8 x float> undef, undef
708; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ule <16 x float> undef, undef
709; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ule double undef, undef
710; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ule <2 x double> undef, undef
711; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ule <4 x double> undef, undef
712; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ule <8 x double> undef, undef
713; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ule <16 x double> undef, undef
714; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
715;
716  %F32 = fcmp ule float undef, undef
717  %V2F32 = fcmp ule <2 x float> undef, undef
718  %V4F32 = fcmp ule <4 x float> undef, undef
719  %V8F32 = fcmp ule <8 x float> undef, undef
720  %V16F32 = fcmp ule <16 x float> undef, undef
721
722  %F64 = fcmp ule double undef, undef
723  %V2F64 = fcmp ule <2 x double> undef, undef
724  %V4F64 = fcmp ule <4 x double> undef, undef
725  %V8F64 = fcmp ule <8 x double> undef, undef
726  %V16F64 = fcmp ule <16 x double> undef, undef
727
728  ret i32 undef
729}
730
731define i32 @cmp_float_ult(i32 %arg) {
732; SSE-LABEL: 'cmp_float_ult'
733; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ult float undef, undef
734; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ult <2 x float> undef, undef
735; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ult <4 x float> undef, undef
736; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp ult <8 x float> undef, undef
737; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp ult <16 x float> undef, undef
738; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ult double undef, undef
739; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ult <2 x double> undef, undef
740; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp ult <4 x double> undef, undef
741; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp ult <8 x double> undef, undef
742; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp ult <16 x double> undef, undef
743; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
744;
745; AVX-LABEL: 'cmp_float_ult'
746; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ult float undef, undef
747; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ult <2 x float> undef, undef
748; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ult <4 x float> undef, undef
749; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ult <8 x float> undef, undef
750; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp ult <16 x float> undef, undef
751; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ult double undef, undef
752; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ult <2 x double> undef, undef
753; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ult <4 x double> undef, undef
754; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp ult <8 x double> undef, undef
755; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp ult <16 x double> undef, undef
756; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
757;
758; AVX512-LABEL: 'cmp_float_ult'
759; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp ult float undef, undef
760; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp ult <2 x float> undef, undef
761; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp ult <4 x float> undef, undef
762; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp ult <8 x float> undef, undef
763; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp ult <16 x float> undef, undef
764; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp ult double undef, undef
765; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp ult <2 x double> undef, undef
766; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp ult <4 x double> undef, undef
767; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp ult <8 x double> undef, undef
768; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp ult <16 x double> undef, undef
769; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
770;
771  %F32 = fcmp ult float undef, undef
772  %V2F32 = fcmp ult <2 x float> undef, undef
773  %V4F32 = fcmp ult <4 x float> undef, undef
774  %V8F32 = fcmp ult <8 x float> undef, undef
775  %V16F32 = fcmp ult <16 x float> undef, undef
776
777  %F64 = fcmp ult double undef, undef
778  %V2F64 = fcmp ult <2 x double> undef, undef
779  %V4F64 = fcmp ult <4 x double> undef, undef
780  %V8F64 = fcmp ult <8 x double> undef, undef
781  %V16F64 = fcmp ult <16 x double> undef, undef
782
783  ret i32 undef
784}
785
786define i32 @cmp_float_false(i32 %arg) {
787; SSE-LABEL: 'cmp_float_false'
788; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp false float undef, undef
789; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp false <2 x float> undef, undef
790; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp false <4 x float> undef, undef
791; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp false <8 x float> undef, undef
792; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp false <16 x float> undef, undef
793; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp false double undef, undef
794; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp false <2 x double> undef, undef
795; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp false <4 x double> undef, undef
796; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp false <8 x double> undef, undef
797; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp false <16 x double> undef, undef
798; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
799;
800; AVX-LABEL: 'cmp_float_false'
801; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp false float undef, undef
802; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp false <2 x float> undef, undef
803; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp false <4 x float> undef, undef
804; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp false <8 x float> undef, undef
805; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp false <16 x float> undef, undef
806; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp false double undef, undef
807; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp false <2 x double> undef, undef
808; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp false <4 x double> undef, undef
809; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp false <8 x double> undef, undef
810; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp false <16 x double> undef, undef
811; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
812;
813; AVX512-LABEL: 'cmp_float_false'
814; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp false float undef, undef
815; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp false <2 x float> undef, undef
816; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp false <4 x float> undef, undef
817; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp false <8 x float> undef, undef
818; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp false <16 x float> undef, undef
819; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp false double undef, undef
820; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp false <2 x double> undef, undef
821; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp false <4 x double> undef, undef
822; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp false <8 x double> undef, undef
823; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp false <16 x double> undef, undef
824; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
825;
826  %F32 = fcmp false float undef, undef
827  %V2F32 = fcmp false <2 x float> undef, undef
828  %V4F32 = fcmp false <4 x float> undef, undef
829  %V8F32 = fcmp false <8 x float> undef, undef
830  %V16F32 = fcmp false <16 x float> undef, undef
831
832  %F64 = fcmp false double undef, undef
833  %V2F64 = fcmp false <2 x double> undef, undef
834  %V4F64 = fcmp false <4 x double> undef, undef
835  %V8F64 = fcmp false <8 x double> undef, undef
836  %V16F64 = fcmp false <16 x double> undef, undef
837
838  ret i32 undef
839}
840
841define i32 @cmp_float_true(i32 %arg) {
842; SSE-LABEL: 'cmp_float_true'
843; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp true float undef, undef
844; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp true <2 x float> undef, undef
845; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp true <4 x float> undef, undef
846; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F32 = fcmp true <8 x float> undef, undef
847; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F32 = fcmp true <16 x float> undef, undef
848; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp true double undef, undef
849; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp true <2 x double> undef, undef
850; SSE-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4F64 = fcmp true <4 x double> undef, undef
851; SSE-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V8F64 = fcmp true <8 x double> undef, undef
852; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16F64 = fcmp true <16 x double> undef, undef
853; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
854;
855; AVX-LABEL: 'cmp_float_true'
856; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp true float undef, undef
857; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp true <2 x float> undef, undef
858; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp true <4 x float> undef, undef
859; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp true <8 x float> undef, undef
860; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F32 = fcmp true <16 x float> undef, undef
861; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp true double undef, undef
862; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp true <2 x double> undef, undef
863; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp true <4 x double> undef, undef
864; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8F64 = fcmp true <8 x double> undef, undef
865; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16F64 = fcmp true <16 x double> undef, undef
866; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
867;
868; AVX512-LABEL: 'cmp_float_true'
869; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F32 = fcmp true float undef, undef
870; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F32 = fcmp true <2 x float> undef, undef
871; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F32 = fcmp true <4 x float> undef, undef
872; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F32 = fcmp true <8 x float> undef, undef
873; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16F32 = fcmp true <16 x float> undef, undef
874; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %F64 = fcmp true double undef, undef
875; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2F64 = fcmp true <2 x double> undef, undef
876; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4F64 = fcmp true <4 x double> undef, undef
877; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8F64 = fcmp true <8 x double> undef, undef
878; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V16F64 = fcmp true <16 x double> undef, undef
879; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
880;
881  %F32 = fcmp true float undef, undef
882  %V2F32 = fcmp true <2 x float> undef, undef
883  %V4F32 = fcmp true <4 x float> undef, undef
884  %V8F32 = fcmp true <8 x float> undef, undef
885  %V16F32 = fcmp true <16 x float> undef, undef
886
887  %F64 = fcmp true double undef, undef
888  %V2F64 = fcmp true <2 x double> undef, undef
889  %V4F64 = fcmp true <4 x double> undef, undef
890  %V8F64 = fcmp true <8 x double> undef, undef
891  %V16F64 = fcmp true <16 x double> undef, undef
892
893  ret i32 undef
894}
895