[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / v8.5a-neon-frint3264-intrinsic.ll
blob1979d97952cb8f8cb714e9aff03d7f8910beacea
1 ; RUN: llc < %s -mtriple=aarch64-eabi -mattr=+v8.5a  | FileCheck %s
3 declare <2 x float> @llvm.aarch64.neon.frint32x.v2f32(<2 x float>)
4 declare <4 x float> @llvm.aarch64.neon.frint32x.v4f32(<4 x float>)
5 declare <2 x float> @llvm.aarch64.neon.frint32z.v2f32(<2 x float>)
6 declare <4 x float> @llvm.aarch64.neon.frint32z.v4f32(<4 x float>)
8 define dso_local <2 x float> @t_vrnd32x_f32(<2 x float> %a) {
9 ; CHECK-LABEL: t_vrnd32x_f32:
10 ; CHECK:         frint32x v0.2s, v0.2s
11 ; CHECK-NEXT:    ret
12 entry:
13   %val = tail call <2 x float> @llvm.aarch64.neon.frint32x.v2f32(<2 x float> %a)
14   ret <2 x float> %val
17 define dso_local <4 x float> @t_vrnd32xq_f32(<4 x float> %a) {
18 ; CHECK-LABEL: t_vrnd32xq_f32:
19 ; CHECK:         frint32x v0.4s, v0.4s
20 ; CHECK-NEXT:    ret
21 entry:
22   %val = tail call <4 x float> @llvm.aarch64.neon.frint32x.v4f32(<4 x float> %a)
23   ret <4 x float> %val
26 define dso_local <2 x float> @t_vrnd32z_f32(<2 x float> %a) {
27 ; CHECK-LABEL: t_vrnd32z_f32:
28 ; CHECK:         frint32z v0.2s, v0.2s
29 ; CHECK-NEXT:    ret
30 entry:
31   %val = tail call <2 x float> @llvm.aarch64.neon.frint32z.v2f32(<2 x float> %a)
32   ret <2 x float> %val
35 define dso_local <4 x float> @t_vrnd32zq_f32(<4 x float> %a) {
36 ; CHECK-LABEL: t_vrnd32zq_f32:
37 ; CHECK:         frint32z v0.4s, v0.4s
38 ; CHECK-NEXT:    ret
39 entry:
40   %val = tail call <4 x float> @llvm.aarch64.neon.frint32z.v4f32(<4 x float> %a)
41   ret <4 x float> %val
44 declare <2 x float> @llvm.aarch64.neon.frint64x.v2f32(<2 x float>)
45 declare <4 x float> @llvm.aarch64.neon.frint64x.v4f32(<4 x float>)
46 declare <2 x float> @llvm.aarch64.neon.frint64z.v2f32(<2 x float>)
47 declare <4 x float> @llvm.aarch64.neon.frint64z.v4f32(<4 x float>)
49 define dso_local <2 x float> @t_vrnd64x_f32(<2 x float> %a) {
50 ; CHECK-LABEL: t_vrnd64x_f32:
51 ; CHECK:         frint64x v0.2s, v0.2s
52 ; CHECK-NEXT:    ret
53 entry:
54   %val = tail call <2 x float> @llvm.aarch64.neon.frint64x.v2f32(<2 x float> %a)
55   ret <2 x float> %val
58 define dso_local <4 x float> @t_vrnd64xq_f32(<4 x float> %a) {
59 ; CHECK-LABEL: t_vrnd64xq_f32:
60 ; CHECK:         frint64x v0.4s, v0.4s
61 ; CHECK-NEXT:    ret
62 entry:
63   %val = tail call <4 x float> @llvm.aarch64.neon.frint64x.v4f32(<4 x float> %a)
64   ret <4 x float> %val
67 define dso_local <2 x float> @t_vrnd64z_f32(<2 x float> %a) {
68 ; CHECK-LABEL: t_vrnd64z_f32:
69 ; CHECK:         frint64z v0.2s, v0.2s
70 ; CHECK-NEXT:    ret
71 entry:
72   %val = tail call <2 x float> @llvm.aarch64.neon.frint64z.v2f32(<2 x float> %a)
73   ret <2 x float> %val
76 define dso_local <4 x float> @t_vrnd64zq_f32(<4 x float> %a) {
77 ; CHECK-LABEL: t_vrnd64zq_f32:
78 ; CHECK:         frint64z v0.4s, v0.4s
79 ; CHECK-NEXT:    ret
80 entry:
81   %val = tail call <4 x float> @llvm.aarch64.neon.frint64z.v4f32(<4 x float> %a)
82   ret <4 x float> %val
85 declare <1 x double> @llvm.aarch64.neon.frint32x.v1f64(<1 x double>)
86 declare <2 x double> @llvm.aarch64.neon.frint32x.v2f64(<2 x double>)
87 declare <1 x double> @llvm.aarch64.neon.frint32z.v1f64(<1 x double>)
88 declare <2 x double> @llvm.aarch64.neon.frint32z.v2f64(<2 x double>)
90 define dso_local <1 x double> @t_vrnd32x_f64(<1 x double> %a) {
91 ; CHECK-LABEL: t_vrnd32x_f64:
92 ; CHECK:         frint32x d0, d0
93 ; CHECK-NEXT:    ret
94 entry:
95   %val = tail call <1 x double> @llvm.aarch64.neon.frint32x.v1f64(<1 x double> %a)
96   ret <1 x double> %val
99 define dso_local <2 x double> @t_vrnd32xq_f64(<2 x double> %a) {
100 ; CHECK-LABEL: t_vrnd32xq_f64:
101 ; CHECK:         frint32x v0.2d, v0.2d
102 ; CHECK-NEXT:    ret
103 entry:
104   %val = tail call <2 x double> @llvm.aarch64.neon.frint32x.v2f64(<2 x double> %a)
105   ret <2 x double> %val
108 define dso_local <1 x double> @t_vrnd32z_f64(<1 x double> %a) {
109 ; CHECK-LABEL: t_vrnd32z_f64:
110 ; CHECK:         frint32z d0, d0
111 ; CHECK-NEXT:    ret
112 entry:
113   %val = tail call <1 x double> @llvm.aarch64.neon.frint32z.v1f64(<1 x double> %a)
114   ret <1 x double> %val
117 define dso_local <2 x double> @t_vrnd32zq_f64(<2 x double> %a) {
118 ; CHECK-LABEL: t_vrnd32zq_f64:
119 ; CHECK:         frint32z v0.2d, v0.2d
120 ; CHECK-NEXT:    ret
121 entry:
122   %val = tail call <2 x double> @llvm.aarch64.neon.frint32z.v2f64(<2 x double> %a)
123   ret <2 x double> %val
126 declare <1 x double> @llvm.aarch64.neon.frint64x.v1f64(<1 x double>)
127 declare <2 x double> @llvm.aarch64.neon.frint64x.v2f64(<2 x double>)
128 declare <1 x double> @llvm.aarch64.neon.frint64z.v1f64(<1 x double>)
129 declare <2 x double> @llvm.aarch64.neon.frint64z.v2f64(<2 x double>)
131 define dso_local <1 x double> @t_vrnd64x_f64(<1 x double> %a) {
132 ; CHECK-LABEL: t_vrnd64x_f64:
133 ; CHECK:         frint64x d0, d0
134 ; CHECK-NEXT:    ret
135 entry:
136   %val = tail call <1 x double> @llvm.aarch64.neon.frint64x.v1f64(<1 x double> %a)
137   ret <1 x double> %val
140 define dso_local <2 x double> @t_vrnd64xq_f64(<2 x double> %a) {
141 ; CHECK-LABEL: t_vrnd64xq_f64:
142 ; CHECK:         frint64x v0.2d, v0.2d
143 ; CHECK-NEXT:    ret
144 entry:
145   %val = tail call <2 x double> @llvm.aarch64.neon.frint64x.v2f64(<2 x double> %a)
146   ret <2 x double> %val
149 define dso_local <1 x double> @t_vrnd64z_f64(<1 x double> %a) {
150 ; CHECK-LABEL: t_vrnd64z_f64:
151 ; CHECK:         frint64z d0, d0
152 ; CHECK-NEXT:    ret
153 entry:
154   %val = tail call <1 x double> @llvm.aarch64.neon.frint64z.v1f64(<1 x double> %a)
155   ret <1 x double> %val
158 define dso_local <2 x double> @t_vrnd64zq_f64(<2 x double> %a) {
159 ; CHECK-LABEL: t_vrnd64zq_f64:
160 ; CHECK:         frint64z v0.2d, v0.2d
161 ; CHECK-NEXT:    ret
162 entry:
163   %val = tail call <2 x double> @llvm.aarch64.neon.frint64z.v2f64(<2 x double> %a)
164   ret <2 x double> %val