1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=hexagon < %s | FileCheck %s
4 define <64 x half> @f0(<64 x half> %a0, <64 x half> %a1) #0 {
6 ; CHECK: // %bb.0: // %b0
8 ; CHECK-NEXT: v0.qf16 = vadd(v0.hf,v1.hf)
11 ; CHECK-NEXT: v0.hf = v0.qf16
12 ; CHECK-NEXT: jumpr r31
15 %v0 = fadd <64 x half> %a0, %a1
19 define <32 x float> @f1(<32 x float> %a0, <32 x float> %a1) #0 {
21 ; CHECK: // %bb.0: // %b0
23 ; CHECK-NEXT: v0.qf32 = vadd(v0.sf,v1.sf)
26 ; CHECK-NEXT: v0.sf = v0.qf32
27 ; CHECK-NEXT: jumpr r31
30 %v0 = fadd <32 x float> %a0, %a1
34 define <64 x half> @f2(<64 x half> %a0, <64 x half> %a1) #0 {
36 ; CHECK: // %bb.0: // %b0
38 ; CHECK-NEXT: v0.qf16 = vsub(v0.hf,v1.hf)
41 ; CHECK-NEXT: v0.hf = v0.qf16
42 ; CHECK-NEXT: jumpr r31
45 %v0 = fsub <64 x half> %a0, %a1
49 define <32 x float> @f3(<32 x float> %a0, <32 x float> %a1) #0 {
51 ; CHECK: // %bb.0: // %b0
53 ; CHECK-NEXT: v0.qf32 = vsub(v0.sf,v1.sf)
56 ; CHECK-NEXT: v0.sf = v0.qf32
57 ; CHECK-NEXT: jumpr r31
60 %v0 = fsub <32 x float> %a0, %a1
64 define <64 x half> @f4(<64 x half> %a0, <64 x half> %a1) #0 {
66 ; CHECK: // %bb.0: // %b0
68 ; CHECK-NEXT: v0.qf16 = vmpy(v0.hf,v1.hf)
71 ; CHECK-NEXT: v0.hf = v0.qf16
72 ; CHECK-NEXT: jumpr r31
75 %v0 = fmul <64 x half> %a0, %a1
79 define <32 x float> @f5(<32 x float> %a0, <32 x float> %a1) #0 {
81 ; CHECK: // %bb.0: // %b0
83 ; CHECK-NEXT: v0.qf32 = vmpy(v0.sf,v1.sf)
86 ; CHECK-NEXT: v0.sf = v0.qf32
87 ; CHECK-NEXT: jumpr r31
90 %v0 = fmul <32 x float> %a0, %a1
94 define <64 x half> @f6(<64 x half> %a0, <64 x half> %a1) #1 {
96 ; CHECK: // %bb.0: // %b0
98 ; CHECK-NEXT: v0.hf = vadd(v0.hf,v1.hf)
99 ; CHECK-NEXT: jumpr r31
102 %v0 = fadd <64 x half> %a0, %a1
106 define <32 x float> @f7(<32 x float> %a0, <32 x float> %a1) #1 {
108 ; CHECK: // %bb.0: // %b0
110 ; CHECK-NEXT: v0.sf = vadd(v0.sf,v1.sf)
111 ; CHECK-NEXT: jumpr r31
114 %v0 = fadd <32 x float> %a0, %a1
118 define <64 x half> @f8(<64 x half> %a0, <64 x half> %a1) #1 {
120 ; CHECK: // %bb.0: // %b0
122 ; CHECK-NEXT: v0.hf = vsub(v0.hf,v1.hf)
123 ; CHECK-NEXT: jumpr r31
126 %v0 = fsub <64 x half> %a0, %a1
130 define <32 x float> @f9(<32 x float> %a0, <32 x float> %a1) #1 {
132 ; CHECK: // %bb.0: // %b0
134 ; CHECK-NEXT: v0.sf = vsub(v0.sf,v1.sf)
135 ; CHECK-NEXT: jumpr r31
138 %v0 = fsub <32 x float> %a0, %a1
142 define <64 x half> @f10(<64 x half> %a0, <64 x half> %a1) #1 {
144 ; CHECK: // %bb.0: // %b0
146 ; CHECK-NEXT: v0.hf = vmpy(v0.hf,v1.hf)
147 ; CHECK-NEXT: jumpr r31
150 %v0 = fmul <64 x half> %a0, %a1
154 define <32 x float> @f11(<32 x float> %a0, <32 x float> %a1) #1 {
156 ; CHECK: // %bb.0: // %b0
158 ; CHECK-NEXT: v0.sf = vmpy(v0.sf,v1.sf)
159 ; CHECK-NEXT: jumpr r31
162 %v0 = fmul <32 x float> %a0, %a1
166 attributes #0 = { nounwind "target-cpu"="hexagonv69" "target-features"="+hvxv69,+hvx-length128b,+hvx-qfloat" }
167 attributes #1 = { nounwind "target-cpu"="hexagonv69" "target-features"="+hvxv69,+hvx-length128b,+hvx-ieee-fp" }