1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=armv7a--none-eabi -float-abi soft -mattr=+fp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT
3; RUN: llc -mtriple=armv7a--none-eabi -float-abi hard -mattr=+fp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=HARD
4; RUN: llc -mtriple=armv7a--none-eabi -float-abi soft -mattr=+fullfp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FULL-SOFT
5; RUN: llc -mtriple=armv7a--none-eabi -float-abi hard -mattr=+fullfp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FULL-HARD
6; RUN: llc -mtriple=armv7aeb--none-eabi -float-abi soft -mattr=+fp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT
7; RUN: llc -mtriple=armv7aeb--none-eabi -float-abi hard -mattr=+fp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=HARD
8; RUN: llc -mtriple=armv7aeb--none-eabi -float-abi soft -mattr=+fullfp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FULL-SOFT
9; RUN: llc -mtriple=armv7aeb--none-eabi -float-abi hard -mattr=+fullfp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FULL-HARD
10
11define half @foo(half %a, half %b) {
12; SOFT-LABEL: foo:
13; SOFT:       @ %bb.0: @ %entry
14; SOFT-NEXT:    vmov s0, r0
15; SOFT-NEXT:    vmov s2, r1
16; SOFT-NEXT:    vcvtb.f32.f16 s0, s0
17; SOFT-NEXT:    vcvtb.f32.f16 s2, s2
18; SOFT-NEXT:    vadd.f32 s0, s0, s2
19; SOFT-NEXT:    vcvtb.f16.f32 s0, s0
20; SOFT-NEXT:    vmov r0, s0
21; SOFT-NEXT:    bx lr
22;
23; HARD-LABEL: foo:
24; HARD:       @ %bb.0: @ %entry
25; HARD-NEXT:    vcvtb.f32.f16 s2, s1
26; HARD-NEXT:    vcvtb.f32.f16 s0, s0
27; HARD-NEXT:    vadd.f32 s0, s0, s2
28; HARD-NEXT:    vcvtb.f16.f32 s0, s0
29; HARD-NEXT:    bx lr
30;
31; FULL-SOFT-LABEL: foo:
32; FULL-SOFT:       @ %bb.0: @ %entry
33; FULL-SOFT-NEXT:    vmov.f16 s0, r1
34; FULL-SOFT-NEXT:    vmov.f16 s2, r0
35; FULL-SOFT-NEXT:    vadd.f16 s0, s2, s0
36; FULL-SOFT-NEXT:    vmov r0, s0
37; FULL-SOFT-NEXT:    bx lr
38;
39; FULL-HARD-LABEL: foo:
40; FULL-HARD:       @ %bb.0: @ %entry
41; FULL-HARD-NEXT:    vadd.f16 s0, s0, s1
42; FULL-HARD-NEXT:    bx lr
43entry:
44  %0 = fadd half %a, %b
45  ret half %0
46}
47