xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-load-store.ll (revision 0fee2115bb78a8168fd752ca01f6646cfbf74d07)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
4
5define void @load_store_v1i1(ptr %x, ptr %y) {
6; CHECK-LABEL: load_store_v1i1:
7; CHECK:       # %bb.0:
8; CHECK-NEXT:    lbu a0, 0(a0)
9; CHECK-NEXT:    andi a0, a0, 1
10; CHECK-NEXT:    sb a0, 0(a1)
11; CHECK-NEXT:    ret
12  %a = load <1 x i1>, ptr %x
13  store <1 x i1> %a, ptr %y
14  ret void
15}
16
17define void @load_store_v2i1(ptr %x, ptr %y) {
18; CHECK-LABEL: load_store_v2i1:
19; CHECK:       # %bb.0:
20; CHECK-NEXT:    lbu a0, 0(a0)
21; CHECK-NEXT:    andi a0, a0, 3
22; CHECK-NEXT:    sb a0, 0(a1)
23; CHECK-NEXT:    ret
24  %a = load <2 x i1>, ptr %x
25  store <2 x i1> %a, ptr %y
26  ret void
27}
28
29define void @load_store_v4i1(ptr %x, ptr %y) {
30; CHECK-LABEL: load_store_v4i1:
31; CHECK:       # %bb.0:
32; CHECK-NEXT:    lbu a0, 0(a0)
33; CHECK-NEXT:    andi a0, a0, 15
34; CHECK-NEXT:    sb a0, 0(a1)
35; CHECK-NEXT:    ret
36  %a = load <4 x i1>, ptr %x
37  store <4 x i1> %a, ptr %y
38  ret void
39}
40
41define void @load_store_v8i1(ptr %x, ptr %y) {
42; CHECK-LABEL: load_store_v8i1:
43; CHECK:       # %bb.0:
44; CHECK-NEXT:    lbu a0, 0(a0)
45; CHECK-NEXT:    sb a0, 0(a1)
46; CHECK-NEXT:    ret
47  %a = load <8 x i1>, ptr %x
48  store <8 x i1> %a, ptr %y
49  ret void
50}
51
52define void @load_store_v16i1(ptr %x, ptr %y) {
53; CHECK-LABEL: load_store_v16i1:
54; CHECK:       # %bb.0:
55; CHECK-NEXT:    lh a0, 0(a0)
56; CHECK-NEXT:    sh a0, 0(a1)
57; CHECK-NEXT:    ret
58  %a = load <16 x i1>, ptr %x
59  store <16 x i1> %a, ptr %y
60  ret void
61}
62
63define void @load_store_v32i1(ptr %x, ptr %y) {
64; CHECK-LABEL: load_store_v32i1:
65; CHECK:       # %bb.0:
66; CHECK-NEXT:    lw a0, 0(a0)
67; CHECK-NEXT:    sw a0, 0(a1)
68; CHECK-NEXT:    ret
69  %a = load <32 x i1>, ptr %x
70  store <32 x i1> %a, ptr %y
71  ret void
72}
73