Skip to content

Commit aa9e02c

Browse files
committed
[AArch64] Add lrint and lround costmodel tests. NFC
This adds some costmodel tests for lrint, llrint, lround and llround.
1 parent 0d1e5ab commit aa9e02c

File tree

2 files changed

+472
-0
lines changed

2 files changed

+472
-0
lines changed
Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2+
; RUN: opt -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 %s | FileCheck --check-prefixes=CHECK,CHECK-NOFP16 %s
3+
; RUN: opt -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+fullfp16 %s | FileCheck --check-prefixes=CHECK,CHECK-FP16 %s
4+
5+
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
6+
target triple = "aarch64-linux-gnu"
7+
8+
define void @lrint() {
9+
; CHECK-LABEL: 'lrint'
10+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lrint.i64.f32(float poison)
11+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lrint.v2i64.v2f32(<2 x float> poison)
12+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lrint.v4i64.v4f32(<4 x float> poison)
13+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lrint.v8i64.v8f32(<8 x float> poison)
14+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lrint.v16i64.v16f32(<16 x float> poison)
15+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %6 = call i64 @llvm.lrint.i64.f64(double poison)
16+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %7 = call <2 x i64> @llvm.lrint.v2i64.v2f64(<2 x double> poison)
17+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %8 = call <4 x i64> @llvm.lrint.v4i64.v4f64(<4 x double> poison)
18+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %9 = call <8 x i64> @llvm.lrint.v8i64.v8f64(<8 x double> poison)
19+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %10 = call <16 x i64> @llvm.lrint.v16i64.v16f64(<16 x double> poison)
20+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
21+
;
22+
call i64 @llvm.lrint(float poison)
23+
call <2 x i64> @llvm.lrint(<2 x float> poison)
24+
call <4 x i64> @llvm.lrint(<4 x float> poison)
25+
call <8 x i64> @llvm.lrint(<8 x float> poison)
26+
call <16 x i64> @llvm.lrint(<16 x float> poison)
27+
call i64 @llvm.lrint(double poison)
28+
call <2 x i64> @llvm.lrint(<2 x double> poison)
29+
call <4 x i64> @llvm.lrint(<4 x double> poison)
30+
call <8 x i64> @llvm.lrint(<8 x double> poison)
31+
call <16 x i64> @llvm.lrint(<16 x double> poison)
32+
ret void
33+
}
34+
35+
define void @lrint_fp16() {
36+
; CHECK-LABEL: 'lrint_fp16'
37+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lrint.i64.f16(half poison)
38+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lrint.v2i64.v2f16(<2 x half> poison)
39+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lrint.v4i64.v4f16(<4 x half> poison)
40+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lrint.v8i64.v8f16(<8 x half> poison)
41+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lrint.v16i64.v16f16(<16 x half> poison)
42+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
43+
;
44+
call i64 @llvm.lrint(half poison)
45+
call <2 x i64> @llvm.lrint(<2 x half> poison)
46+
call <4 x i64> @llvm.lrint(<4 x half> poison)
47+
call <8 x i64> @llvm.lrint(<8 x half> poison)
48+
call <16 x i64> @llvm.lrint(<16 x half> poison)
49+
ret void
50+
}
51+
52+
define void @lrint_bf16() {
53+
; CHECK-LABEL: 'lrint_bf16'
54+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lrint.i64.bf16(bfloat poison)
55+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lrint.v2i64.v2bf16(<2 x bfloat> poison)
56+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lrint.v4i64.v4bf16(<4 x bfloat> poison)
57+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lrint.v8i64.v8bf16(<8 x bfloat> poison)
58+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lrint.v16i64.v16bf16(<16 x bfloat> poison)
59+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
60+
;
61+
call i64 @llvm.lrint(bfloat poison)
62+
call <2 x i64> @llvm.lrint(<2 x bfloat> poison)
63+
call <4 x i64> @llvm.lrint(<4 x bfloat> poison)
64+
call <8 x i64> @llvm.lrint(<8 x bfloat> poison)
65+
call <16 x i64> @llvm.lrint(<16 x bfloat> poison)
66+
ret void
67+
}
68+
69+
define void @llrint() {
70+
; CHECK-LABEL: 'llrint'
71+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llrint.i64.f32(float poison)
72+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llrint.v2i64.v2f32(<2 x float> poison)
73+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llrint.v4i64.v4f32(<4 x float> poison)
74+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llrint.v8i64.v8f32(<8 x float> poison)
75+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llrint.v16i64.v16f32(<16 x float> poison)
76+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %6 = call i64 @llvm.llrint.i64.f64(double poison)
77+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %7 = call <2 x i64> @llvm.llrint.v2i64.v2f64(<2 x double> poison)
78+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %8 = call <4 x i64> @llvm.llrint.v4i64.v4f64(<4 x double> poison)
79+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %9 = call <8 x i64> @llvm.llrint.v8i64.v8f64(<8 x double> poison)
80+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %10 = call <16 x i64> @llvm.llrint.v16i64.v16f64(<16 x double> poison)
81+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
82+
;
83+
call i64 @llvm.llrint(float poison)
84+
call <2 x i64> @llvm.llrint(<2 x float> poison)
85+
call <4 x i64> @llvm.llrint(<4 x float> poison)
86+
call <8 x i64> @llvm.llrint(<8 x float> poison)
87+
call <16 x i64> @llvm.llrint(<16 x float> poison)
88+
call i64 @llvm.llrint(double poison)
89+
call <2 x i64> @llvm.llrint(<2 x double> poison)
90+
call <4 x i64> @llvm.llrint(<4 x double> poison)
91+
call <8 x i64> @llvm.llrint(<8 x double> poison)
92+
call <16 x i64> @llvm.llrint(<16 x double> poison)
93+
ret void
94+
}
95+
96+
define void @llrint_fp16() {
97+
; CHECK-LABEL: 'llrint_fp16'
98+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llrint.i64.f16(half poison)
99+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llrint.v2i64.v2f16(<2 x half> poison)
100+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llrint.v4i64.v4f16(<4 x half> poison)
101+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llrint.v8i64.v8f16(<8 x half> poison)
102+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llrint.v16i64.v16f16(<16 x half> poison)
103+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
104+
;
105+
call i64 @llvm.llrint(half poison)
106+
call <2 x i64> @llvm.llrint(<2 x half> poison)
107+
call <4 x i64> @llvm.llrint(<4 x half> poison)
108+
call <8 x i64> @llvm.llrint(<8 x half> poison)
109+
call <16 x i64> @llvm.llrint(<16 x half> poison)
110+
ret void
111+
}
112+
113+
define void @llrint_bf16() {
114+
; CHECK-LABEL: 'llrint_bf16'
115+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llrint.i64.bf16(bfloat poison)
116+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llrint.v2i64.v2bf16(<2 x bfloat> poison)
117+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llrint.v4i64.v4bf16(<4 x bfloat> poison)
118+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llrint.v8i64.v8bf16(<8 x bfloat> poison)
119+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llrint.v16i64.v16bf16(<16 x bfloat> poison)
120+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
121+
;
122+
call i64 @llvm.llrint(bfloat poison)
123+
call <2 x i64> @llvm.llrint(<2 x bfloat> poison)
124+
call <4 x i64> @llvm.llrint(<4 x bfloat> poison)
125+
call <8 x i64> @llvm.llrint(<8 x bfloat> poison)
126+
call <16 x i64> @llvm.llrint(<16 x bfloat> poison)
127+
ret void
128+
}
129+
130+
131+
define void @lround() {
132+
; CHECK-LABEL: 'lround'
133+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lround.i64.f32(float poison)
134+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lround.v2i64.v2f32(<2 x float> poison)
135+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lround.v4i64.v4f32(<4 x float> poison)
136+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lround.v8i64.v8f32(<8 x float> poison)
137+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lround.v16i64.v16f32(<16 x float> poison)
138+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %6 = call i64 @llvm.lround.i64.f64(double poison)
139+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %7 = call <2 x i64> @llvm.lround.v2i64.v2f64(<2 x double> poison)
140+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %8 = call <4 x i64> @llvm.lround.v4i64.v4f64(<4 x double> poison)
141+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %9 = call <8 x i64> @llvm.lround.v8i64.v8f64(<8 x double> poison)
142+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %10 = call <16 x i64> @llvm.lround.v16i64.v16f64(<16 x double> poison)
143+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
144+
;
145+
call i64 @llvm.lround(float poison)
146+
call <2 x i64> @llvm.lround(<2 x float> poison)
147+
call <4 x i64> @llvm.lround(<4 x float> poison)
148+
call <8 x i64> @llvm.lround(<8 x float> poison)
149+
call <16 x i64> @llvm.lround(<16 x float> poison)
150+
call i64 @llvm.lround(double poison)
151+
call <2 x i64> @llvm.lround(<2 x double> poison)
152+
call <4 x i64> @llvm.lround(<4 x double> poison)
153+
call <8 x i64> @llvm.lround(<8 x double> poison)
154+
call <16 x i64> @llvm.lround(<16 x double> poison)
155+
ret void
156+
}
157+
158+
define void @lround_fp16() {
159+
; CHECK-LABEL: 'lround_fp16'
160+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lround.i64.f16(half poison)
161+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lround.v2i64.v2f16(<2 x half> poison)
162+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lround.v4i64.v4f16(<4 x half> poison)
163+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lround.v8i64.v8f16(<8 x half> poison)
164+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lround.v16i64.v16f16(<16 x half> poison)
165+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
166+
;
167+
call i64 @llvm.lround(half poison)
168+
call <2 x i64> @llvm.lround(<2 x half> poison)
169+
call <4 x i64> @llvm.lround(<4 x half> poison)
170+
call <8 x i64> @llvm.lround(<8 x half> poison)
171+
call <16 x i64> @llvm.lround(<16 x half> poison)
172+
ret void
173+
}
174+
175+
define void @lround_bf16() {
176+
; CHECK-LABEL: 'lround_bf16'
177+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.lround.i64.bf16(bfloat poison)
178+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.lround.v2i64.v2bf16(<2 x bfloat> poison)
179+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.lround.v4i64.v4bf16(<4 x bfloat> poison)
180+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.lround.v8i64.v8bf16(<8 x bfloat> poison)
181+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.lround.v16i64.v16bf16(<16 x bfloat> poison)
182+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
183+
;
184+
call i64 @llvm.lround(bfloat poison)
185+
call <2 x i64> @llvm.lround(<2 x bfloat> poison)
186+
call <4 x i64> @llvm.lround(<4 x bfloat> poison)
187+
call <8 x i64> @llvm.lround(<8 x bfloat> poison)
188+
call <16 x i64> @llvm.lround(<16 x bfloat> poison)
189+
ret void
190+
}
191+
192+
define void @llround() {
193+
; CHECK-LABEL: 'llround'
194+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llround.i64.f32(float poison)
195+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llround.v2i64.v2f32(<2 x float> poison)
196+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llround.v4i64.v4f32(<4 x float> poison)
197+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llround.v8i64.v8f32(<8 x float> poison)
198+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llround.v16i64.v16f32(<16 x float> poison)
199+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %6 = call i64 @llvm.llround.i64.f64(double poison)
200+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %7 = call <2 x i64> @llvm.llround.v2i64.v2f64(<2 x double> poison)
201+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %8 = call <4 x i64> @llvm.llround.v4i64.v4f64(<4 x double> poison)
202+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %9 = call <8 x i64> @llvm.llround.v8i64.v8f64(<8 x double> poison)
203+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %10 = call <16 x i64> @llvm.llround.v16i64.v16f64(<16 x double> poison)
204+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
205+
;
206+
call i64 @llvm.llround(float poison)
207+
call <2 x i64> @llvm.llround(<2 x float> poison)
208+
call <4 x i64> @llvm.llround(<4 x float> poison)
209+
call <8 x i64> @llvm.llround(<8 x float> poison)
210+
call <16 x i64> @llvm.llround(<16 x float> poison)
211+
call i64 @llvm.llround(double poison)
212+
call <2 x i64> @llvm.llround(<2 x double> poison)
213+
call <4 x i64> @llvm.llround(<4 x double> poison)
214+
call <8 x i64> @llvm.llround(<8 x double> poison)
215+
call <16 x i64> @llvm.llround(<16 x double> poison)
216+
ret void
217+
}
218+
219+
define void @llround_fp16() {
220+
; CHECK-LABEL: 'llround_fp16'
221+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llround.i64.f16(half poison)
222+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llround.v2i64.v2f16(<2 x half> poison)
223+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llround.v4i64.v4f16(<4 x half> poison)
224+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llround.v8i64.v8f16(<8 x half> poison)
225+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llround.v16i64.v16f16(<16 x half> poison)
226+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
227+
;
228+
call i64 @llvm.llround(half poison)
229+
call <2 x i64> @llvm.llround(<2 x half> poison)
230+
call <4 x i64> @llvm.llround(<4 x half> poison)
231+
call <8 x i64> @llvm.llround(<8 x half> poison)
232+
call <16 x i64> @llvm.llround(<16 x half> poison)
233+
ret void
234+
}
235+
236+
define void @llround_bf16() {
237+
; CHECK-LABEL: 'llround_bf16'
238+
; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call i64 @llvm.llround.i64.bf16(bfloat poison)
239+
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:6 SizeLat:6 for: %2 = call <2 x i64> @llvm.llround.v2i64.v2bf16(<2 x bfloat> poison)
240+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:8 Lat:12 SizeLat:12 for: %3 = call <4 x i64> @llvm.llround.v4i64.v4bf16(<4 x bfloat> poison)
241+
; CHECK-NEXT: Cost Model: Found costs of RThru:24 CodeSize:16 Lat:24 SizeLat:24 for: %4 = call <8 x i64> @llvm.llround.v8i64.v8bf16(<8 x bfloat> poison)
242+
; CHECK-NEXT: Cost Model: Found costs of RThru:48 CodeSize:32 Lat:48 SizeLat:48 for: %5 = call <16 x i64> @llvm.llround.v16i64.v16bf16(<16 x bfloat> poison)
243+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
244+
;
245+
call i64 @llvm.llround(bfloat poison)
246+
call <2 x i64> @llvm.llround(<2 x bfloat> poison)
247+
call <4 x i64> @llvm.llround(<4 x bfloat> poison)
248+
call <8 x i64> @llvm.llround(<8 x bfloat> poison)
249+
call <16 x i64> @llvm.llround(<16 x bfloat> poison)
250+
ret void
251+
}
252+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
253+
; CHECK-FP16: {{.*}}
254+
; CHECK-NOFP16: {{.*}}

0 commit comments

Comments
 (0)