1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s
3
- ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s
2
+ ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s
3
+ ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s
4
+ ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfhmin,+zvfbfmin,+v -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s
5
+ ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfhmin,+zvfbfmin,+v -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s
6
+
7
+ define void @masked_store_nxv1bf16 (<vscale x 1 x bfloat> %val , ptr %a , <vscale x 1 x i1 > %mask ) nounwind {
8
+ ; CHECK-LABEL: masked_store_nxv1bf16:
9
+ ; CHECK: # %bb.0:
10
+ ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
11
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
12
+ ; CHECK-NEXT: ret
13
+ call void @llvm.masked.store.nxv1bf16.p0 (<vscale x 1 x bfloat> %val , ptr %a , i32 2 , <vscale x 1 x i1 > %mask )
14
+ ret void
15
+ }
16
+ declare void @llvm.masked.store.nxv1bf16.p0 (<vscale x 1 x bfloat>, ptr , i32 , <vscale x 1 x i1 >)
4
17
5
18
define void @masked_store_nxv1f16 (<vscale x 1 x half > %val , ptr %a , <vscale x 1 x i1 > %mask ) nounwind {
6
19
; CHECK-LABEL: masked_store_nxv1f16:
@@ -35,6 +48,17 @@ define void @masked_store_nxv1f64(<vscale x 1 x double> %val, ptr %a, <vscale x
35
48
}
36
49
declare void @llvm.masked.store.nxv1f64.p0 (<vscale x 1 x double >, ptr , i32 , <vscale x 1 x i1 >)
37
50
51
+ define void @masked_store_nxv2bf16 (<vscale x 2 x bfloat> %val , ptr %a , <vscale x 2 x i1 > %mask ) nounwind {
52
+ ; CHECK-LABEL: masked_store_nxv2bf16:
53
+ ; CHECK: # %bb.0:
54
+ ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
55
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
56
+ ; CHECK-NEXT: ret
57
+ call void @llvm.masked.store.nxv2bf16.p0 (<vscale x 2 x bfloat> %val , ptr %a , i32 2 , <vscale x 2 x i1 > %mask )
58
+ ret void
59
+ }
60
+ declare void @llvm.masked.store.nxv2bf16.p0 (<vscale x 2 x bfloat>, ptr , i32 , <vscale x 2 x i1 >)
61
+
38
62
define void @masked_store_nxv2f16 (<vscale x 2 x half > %val , ptr %a , <vscale x 2 x i1 > %mask ) nounwind {
39
63
; CHECK-LABEL: masked_store_nxv2f16:
40
64
; CHECK: # %bb.0:
@@ -68,6 +92,17 @@ define void @masked_store_nxv2f64(<vscale x 2 x double> %val, ptr %a, <vscale x
68
92
}
69
93
declare void @llvm.masked.store.nxv2f64.p0 (<vscale x 2 x double >, ptr , i32 , <vscale x 2 x i1 >)
70
94
95
+ define void @masked_store_nxv4bf16 (<vscale x 4 x bfloat> %val , ptr %a , <vscale x 4 x i1 > %mask ) nounwind {
96
+ ; CHECK-LABEL: masked_store_nxv4bf16:
97
+ ; CHECK: # %bb.0:
98
+ ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
99
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
100
+ ; CHECK-NEXT: ret
101
+ call void @llvm.masked.store.nxv4bf16.p0 (<vscale x 4 x bfloat> %val , ptr %a , i32 2 , <vscale x 4 x i1 > %mask )
102
+ ret void
103
+ }
104
+ declare void @llvm.masked.store.nxv4bf16.p0 (<vscale x 4 x bfloat>, ptr , i32 , <vscale x 4 x i1 >)
105
+
71
106
define void @masked_store_nxv4f16 (<vscale x 4 x half > %val , ptr %a , <vscale x 4 x i1 > %mask ) nounwind {
72
107
; CHECK-LABEL: masked_store_nxv4f16:
73
108
; CHECK: # %bb.0:
@@ -101,6 +136,17 @@ define void @masked_store_nxv4f64(<vscale x 4 x double> %val, ptr %a, <vscale x
101
136
}
102
137
declare void @llvm.masked.store.nxv4f64.p0 (<vscale x 4 x double >, ptr , i32 , <vscale x 4 x i1 >)
103
138
139
+ define void @masked_store_nxv8bf16 (<vscale x 8 x bfloat> %val , ptr %a , <vscale x 8 x i1 > %mask ) nounwind {
140
+ ; CHECK-LABEL: masked_store_nxv8bf16:
141
+ ; CHECK: # %bb.0:
142
+ ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
143
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
144
+ ; CHECK-NEXT: ret
145
+ call void @llvm.masked.store.nxv8bf16.p0 (<vscale x 8 x bfloat> %val , ptr %a , i32 2 , <vscale x 8 x i1 > %mask )
146
+ ret void
147
+ }
148
+ declare void @llvm.masked.store.nxv8bf16.p0 (<vscale x 8 x bfloat>, ptr , i32 , <vscale x 8 x i1 >)
149
+
104
150
define void @masked_store_nxv8f16 (<vscale x 8 x half > %val , ptr %a , <vscale x 8 x i1 > %mask ) nounwind {
105
151
; CHECK-LABEL: masked_store_nxv8f16:
106
152
; CHECK: # %bb.0:
@@ -134,6 +180,17 @@ define void @masked_store_nxv8f64(<vscale x 8 x double> %val, ptr %a, <vscale x
134
180
}
135
181
declare void @llvm.masked.store.nxv8f64.p0 (<vscale x 8 x double >, ptr , i32 , <vscale x 8 x i1 >)
136
182
183
+ define void @masked_store_nxv16bf16 (<vscale x 16 x bfloat> %val , ptr %a , <vscale x 16 x i1 > %mask ) nounwind {
184
+ ; CHECK-LABEL: masked_store_nxv16bf16:
185
+ ; CHECK: # %bb.0:
186
+ ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
187
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
188
+ ; CHECK-NEXT: ret
189
+ call void @llvm.masked.store.nxv16bf16.p0 (<vscale x 16 x bfloat> %val , ptr %a , i32 2 , <vscale x 16 x i1 > %mask )
190
+ ret void
191
+ }
192
+ declare void @llvm.masked.store.nxv16bf16.p0 (<vscale x 16 x bfloat>, ptr , i32 , <vscale x 16 x i1 >)
193
+
137
194
define void @masked_store_nxv16f16 (<vscale x 16 x half > %val , ptr %a , <vscale x 16 x i1 > %mask ) nounwind {
138
195
; CHECK-LABEL: masked_store_nxv16f16:
139
196
; CHECK: # %bb.0:
@@ -156,6 +213,17 @@ define void @masked_store_nxv16f32(<vscale x 16 x float> %val, ptr %a, <vscale x
156
213
}
157
214
declare void @llvm.masked.store.nxv16f32.p0 (<vscale x 16 x float >, ptr , i32 , <vscale x 16 x i1 >)
158
215
216
+ define void @masked_store_nxv32bf16 (<vscale x 32 x bfloat> %val , ptr %a , <vscale x 32 x i1 > %mask ) nounwind {
217
+ ; CHECK-LABEL: masked_store_nxv32bf16:
218
+ ; CHECK: # %bb.0:
219
+ ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
220
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
221
+ ; CHECK-NEXT: ret
222
+ call void @llvm.masked.store.nxv32bf16.p0 (<vscale x 32 x bfloat> %val , ptr %a , i32 2 , <vscale x 32 x i1 > %mask )
223
+ ret void
224
+ }
225
+ declare void @llvm.masked.store.nxv32bf16.p0 (<vscale x 32 x bfloat>, ptr , i32 , <vscale x 32 x i1 >)
226
+
159
227
define void @masked_store_nxv32f16 (<vscale x 32 x half > %val , ptr %a , <vscale x 32 x i1 > %mask ) nounwind {
160
228
; CHECK-LABEL: masked_store_nxv32f16:
161
229
; CHECK: # %bb.0:
0 commit comments