xref: /llvm-project/llvm/test/CodeGen/ARM/inlineasm-fp-half.ll (revision 9ee4fe63bc0ad4c685760272e464c1591bfc16ea)
1ff4027d1SArchibald Elliott; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9ee4fe63SArchibald Elliott
320b2d118SArchibald Elliott; No FP16/BF16
4*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=NO-FP16-SOFTFP
5*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=NO-FP16-SOFTFP
6*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=NO-FP16-SOFTFP
7*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=NO-FP16-SOFTFP
8*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=NO-FP16-HARD
9*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=NO-FP16-HARD
10*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=NO-FP16-HARD
11*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,-fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=NO-FP16-HARD
12ff4027d1SArchibald Elliott
1320b2d118SArchibald Elliott; With FP16, Without BF16
14*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=FP16-SOFTFP
15*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=FP16-SOFTFP
16*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=FP16-SOFTFP
17*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=FP16-SOFTFP
18*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=FP16-HARD
19*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,-neon %s -o - | FileCheck %s --check-prefix=FP16-HARD
20*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=FP16-HARD
21*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,+fullfp16,-bf16,+neon %s -o - | FileCheck %s --check-prefix=FP16-HARD
22ff4027d1SArchibald Elliott
2320b2d118SArchibald Elliott; With FP16/BF16
24*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,-neon %s -o - | FileCheck %s --check-prefix=BF16-SOFTFP
25*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,-neon %s -o - | FileCheck %s --check-prefix=BF16-SOFTFP
26*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabi     -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,+neon %s -o - | FileCheck %s --check-prefix=SIMD-BF16-SOFTFP
27*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabi   -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,+neon %s -o - | FileCheck %s --check-prefix=SIMD-BF16-SOFTFP
28*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,-neon %s -o - | FileCheck %s --check-prefix=BF16-HARD
29*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,-neon %s -o - | FileCheck %s --check-prefix=BF16-HARD
30*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=arm-none-eabihf   -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,+neon %s -o - | FileCheck %s --check-prefix=SIMD-BF16-HARD
31*9ee4fe63SArchibald Elliott; RUN: llc -mtriple=thumb-none-eabihf -mattr=+armv8-a,+fp-armv8,+fullfp16,+bf16,+neon %s -o - | FileCheck %s --check-prefix=SIMD-BF16-HARD
3220b2d118SArchibald Elliott
3320b2d118SArchibald Elliott; This test ensures that we can use `w` and `t` constraints to allocate
3420b2d118SArchibald Elliott; S-registers for 16-bit FP inputs and outputs for inline assembly, with either
3520b2d118SArchibald Elliott; the softfp or hard float ABIs. (With the soft abi, no S-regs are available).
3620b2d118SArchibald Elliott
3720b2d118SArchibald Elliottdefine half @half_t(half %x) nounwind {
3820b2d118SArchibald Elliott; NO-FP16-SOFTFP-LABEL: half_t:
3920b2d118SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
4020b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
4120b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
4220b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
4320b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
4420b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
4520b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
4620b2d118SArchibald Elliott;
4720b2d118SArchibald Elliott; NO-FP16-HARD-LABEL: half_t:
4820b2d118SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
4920b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
5020b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
5120b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
5220b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
5320b2d118SArchibald Elliott;
5420b2d118SArchibald Elliott; FP16-SOFTFP-LABEL: half_t:
5520b2d118SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
5620b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 s0, r0
57*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 r0, s0
58*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
5920b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
6020b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
6120b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
6220b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
6320b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
6420b2d118SArchibald Elliott;
6520b2d118SArchibald Elliott; FP16-HARD-LABEL: half_t:
6620b2d118SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
67*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov.f16 r0, s0
68*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov s0, r0
6920b2d118SArchibald Elliott; FP16-HARD-NEXT:    @APP
7020b2d118SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
7120b2d118SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
7220b2d118SArchibald Elliott; FP16-HARD-NEXT:    bx lr
73*9ee4fe63SArchibald Elliott;
74*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: half_t:
75*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
76*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
77*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
78*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
79*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
80*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
81*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
82*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
83*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
84*9ee4fe63SArchibald Elliott;
85*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: half_t:
86*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
87*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
88*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
89*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
90*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
91*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
92*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
93*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
94*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
95*9ee4fe63SArchibald Elliott;
96*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: half_t:
97*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
98*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f16 r0, s0
99*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov s0, r0
100*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
101*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
102*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
103*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
104*9ee4fe63SArchibald Elliott;
105*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: half_t:
106*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
107*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
108*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
109*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
110*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
111*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
112*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
113ff4027d1SArchibald Elliottentry:
11420b2d118SArchibald Elliott  %0 = tail call half asm "vmov $0, $1", "=t,t"(half %x)
115ff4027d1SArchibald Elliott  ret half %0
116ff4027d1SArchibald Elliott}
117ff4027d1SArchibald Elliott
11820b2d118SArchibald Elliottdefine half @half_w(half %x) nounwind {
11920b2d118SArchibald Elliott; NO-FP16-SOFTFP-LABEL: half_w:
12020b2d118SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
12120b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
12220b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
12320b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
12420b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
12520b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
12620b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
12720b2d118SArchibald Elliott;
12820b2d118SArchibald Elliott; NO-FP16-HARD-LABEL: half_w:
12920b2d118SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
13020b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
13120b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
13220b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
13320b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
13420b2d118SArchibald Elliott;
13520b2d118SArchibald Elliott; FP16-SOFTFP-LABEL: half_w:
13620b2d118SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
13720b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 s0, r0
138*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 r0, s0
139*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
14020b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
14120b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
14220b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
14320b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
14420b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
14520b2d118SArchibald Elliott;
14620b2d118SArchibald Elliott; FP16-HARD-LABEL: half_w:
14720b2d118SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
148*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov.f16 r0, s0
149*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov s0, r0
15020b2d118SArchibald Elliott; FP16-HARD-NEXT:    @APP
15120b2d118SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
15220b2d118SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
15320b2d118SArchibald Elliott; FP16-HARD-NEXT:    bx lr
154*9ee4fe63SArchibald Elliott;
155*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: half_w:
156*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
157*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
158*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
159*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
160*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
161*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
162*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
163*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
164*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
165*9ee4fe63SArchibald Elliott;
166*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: half_w:
167*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
168*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
169*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
170*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
171*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
172*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
173*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
174*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
175*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
176*9ee4fe63SArchibald Elliott;
177*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: half_w:
178*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
179*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f16 r0, s0
180*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov s0, r0
181*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
182*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
183*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
184*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
185*9ee4fe63SArchibald Elliott;
186*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: half_w:
187*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
188*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
189*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
190*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
191*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
192*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
193*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
1947d15212bSArchibald Elliottentry:
19520b2d118SArchibald Elliott  %0 = tail call half asm "vmov $0, $1", "=w,w"(half %x)
1967d15212bSArchibald Elliott  ret half %0
1977d15212bSArchibald Elliott}
1987d15212bSArchibald Elliott
199*9ee4fe63SArchibald Elliottdefine half @half_x(half %x) nounwind {
200*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-LABEL: half_x:
201*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
202*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
203*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
204*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
205*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
206*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
207*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
208*9ee4fe63SArchibald Elliott;
209*9ee4fe63SArchibald Elliott; NO-FP16-HARD-LABEL: half_x:
210*9ee4fe63SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
211*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
212*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
213*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
214*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
215*9ee4fe63SArchibald Elliott;
216*9ee4fe63SArchibald Elliott; FP16-SOFTFP-LABEL: half_x:
217*9ee4fe63SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
218*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 s0, r0
219*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f16 r0, s0
220*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
221*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
222*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
223*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
224*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
225*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
226*9ee4fe63SArchibald Elliott;
227*9ee4fe63SArchibald Elliott; FP16-HARD-LABEL: half_x:
228*9ee4fe63SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
229*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov.f16 r0, s0
230*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov s0, r0
231*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    @APP
232*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
233*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
234*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    bx lr
235*9ee4fe63SArchibald Elliott;
236*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: half_x:
237*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
238*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
239*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
240*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
241*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
242*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
243*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
244*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
245*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
246*9ee4fe63SArchibald Elliott;
247*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: half_x:
248*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
249*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
250*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
251*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
252*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
253*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
254*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
255*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
256*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
257*9ee4fe63SArchibald Elliott;
258*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: half_x:
259*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
260*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f16 r0, s0
261*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov s0, r0
262*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
263*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
264*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
265*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
266*9ee4fe63SArchibald Elliott;
267*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: half_x:
268*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
269*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
270*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
271*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
272*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
273*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
274*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
275*9ee4fe63SArchibald Elliottentry:
276*9ee4fe63SArchibald Elliott  %0 = tail call half asm "vmov $0, $1", "=x,x"(half %x)
277*9ee4fe63SArchibald Elliott  ret half %0
278*9ee4fe63SArchibald Elliott}
279*9ee4fe63SArchibald Elliott
28020b2d118SArchibald Elliottdefine bfloat @bf16_t(bfloat %x) nounwind {
28120b2d118SArchibald Elliott; NO-FP16-SOFTFP-LABEL: bf16_t:
28220b2d118SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
28320b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
28420b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
28520b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
28620b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
28720b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
28820b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
28920b2d118SArchibald Elliott;
29020b2d118SArchibald Elliott; NO-FP16-HARD-LABEL: bf16_t:
29120b2d118SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
29220b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
29320b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
29420b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
29520b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
29620b2d118SArchibald Elliott;
29720b2d118SArchibald Elliott; FP16-SOFTFP-LABEL: bf16_t:
29820b2d118SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
29920b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
30020b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
30120b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
30220b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
30320b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
30420b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
30520b2d118SArchibald Elliott;
30620b2d118SArchibald Elliott; FP16-HARD-LABEL: bf16_t:
30720b2d118SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
30820b2d118SArchibald Elliott; FP16-HARD-NEXT:    @APP
30920b2d118SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
31020b2d118SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
31120b2d118SArchibald Elliott; FP16-HARD-NEXT:    bx lr
312*9ee4fe63SArchibald Elliott;
313*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: bf16_t:
314*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
315*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
316*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
317*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
318*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
319*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
320*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
321*9ee4fe63SArchibald Elliott;
322*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: bf16_t:
323*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
324*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
325*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
326*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
327*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
328*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
329*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
330*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
331*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
332*9ee4fe63SArchibald Elliott;
333*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: bf16_t:
334*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
335*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
336*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
337*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
338*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
339*9ee4fe63SArchibald Elliott;
340*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: bf16_t:
341*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
342*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
343*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
344*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
345*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
346*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
347*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
348ff4027d1SArchibald Elliottentry:
34920b2d118SArchibald Elliott  %0 = tail call bfloat asm "vmov $0, $1", "=t,t"(bfloat %x)
350ff4027d1SArchibald Elliott  ret bfloat %0
351ff4027d1SArchibald Elliott}
3527d15212bSArchibald Elliott
35320b2d118SArchibald Elliottdefine bfloat @bf16_w(bfloat %x) nounwind {
35420b2d118SArchibald Elliott; NO-FP16-SOFTFP-LABEL: bf16_w:
35520b2d118SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
35620b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
35720b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
35820b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
35920b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
36020b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
36120b2d118SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
36220b2d118SArchibald Elliott;
36320b2d118SArchibald Elliott; NO-FP16-HARD-LABEL: bf16_w:
36420b2d118SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
36520b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
36620b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
36720b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
36820b2d118SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
36920b2d118SArchibald Elliott;
37020b2d118SArchibald Elliott; FP16-SOFTFP-LABEL: bf16_w:
37120b2d118SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
37220b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
37320b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
37420b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
37520b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
37620b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
37720b2d118SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
37820b2d118SArchibald Elliott;
37920b2d118SArchibald Elliott; FP16-HARD-LABEL: bf16_w:
38020b2d118SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
38120b2d118SArchibald Elliott; FP16-HARD-NEXT:    @APP
38220b2d118SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
38320b2d118SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
38420b2d118SArchibald Elliott; FP16-HARD-NEXT:    bx lr
385*9ee4fe63SArchibald Elliott;
386*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: bf16_w:
387*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
388*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
389*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
390*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
391*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
392*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
393*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
394*9ee4fe63SArchibald Elliott;
395*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: bf16_w:
396*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
397*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
398*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
399*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
400*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
401*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
402*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
403*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
404*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
405*9ee4fe63SArchibald Elliott;
406*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: bf16_w:
407*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
408*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
409*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
410*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
411*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
412*9ee4fe63SArchibald Elliott;
413*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: bf16_w:
414*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
415*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
416*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
417*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
418*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
419*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
420*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
4217d15212bSArchibald Elliottentry:
42220b2d118SArchibald Elliott  %0 = tail call bfloat asm "vmov $0, $1", "=w,w"(bfloat %x)
4237d15212bSArchibald Elliott  ret bfloat %0
4247d15212bSArchibald Elliott}
425*9ee4fe63SArchibald Elliott
426*9ee4fe63SArchibald Elliottdefine bfloat @bf16_x(bfloat %x) nounwind {
427*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-LABEL: bf16_x:
428*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP:       @ %bb.0: @ %entry
429*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov s0, r0
430*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @APP
431*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
432*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    @NO_APP
433*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    vmov r0, s0
434*9ee4fe63SArchibald Elliott; NO-FP16-SOFTFP-NEXT:    bx lr
435*9ee4fe63SArchibald Elliott;
436*9ee4fe63SArchibald Elliott; NO-FP16-HARD-LABEL: bf16_x:
437*9ee4fe63SArchibald Elliott; NO-FP16-HARD:       @ %bb.0: @ %entry
438*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    @APP
439*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    vmov.f32 s0, s0
440*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    @NO_APP
441*9ee4fe63SArchibald Elliott; NO-FP16-HARD-NEXT:    bx lr
442*9ee4fe63SArchibald Elliott;
443*9ee4fe63SArchibald Elliott; FP16-SOFTFP-LABEL: bf16_x:
444*9ee4fe63SArchibald Elliott; FP16-SOFTFP:       @ %bb.0: @ %entry
445*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov s0, r0
446*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    @APP
447*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov.f32 s0, s0
448*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    @NO_APP
449*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    vmov r0, s0
450*9ee4fe63SArchibald Elliott; FP16-SOFTFP-NEXT:    bx lr
451*9ee4fe63SArchibald Elliott;
452*9ee4fe63SArchibald Elliott; FP16-HARD-LABEL: bf16_x:
453*9ee4fe63SArchibald Elliott; FP16-HARD:       @ %bb.0: @ %entry
454*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    @APP
455*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    vmov.f32 s0, s0
456*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    @NO_APP
457*9ee4fe63SArchibald Elliott; FP16-HARD-NEXT:    bx lr
458*9ee4fe63SArchibald Elliott;
459*9ee4fe63SArchibald Elliott; BF16-SOFTFP-LABEL: bf16_x:
460*9ee4fe63SArchibald Elliott; BF16-SOFTFP:       @ %bb.0: @ %entry
461*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov s0, r0
462*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @APP
463*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
464*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    @NO_APP
465*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    vmov r0, s0
466*9ee4fe63SArchibald Elliott; BF16-SOFTFP-NEXT:    bx lr
467*9ee4fe63SArchibald Elliott;
468*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-LABEL: bf16_x:
469*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP:       @ %bb.0: @ %entry
470*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 s0, r0
471*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f16 r0, s0
472*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov s0, r0
473*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @APP
474*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov.f32 s0, s0
475*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    @NO_APP
476*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    vmov r0, s0
477*9ee4fe63SArchibald Elliott; SIMD-BF16-SOFTFP-NEXT:    bx lr
478*9ee4fe63SArchibald Elliott;
479*9ee4fe63SArchibald Elliott; BF16-HARD-LABEL: bf16_x:
480*9ee4fe63SArchibald Elliott; BF16-HARD:       @ %bb.0: @ %entry
481*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @APP
482*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    vmov.f32 s0, s0
483*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    @NO_APP
484*9ee4fe63SArchibald Elliott; BF16-HARD-NEXT:    bx lr
485*9ee4fe63SArchibald Elliott;
486*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-LABEL: bf16_x:
487*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD:       @ %bb.0: @ %entry
488*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f16 r0, s0
489*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov s0, r0
490*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @APP
491*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    vmov.f32 s0, s0
492*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    @NO_APP
493*9ee4fe63SArchibald Elliott; SIMD-BF16-HARD-NEXT:    bx lr
494*9ee4fe63SArchibald Elliottentry:
495*9ee4fe63SArchibald Elliott  %0 = tail call bfloat asm "vmov $0, $1", "=x,x"(bfloat %x)
496*9ee4fe63SArchibald Elliott  ret bfloat %0
497*9ee4fe63SArchibald Elliott}
498