11; 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 >)
417
518define void @masked_store_nxv1f16 (<vscale x 1 x half > %val , ptr %a , <vscale x 1 x i1 > %mask ) nounwind {
619; CHECK-LABEL: masked_store_nxv1f16:
@@ -35,6 +48,17 @@ define void @masked_store_nxv1f64(<vscale x 1 x double> %val, ptr %a, <vscale x
3548}
3649declare void @llvm.masked.store.nxv1f64.p0 (<vscale x 1 x double >, ptr , i32 , <vscale x 1 x i1 >)
3750
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+
3862define void @masked_store_nxv2f16 (<vscale x 2 x half > %val , ptr %a , <vscale x 2 x i1 > %mask ) nounwind {
3963; CHECK-LABEL: masked_store_nxv2f16:
4064; CHECK: # %bb.0:
@@ -68,6 +92,17 @@ define void @masked_store_nxv2f64(<vscale x 2 x double> %val, ptr %a, <vscale x
6892}
6993declare void @llvm.masked.store.nxv2f64.p0 (<vscale x 2 x double >, ptr , i32 , <vscale x 2 x i1 >)
7094
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+
71106define void @masked_store_nxv4f16 (<vscale x 4 x half > %val , ptr %a , <vscale x 4 x i1 > %mask ) nounwind {
72107; CHECK-LABEL: masked_store_nxv4f16:
73108; CHECK: # %bb.0:
@@ -101,6 +136,17 @@ define void @masked_store_nxv4f64(<vscale x 4 x double> %val, ptr %a, <vscale x
101136}
102137declare void @llvm.masked.store.nxv4f64.p0 (<vscale x 4 x double >, ptr , i32 , <vscale x 4 x i1 >)
103138
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+
104150define void @masked_store_nxv8f16 (<vscale x 8 x half > %val , ptr %a , <vscale x 8 x i1 > %mask ) nounwind {
105151; CHECK-LABEL: masked_store_nxv8f16:
106152; CHECK: # %bb.0:
@@ -134,6 +180,17 @@ define void @masked_store_nxv8f64(<vscale x 8 x double> %val, ptr %a, <vscale x
134180}
135181declare void @llvm.masked.store.nxv8f64.p0 (<vscale x 8 x double >, ptr , i32 , <vscale x 8 x i1 >)
136182
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+
137194define void @masked_store_nxv16f16 (<vscale x 16 x half > %val , ptr %a , <vscale x 16 x i1 > %mask ) nounwind {
138195; CHECK-LABEL: masked_store_nxv16f16:
139196; CHECK: # %bb.0:
@@ -156,6 +213,17 @@ define void @masked_store_nxv16f32(<vscale x 16 x float> %val, ptr %a, <vscale x
156213}
157214declare void @llvm.masked.store.nxv16f32.p0 (<vscale x 16 x float >, ptr , i32 , <vscale x 16 x i1 >)
158215
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+
159227define void @masked_store_nxv32f16 (<vscale x 32 x half > %val , ptr %a , <vscale x 32 x i1 > %mask ) nounwind {
160228; CHECK-LABEL: masked_store_nxv32f16:
161229; CHECK: # %bb.0:
0 commit comments