|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 | 2 | ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
|
3 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH |
| 3 | +; RUN: -verify-machineinstrs < %s | FileCheck %s |
4 | 4 | ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
|
5 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH |
6 |
| -; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfhmin,+v -target-abi=ilp32d \ |
7 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN |
8 |
| -; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfhmin,+v -target-abi=lp64d \ |
9 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN |
| 5 | +; RUN: -verify-machineinstrs < %s | FileCheck %s |
10 | 6 |
|
11 | 7 | declare half @llvm.vp.reduce.fadd.v2f16(half, <2 x half>, <2 x i1>, i32)
|
12 | 8 |
|
13 | 9 | define half @vpreduce_fadd_v2f16(half %s, <2 x half> %v, <2 x i1> %m, i32 zeroext %evl) {
|
14 |
| -; ZVFH-LABEL: vpreduce_fadd_v2f16: |
15 |
| -; ZVFH: # %bb.0: |
16 |
| -; ZVFH-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
17 |
| -; ZVFH-NEXT: vfmv.s.f v9, fa0 |
18 |
| -; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma |
19 |
| -; ZVFH-NEXT: vfredusum.vs v9, v8, v9, v0.t |
20 |
| -; ZVFH-NEXT: vfmv.f.s fa0, v9 |
21 |
| -; ZVFH-NEXT: ret |
22 |
| -; |
23 |
| -; ZVFHMIN-LABEL: vpreduce_fadd_v2f16: |
24 |
| -; ZVFHMIN: # %bb.0: |
25 |
| -; ZVFHMIN-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
26 |
| -; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8 |
27 |
| -; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0 |
28 |
| -; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
29 |
| -; ZVFHMIN-NEXT: vfmv.s.f v8, fa5 |
30 |
| -; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma |
31 |
| -; ZVFHMIN-NEXT: vfredusum.vs v8, v9, v8, v0.t |
32 |
| -; ZVFHMIN-NEXT: vfmv.f.s fa5, v8 |
33 |
| -; ZVFHMIN-NEXT: fcvt.h.s fa0, fa5 |
34 |
| -; ZVFHMIN-NEXT: ret |
| 10 | +; CHECK-LABEL: vpreduce_fadd_v2f16: |
| 11 | +; CHECK: # %bb.0: |
| 12 | +; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
| 13 | +; CHECK-NEXT: vfmv.s.f v9, fa0 |
| 14 | +; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma |
| 15 | +; CHECK-NEXT: vfredusum.vs v9, v8, v9, v0.t |
| 16 | +; CHECK-NEXT: vfmv.f.s fa0, v9 |
| 17 | +; CHECK-NEXT: ret |
35 | 18 | %r = call reassoc half @llvm.vp.reduce.fadd.v2f16(half %s, <2 x half> %v, <2 x i1> %m, i32 %evl)
|
36 | 19 | ret half %r
|
37 | 20 | }
|
38 | 21 |
|
39 | 22 | define half @vpreduce_ord_fadd_v2f16(half %s, <2 x half> %v, <2 x i1> %m, i32 zeroext %evl) {
|
40 |
| -; ZVFH-LABEL: vpreduce_ord_fadd_v2f16: |
41 |
| -; ZVFH: # %bb.0: |
42 |
| -; ZVFH-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
43 |
| -; ZVFH-NEXT: vfmv.s.f v9, fa0 |
44 |
| -; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma |
45 |
| -; ZVFH-NEXT: vfredosum.vs v9, v8, v9, v0.t |
46 |
| -; ZVFH-NEXT: vfmv.f.s fa0, v9 |
47 |
| -; ZVFH-NEXT: ret |
48 |
| -; |
49 |
| -; ZVFHMIN-LABEL: vpreduce_ord_fadd_v2f16: |
50 |
| -; ZVFHMIN: # %bb.0: |
51 |
| -; ZVFHMIN-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
52 |
| -; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8 |
53 |
| -; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0 |
54 |
| -; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma |
55 |
| -; ZVFHMIN-NEXT: vfmv.s.f v8, fa5 |
56 |
| -; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma |
57 |
| -; ZVFHMIN-NEXT: vfredosum.vs v8, v9, v8, v0.t |
58 |
| -; ZVFHMIN-NEXT: vfmv.f.s fa5, v8 |
59 |
| -; ZVFHMIN-NEXT: fcvt.h.s fa0, fa5 |
60 |
| -; ZVFHMIN-NEXT: ret |
| 23 | +; CHECK-LABEL: vpreduce_ord_fadd_v2f16: |
| 24 | +; CHECK: # %bb.0: |
| 25 | +; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
| 26 | +; CHECK-NEXT: vfmv.s.f v9, fa0 |
| 27 | +; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma |
| 28 | +; CHECK-NEXT: vfredosum.vs v9, v8, v9, v0.t |
| 29 | +; CHECK-NEXT: vfmv.f.s fa0, v9 |
| 30 | +; CHECK-NEXT: ret |
61 | 31 | %r = call half @llvm.vp.reduce.fadd.v2f16(half %s, <2 x half> %v, <2 x i1> %m, i32 %evl)
|
62 | 32 | ret half %r
|
63 | 33 | }
|
64 | 34 |
|
65 | 35 | declare half @llvm.vp.reduce.fadd.v4f16(half, <4 x half>, <4 x i1>, i32)
|
66 | 36 |
|
67 | 37 | define half @vpreduce_fadd_v4f16(half %s, <4 x half> %v, <4 x i1> %m, i32 zeroext %evl) {
|
68 |
| -; ZVFH-LABEL: vpreduce_fadd_v4f16: |
69 |
| -; ZVFH: # %bb.0: |
70 |
| -; ZVFH-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
71 |
| -; ZVFH-NEXT: vfmv.s.f v9, fa0 |
72 |
| -; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma |
73 |
| -; ZVFH-NEXT: vfredusum.vs v9, v8, v9, v0.t |
74 |
| -; ZVFH-NEXT: vfmv.f.s fa0, v9 |
75 |
| -; ZVFH-NEXT: ret |
76 |
| -; |
77 |
| -; ZVFHMIN-LABEL: vpreduce_fadd_v4f16: |
78 |
| -; ZVFHMIN: # %bb.0: |
79 |
| -; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma |
80 |
| -; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8 |
81 |
| -; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0 |
82 |
| -; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m1, ta, ma |
83 |
| -; ZVFHMIN-NEXT: vfmv.s.f v8, fa5 |
84 |
| -; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma |
85 |
| -; ZVFHMIN-NEXT: vfredusum.vs v8, v9, v8, v0.t |
86 |
| -; ZVFHMIN-NEXT: vfmv.f.s fa5, v8 |
87 |
| -; ZVFHMIN-NEXT: fcvt.h.s fa0, fa5 |
88 |
| -; ZVFHMIN-NEXT: ret |
| 38 | +; CHECK-LABEL: vpreduce_fadd_v4f16: |
| 39 | +; CHECK: # %bb.0: |
| 40 | +; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
| 41 | +; CHECK-NEXT: vfmv.s.f v9, fa0 |
| 42 | +; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma |
| 43 | +; CHECK-NEXT: vfredusum.vs v9, v8, v9, v0.t |
| 44 | +; CHECK-NEXT: vfmv.f.s fa0, v9 |
| 45 | +; CHECK-NEXT: ret |
89 | 46 | %r = call reassoc half @llvm.vp.reduce.fadd.v4f16(half %s, <4 x half> %v, <4 x i1> %m, i32 %evl)
|
90 | 47 | ret half %r
|
91 | 48 | }
|
92 | 49 |
|
93 | 50 | define half @vpreduce_ord_fadd_v4f16(half %s, <4 x half> %v, <4 x i1> %m, i32 zeroext %evl) {
|
94 |
| -; ZVFH-LABEL: vpreduce_ord_fadd_v4f16: |
95 |
| -; ZVFH: # %bb.0: |
96 |
| -; ZVFH-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
97 |
| -; ZVFH-NEXT: vfmv.s.f v9, fa0 |
98 |
| -; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma |
99 |
| -; ZVFH-NEXT: vfredosum.vs v9, v8, v9, v0.t |
100 |
| -; ZVFH-NEXT: vfmv.f.s fa0, v9 |
101 |
| -; ZVFH-NEXT: ret |
102 |
| -; |
103 |
| -; ZVFHMIN-LABEL: vpreduce_ord_fadd_v4f16: |
104 |
| -; ZVFHMIN: # %bb.0: |
105 |
| -; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma |
106 |
| -; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8 |
107 |
| -; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0 |
108 |
| -; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m1, ta, ma |
109 |
| -; ZVFHMIN-NEXT: vfmv.s.f v8, fa5 |
110 |
| -; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma |
111 |
| -; ZVFHMIN-NEXT: vfredosum.vs v8, v9, v8, v0.t |
112 |
| -; ZVFHMIN-NEXT: vfmv.f.s fa5, v8 |
113 |
| -; ZVFHMIN-NEXT: fcvt.h.s fa0, fa5 |
114 |
| -; ZVFHMIN-NEXT: ret |
| 51 | +; CHECK-LABEL: vpreduce_ord_fadd_v4f16: |
| 52 | +; CHECK: # %bb.0: |
| 53 | +; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
| 54 | +; CHECK-NEXT: vfmv.s.f v9, fa0 |
| 55 | +; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma |
| 56 | +; CHECK-NEXT: vfredosum.vs v9, v8, v9, v0.t |
| 57 | +; CHECK-NEXT: vfmv.f.s fa0, v9 |
| 58 | +; CHECK-NEXT: ret |
115 | 59 | %r = call half @llvm.vp.reduce.fadd.v4f16(half %s, <4 x half> %v, <4 x i1> %m, i32 %evl)
|
116 | 60 | ret half %r
|
117 | 61 | }
|
|
0 commit comments