; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -mtriple=armv8-unknown-none-eabi < %s | FileCheck %s --check-prefixes=CHECK,HARD ; RUN: llc -mtriple=armv8-unknown-none-eabi -mattr=+soft-float < %s | FileCheck %s --check-prefixes=CHECK,SOFT define nofpclass(nan inf) half @f1(half returned nofpclass(nan inf) %x) { ; CHECK-LABEL: f1: ; CHECK: @ %bb.0: @ %entry ; CHECK-NEXT: bx lr entry: ret half %x } define noundef half @f2(half nofpclass(nan) %a) { ; HARD-LABEL: f2: ; HARD: @ %bb.0: @ %entry ; HARD-NEXT: vmov.f32 s0, #1.000000e+00 ; HARD-NEXT: vmov s2, r0 ; HARD-NEXT: vcvtb.f32.f16 s2, s2 ; HARD-NEXT: vadd.f32 s0, s2, s0 ; HARD-NEXT: vcvtb.f16.f32 s0, s0 ; HARD-NEXT: vmov r0, s0 ; HARD-NEXT: bx lr ; ; SOFT-LABEL: f2: ; SOFT: @ %bb.0: @ %entry ; SOFT-NEXT: .save {r11, lr} ; SOFT-NEXT: push {r11, lr} ; SOFT-NEXT: uxth r0, r0 ; SOFT-NEXT: bl __aeabi_h2f ; SOFT-NEXT: mov r1, #1065353216 ; SOFT-NEXT: bl __aeabi_fadd ; SOFT-NEXT: bl __aeabi_f2h ; SOFT-NEXT: pop {r11, pc} entry: %0 = fadd half %a, 0xH3C00 ret half %0 }