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