Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / arith-float.ll
blob0ba7f2c0460152d87310dd5aa4b7c57357a4a381
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 {
5 ; CHECK-LABEL: f0:
6 ; CHECK:       // %bb.0: // %b0
7 ; CHECK-NEXT:    {
8 ; CHECK-NEXT:     v0.qf16 = vadd(v0.hf,v1.hf)
9 ; CHECK-NEXT:    }
10 ; CHECK-NEXT:    {
11 ; CHECK-NEXT:     v0.hf = v0.qf16
12 ; CHECK-NEXT:     jumpr r31
13 ; CHECK-NEXT:    }
14 b0:
15   %v0 = fadd <64 x half> %a0, %a1
16   ret <64 x half> %v0
19 define <32 x float> @f1(<32 x float> %a0, <32 x float> %a1) #0 {
20 ; CHECK-LABEL: f1:
21 ; CHECK:       // %bb.0: // %b0
22 ; CHECK-NEXT:    {
23 ; CHECK-NEXT:     v0.qf32 = vadd(v0.sf,v1.sf)
24 ; CHECK-NEXT:    }
25 ; CHECK-NEXT:    {
26 ; CHECK-NEXT:     v0.sf = v0.qf32
27 ; CHECK-NEXT:     jumpr r31
28 ; CHECK-NEXT:    }
29 b0:
30   %v0 = fadd <32 x float> %a0, %a1
31   ret <32 x float> %v0
34 define <64 x half> @f2(<64 x half> %a0, <64 x half> %a1) #0 {
35 ; CHECK-LABEL: f2:
36 ; CHECK:       // %bb.0: // %b0
37 ; CHECK-NEXT:    {
38 ; CHECK-NEXT:     v0.qf16 = vsub(v0.hf,v1.hf)
39 ; CHECK-NEXT:    }
40 ; CHECK-NEXT:    {
41 ; CHECK-NEXT:     v0.hf = v0.qf16
42 ; CHECK-NEXT:     jumpr r31
43 ; CHECK-NEXT:    }
44 b0:
45   %v0 = fsub <64 x half> %a0, %a1
46   ret <64 x half> %v0
49 define <32 x float> @f3(<32 x float> %a0, <32 x float> %a1) #0 {
50 ; CHECK-LABEL: f3:
51 ; CHECK:       // %bb.0: // %b0
52 ; CHECK-NEXT:    {
53 ; CHECK-NEXT:     v0.qf32 = vsub(v0.sf,v1.sf)
54 ; CHECK-NEXT:    }
55 ; CHECK-NEXT:    {
56 ; CHECK-NEXT:     v0.sf = v0.qf32
57 ; CHECK-NEXT:     jumpr r31
58 ; CHECK-NEXT:    }
59 b0:
60   %v0 = fsub <32 x float> %a0, %a1
61   ret <32 x float> %v0
64 define <64 x half> @f4(<64 x half> %a0, <64 x half> %a1) #0 {
65 ; CHECK-LABEL: f4:
66 ; CHECK:       // %bb.0: // %b0
67 ; CHECK-NEXT:    {
68 ; CHECK-NEXT:     v0.qf16 = vmpy(v0.hf,v1.hf)
69 ; CHECK-NEXT:    }
70 ; CHECK-NEXT:    {
71 ; CHECK-NEXT:     v0.hf = v0.qf16
72 ; CHECK-NEXT:     jumpr r31
73 ; CHECK-NEXT:    }
74 b0:
75   %v0 = fmul <64 x half> %a0, %a1
76   ret <64 x half> %v0
79 define <32 x float> @f5(<32 x float> %a0, <32 x float> %a1) #0 {
80 ; CHECK-LABEL: f5:
81 ; CHECK:       // %bb.0: // %b0
82 ; CHECK-NEXT:    {
83 ; CHECK-NEXT:     v0.qf32 = vmpy(v0.sf,v1.sf)
84 ; CHECK-NEXT:    }
85 ; CHECK-NEXT:    {
86 ; CHECK-NEXT:     v0.sf = v0.qf32
87 ; CHECK-NEXT:     jumpr r31
88 ; CHECK-NEXT:    }
89 b0:
90   %v0 = fmul <32 x float> %a0, %a1
91   ret <32 x float> %v0
94 define <64 x half> @f6(<64 x half> %a0, <64 x half> %a1) #1 {
95 ; CHECK-LABEL: f6:
96 ; CHECK:       // %bb.0: // %b0
97 ; CHECK-NEXT:    {
98 ; CHECK-NEXT:     v0.hf = vadd(v0.hf,v1.hf)
99 ; CHECK-NEXT:     jumpr r31
100 ; CHECK-NEXT:    }
102   %v0 = fadd <64 x half> %a0, %a1
103   ret <64 x half> %v0
106 define <32 x float> @f7(<32 x float> %a0, <32 x float> %a1) #1 {
107 ; CHECK-LABEL: f7:
108 ; CHECK:       // %bb.0: // %b0
109 ; CHECK-NEXT:    {
110 ; CHECK-NEXT:     v0.sf = vadd(v0.sf,v1.sf)
111 ; CHECK-NEXT:     jumpr r31
112 ; CHECK-NEXT:    }
114   %v0 = fadd <32 x float> %a0, %a1
115   ret <32 x float> %v0
118 define <64 x half> @f8(<64 x half> %a0, <64 x half> %a1) #1 {
119 ; CHECK-LABEL: f8:
120 ; CHECK:       // %bb.0: // %b0
121 ; CHECK-NEXT:    {
122 ; CHECK-NEXT:     v0.hf = vsub(v0.hf,v1.hf)
123 ; CHECK-NEXT:     jumpr r31
124 ; CHECK-NEXT:    }
126   %v0 = fsub <64 x half> %a0, %a1
127   ret <64 x half> %v0
130 define <32 x float> @f9(<32 x float> %a0, <32 x float> %a1) #1 {
131 ; CHECK-LABEL: f9:
132 ; CHECK:       // %bb.0: // %b0
133 ; CHECK-NEXT:    {
134 ; CHECK-NEXT:     v0.sf = vsub(v0.sf,v1.sf)
135 ; CHECK-NEXT:     jumpr r31
136 ; CHECK-NEXT:    }
138   %v0 = fsub <32 x float> %a0, %a1
139   ret <32 x float> %v0
142 define <64 x half> @f10(<64 x half> %a0, <64 x half> %a1) #1 {
143 ; CHECK-LABEL: f10:
144 ; CHECK:       // %bb.0: // %b0
145 ; CHECK-NEXT:    {
146 ; CHECK-NEXT:     v0.hf = vmpy(v0.hf,v1.hf)
147 ; CHECK-NEXT:     jumpr r31
148 ; CHECK-NEXT:    }
150   %v0 = fmul <64 x half> %a0, %a1
151   ret <64 x half> %v0
154 define <32 x float> @f11(<32 x float> %a0, <32 x float> %a1) #1 {
155 ; CHECK-LABEL: f11:
156 ; CHECK:       // %bb.0: // %b0
157 ; CHECK-NEXT:    {
158 ; CHECK-NEXT:     v0.sf = vmpy(v0.sf,v1.sf)
159 ; CHECK-NEXT:     jumpr r31
160 ; CHECK-NEXT:    }
162   %v0 = fmul <32 x float> %a0, %a1
163   ret <32 x float> %v0
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" }