|
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