xref: /llvm-project/llvm/test/CodeGen/RISCV/memset-inline.ll (revision 2967e5f8007d873a3e9d97870d2461d0827a3976)
134c01a60SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
234c01a60SPhilip Reames; RUN: llc < %s -mtriple=riscv32 -mattr=+m \
334c01a60SPhilip Reames; RUN:   | FileCheck %s --check-prefixes=RV32-BOTH,RV32
434c01a60SPhilip Reames; RUN: llc < %s -mtriple=riscv64 -mattr=+m \
534c01a60SPhilip Reames; RUN:   | FileCheck %s --check-prefixes=RV64-BOTH,RV64
69067070dSCraig Topper; RUN: llc < %s -mtriple=riscv32 -mattr=+m,+unaligned-scalar-mem \
734c01a60SPhilip Reames; RUN:   | FileCheck %s --check-prefixes=RV32-BOTH,RV32-FAST
89067070dSCraig Topper; RUN: llc < %s -mtriple=riscv64 -mattr=+m,+unaligned-scalar-mem \
934c01a60SPhilip Reames; RUN:   | FileCheck %s --check-prefixes=RV64-BOTH,RV64-FAST
1034c01a60SPhilip Reames%struct.x = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
1134c01a60SPhilip Reames
1234c01a60SPhilip Reamesdeclare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind
1334c01a60SPhilip Reamesdeclare void @llvm.memset.inline.p0.i64(ptr nocapture, i8, i64, i1) nounwind
1434c01a60SPhilip Reames
1534c01a60SPhilip Reames; /////////////////////////////////////////////////////////////////////////////
1634c01a60SPhilip Reames
1734c01a60SPhilip Reamesdefine void @memset_1(ptr %a, i8 %value) nounwind {
1834c01a60SPhilip Reames; RV32-BOTH-LABEL: memset_1:
1934c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
2034c01a60SPhilip Reames; RV32-BOTH-NEXT:    sb a1, 0(a0)
2134c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
2234c01a60SPhilip Reames;
2334c01a60SPhilip Reames; RV64-BOTH-LABEL: memset_1:
2434c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
2534c01a60SPhilip Reames; RV64-BOTH-NEXT:    sb a1, 0(a0)
2634c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
2734c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 1, i1 0)
2834c01a60SPhilip Reames  ret void
2934c01a60SPhilip Reames}
3034c01a60SPhilip Reames
3134c01a60SPhilip Reamesdefine void @memset_2(ptr %a, i8 %value) nounwind {
3234c01a60SPhilip Reames; RV32-LABEL: memset_2:
3334c01a60SPhilip Reames; RV32:       # %bb.0:
3434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
35*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
3634c01a60SPhilip Reames; RV32-NEXT:    ret
3734c01a60SPhilip Reames;
3834c01a60SPhilip Reames; RV64-LABEL: memset_2:
3934c01a60SPhilip Reames; RV64:       # %bb.0:
4034c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
41*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
4234c01a60SPhilip Reames; RV64-NEXT:    ret
4334c01a60SPhilip Reames;
4434c01a60SPhilip Reames; RV32-FAST-LABEL: memset_2:
4534c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
4634c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a2, a1, 255
4734c01a60SPhilip Reames; RV32-FAST-NEXT:    slli a1, a1, 8
4834c01a60SPhilip Reames; RV32-FAST-NEXT:    or a1, a1, a2
4934c01a60SPhilip Reames; RV32-FAST-NEXT:    sh a1, 0(a0)
5034c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
5134c01a60SPhilip Reames;
5234c01a60SPhilip Reames; RV64-FAST-LABEL: memset_2:
5334c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
5434c01a60SPhilip Reames; RV64-FAST-NEXT:    andi a2, a1, 255
5534c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a1, a1, 8
5634c01a60SPhilip Reames; RV64-FAST-NEXT:    or a1, a1, a2
5734c01a60SPhilip Reames; RV64-FAST-NEXT:    sh a1, 0(a0)
5834c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
5934c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 2, i1 0)
6034c01a60SPhilip Reames  ret void
6134c01a60SPhilip Reames}
6234c01a60SPhilip Reames
6334c01a60SPhilip Reamesdefine void @memset_4(ptr %a, i8 %value) nounwind {
6434c01a60SPhilip Reames; RV32-LABEL: memset_4:
6534c01a60SPhilip Reames; RV32:       # %bb.0:
6634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
67*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
68*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 2(a0)
69*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 3(a0)
7034c01a60SPhilip Reames; RV32-NEXT:    ret
7134c01a60SPhilip Reames;
7234c01a60SPhilip Reames; RV64-LABEL: memset_4:
7334c01a60SPhilip Reames; RV64:       # %bb.0:
7434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
75*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
76*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 2(a0)
77*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 3(a0)
7834c01a60SPhilip Reames; RV64-NEXT:    ret
7934c01a60SPhilip Reames;
8034c01a60SPhilip Reames; RV32-FAST-LABEL: memset_4:
8134c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
8234c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a1, a1, 255
8334c01a60SPhilip Reames; RV32-FAST-NEXT:    lui a2, 4112
8434c01a60SPhilip Reames; RV32-FAST-NEXT:    addi a2, a2, 257
8534c01a60SPhilip Reames; RV32-FAST-NEXT:    mul a1, a1, a2
8634c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 0(a0)
8734c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
8834c01a60SPhilip Reames;
8934c01a60SPhilip Reames; RV64-FAST-LABEL: memset_4:
9034c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
9134c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a1, a1, 56
9234c01a60SPhilip Reames; RV64-FAST-NEXT:    lui a2, 65793
9334c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a2, a2, 4
9434c01a60SPhilip Reames; RV64-FAST-NEXT:    addi a2, a2, 256
9534c01a60SPhilip Reames; RV64-FAST-NEXT:    mulhu a1, a1, a2
9634c01a60SPhilip Reames; RV64-FAST-NEXT:    sw a1, 0(a0)
9734c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
9834c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 4, i1 0)
9934c01a60SPhilip Reames  ret void
10034c01a60SPhilip Reames}
10134c01a60SPhilip Reames
10234c01a60SPhilip Reamesdefine void @memset_8(ptr %a, i8 %value) nounwind {
10334c01a60SPhilip Reames; RV32-LABEL: memset_8:
10434c01a60SPhilip Reames; RV32:       # %bb.0:
10534c01a60SPhilip Reames; RV32-NEXT:    sb a1, 4(a0)
106*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 5(a0)
107*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 6(a0)
108*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 7(a0)
10934c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
110*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
111*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 2(a0)
112*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 3(a0)
11334c01a60SPhilip Reames; RV32-NEXT:    ret
11434c01a60SPhilip Reames;
11534c01a60SPhilip Reames; RV64-LABEL: memset_8:
11634c01a60SPhilip Reames; RV64:       # %bb.0:
11734c01a60SPhilip Reames; RV64-NEXT:    sb a1, 4(a0)
118*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 5(a0)
119*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 6(a0)
120*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 7(a0)
12134c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
122*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
123*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 2(a0)
124*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 3(a0)
12534c01a60SPhilip Reames; RV64-NEXT:    ret
12634c01a60SPhilip Reames;
12734c01a60SPhilip Reames; RV32-FAST-LABEL: memset_8:
12834c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
12934c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a1, a1, 255
13034c01a60SPhilip Reames; RV32-FAST-NEXT:    lui a2, 4112
13134c01a60SPhilip Reames; RV32-FAST-NEXT:    addi a2, a2, 257
13234c01a60SPhilip Reames; RV32-FAST-NEXT:    mul a1, a1, a2
13334c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 0(a0)
134*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 4(a0)
13534c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
13634c01a60SPhilip Reames;
13734c01a60SPhilip Reames; RV64-FAST-LABEL: memset_8:
13834c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
13934c01a60SPhilip Reames; RV64-FAST-NEXT:    andi a1, a1, 255
14034c01a60SPhilip Reames; RV64-FAST-NEXT:    lui a2, 4112
14134c01a60SPhilip Reames; RV64-FAST-NEXT:    addiw a2, a2, 257
14234c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a3, a2, 32
14334c01a60SPhilip Reames; RV64-FAST-NEXT:    add a2, a2, a3
14434c01a60SPhilip Reames; RV64-FAST-NEXT:    mul a1, a1, a2
14534c01a60SPhilip Reames; RV64-FAST-NEXT:    sd a1, 0(a0)
14634c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
14734c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 8, i1 0)
14834c01a60SPhilip Reames  ret void
14934c01a60SPhilip Reames}
15034c01a60SPhilip Reames
15134c01a60SPhilip Reamesdefine void @memset_16(ptr %a, i8 %value) nounwind {
15234c01a60SPhilip Reames; RV32-LABEL: memset_16:
15334c01a60SPhilip Reames; RV32:       # %bb.0:
15434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 12(a0)
155*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 13(a0)
156*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 14(a0)
157*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 15(a0)
15834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 8(a0)
159*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 9(a0)
160*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 10(a0)
161*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 11(a0)
16234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 4(a0)
163*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 5(a0)
164*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 6(a0)
165*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 7(a0)
16634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
167*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
168*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 2(a0)
169*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 3(a0)
17034c01a60SPhilip Reames; RV32-NEXT:    ret
17134c01a60SPhilip Reames;
17234c01a60SPhilip Reames; RV64-LABEL: memset_16:
17334c01a60SPhilip Reames; RV64:       # %bb.0:
17434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 12(a0)
175*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 13(a0)
176*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 14(a0)
177*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 15(a0)
17834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 8(a0)
179*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 9(a0)
180*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 10(a0)
181*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 11(a0)
18234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 4(a0)
183*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 5(a0)
184*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 6(a0)
185*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 7(a0)
18634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
187*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
188*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 2(a0)
189*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 3(a0)
19034c01a60SPhilip Reames; RV64-NEXT:    ret
19134c01a60SPhilip Reames;
19234c01a60SPhilip Reames; RV32-FAST-LABEL: memset_16:
19334c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
19434c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a1, a1, 255
19534c01a60SPhilip Reames; RV32-FAST-NEXT:    lui a2, 4112
19634c01a60SPhilip Reames; RV32-FAST-NEXT:    addi a2, a2, 257
19734c01a60SPhilip Reames; RV32-FAST-NEXT:    mul a1, a1, a2
19834c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 0(a0)
199*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 4(a0)
200*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 8(a0)
201*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 12(a0)
20234c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
20334c01a60SPhilip Reames;
20434c01a60SPhilip Reames; RV64-FAST-LABEL: memset_16:
20534c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
20634c01a60SPhilip Reames; RV64-FAST-NEXT:    andi a1, a1, 255
20734c01a60SPhilip Reames; RV64-FAST-NEXT:    lui a2, 4112
20834c01a60SPhilip Reames; RV64-FAST-NEXT:    addiw a2, a2, 257
20934c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a3, a2, 32
21034c01a60SPhilip Reames; RV64-FAST-NEXT:    add a2, a2, a3
21134c01a60SPhilip Reames; RV64-FAST-NEXT:    mul a1, a1, a2
21234c01a60SPhilip Reames; RV64-FAST-NEXT:    sd a1, 0(a0)
213*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 8(a0)
21434c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
21534c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 16, i1 0)
21634c01a60SPhilip Reames  ret void
21734c01a60SPhilip Reames}
21834c01a60SPhilip Reames
21934c01a60SPhilip Reamesdefine void @memset_32(ptr %a, i8 %value) nounwind {
22034c01a60SPhilip Reames; RV32-LABEL: memset_32:
22134c01a60SPhilip Reames; RV32:       # %bb.0:
22234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 28(a0)
223*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 29(a0)
224*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 30(a0)
225*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 31(a0)
22634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 24(a0)
227*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 25(a0)
228*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 26(a0)
229*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 27(a0)
23034c01a60SPhilip Reames; RV32-NEXT:    sb a1, 20(a0)
231*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 21(a0)
232*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 22(a0)
233*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 23(a0)
23434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 16(a0)
235*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 17(a0)
236*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 18(a0)
237*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 19(a0)
23834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 12(a0)
239*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 13(a0)
240*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 14(a0)
241*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 15(a0)
24234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 8(a0)
243*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 9(a0)
244*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 10(a0)
245*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 11(a0)
24634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 4(a0)
247*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 5(a0)
248*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 6(a0)
249*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 7(a0)
25034c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
251*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
252*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 2(a0)
253*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 3(a0)
25434c01a60SPhilip Reames; RV32-NEXT:    ret
25534c01a60SPhilip Reames;
25634c01a60SPhilip Reames; RV64-LABEL: memset_32:
25734c01a60SPhilip Reames; RV64:       # %bb.0:
25834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 28(a0)
259*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 29(a0)
260*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 30(a0)
261*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 31(a0)
26234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 24(a0)
263*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 25(a0)
264*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 26(a0)
265*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 27(a0)
26634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 20(a0)
267*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 21(a0)
268*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 22(a0)
269*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 23(a0)
27034c01a60SPhilip Reames; RV64-NEXT:    sb a1, 16(a0)
271*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 17(a0)
272*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 18(a0)
273*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 19(a0)
27434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 12(a0)
275*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 13(a0)
276*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 14(a0)
277*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 15(a0)
27834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 8(a0)
279*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 9(a0)
280*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 10(a0)
281*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 11(a0)
28234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 4(a0)
283*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 5(a0)
284*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 6(a0)
285*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 7(a0)
28634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
287*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
288*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 2(a0)
289*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 3(a0)
29034c01a60SPhilip Reames; RV64-NEXT:    ret
29134c01a60SPhilip Reames;
29234c01a60SPhilip Reames; RV32-FAST-LABEL: memset_32:
29334c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
29434c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a1, a1, 255
29534c01a60SPhilip Reames; RV32-FAST-NEXT:    lui a2, 4112
29634c01a60SPhilip Reames; RV32-FAST-NEXT:    addi a2, a2, 257
29734c01a60SPhilip Reames; RV32-FAST-NEXT:    mul a1, a1, a2
29834c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 16(a0)
299*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 20(a0)
300*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 24(a0)
301*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 28(a0)
30234c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 0(a0)
303*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 4(a0)
304*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 8(a0)
305*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 12(a0)
30634c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
30734c01a60SPhilip Reames;
30834c01a60SPhilip Reames; RV64-FAST-LABEL: memset_32:
30934c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
31034c01a60SPhilip Reames; RV64-FAST-NEXT:    andi a1, a1, 255
31134c01a60SPhilip Reames; RV64-FAST-NEXT:    lui a2, 4112
31234c01a60SPhilip Reames; RV64-FAST-NEXT:    addiw a2, a2, 257
31334c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a3, a2, 32
31434c01a60SPhilip Reames; RV64-FAST-NEXT:    add a2, a2, a3
31534c01a60SPhilip Reames; RV64-FAST-NEXT:    mul a1, a1, a2
31634c01a60SPhilip Reames; RV64-FAST-NEXT:    sd a1, 0(a0)
317*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 8(a0)
318*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 16(a0)
319*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 24(a0)
32034c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
32134c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 32, i1 0)
32234c01a60SPhilip Reames  ret void
32334c01a60SPhilip Reames}
32434c01a60SPhilip Reames
32534c01a60SPhilip Reamesdefine void @memset_64(ptr %a, i8 %value) nounwind {
32634c01a60SPhilip Reames; RV32-LABEL: memset_64:
32734c01a60SPhilip Reames; RV32:       # %bb.0:
32834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 60(a0)
329*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 61(a0)
330*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 62(a0)
331*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 63(a0)
33234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 56(a0)
333*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 57(a0)
334*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 58(a0)
335*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 59(a0)
33634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 52(a0)
337*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 53(a0)
338*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 54(a0)
339*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 55(a0)
34034c01a60SPhilip Reames; RV32-NEXT:    sb a1, 48(a0)
341*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 49(a0)
342*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 50(a0)
343*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 51(a0)
34434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 44(a0)
345*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 45(a0)
346*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 46(a0)
347*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 47(a0)
34834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 40(a0)
349*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 41(a0)
350*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 42(a0)
351*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 43(a0)
35234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 36(a0)
353*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 37(a0)
354*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 38(a0)
355*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 39(a0)
35634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 32(a0)
357*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 33(a0)
358*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 34(a0)
359*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 35(a0)
36034c01a60SPhilip Reames; RV32-NEXT:    sb a1, 28(a0)
361*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 29(a0)
362*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 30(a0)
363*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 31(a0)
36434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 24(a0)
365*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 25(a0)
366*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 26(a0)
367*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 27(a0)
36834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 20(a0)
369*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 21(a0)
370*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 22(a0)
371*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 23(a0)
37234c01a60SPhilip Reames; RV32-NEXT:    sb a1, 16(a0)
373*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 17(a0)
374*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 18(a0)
375*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 19(a0)
37634c01a60SPhilip Reames; RV32-NEXT:    sb a1, 12(a0)
377*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 13(a0)
378*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 14(a0)
379*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 15(a0)
38034c01a60SPhilip Reames; RV32-NEXT:    sb a1, 8(a0)
381*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 9(a0)
382*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 10(a0)
383*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 11(a0)
38434c01a60SPhilip Reames; RV32-NEXT:    sb a1, 4(a0)
385*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 5(a0)
386*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 6(a0)
387*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 7(a0)
38834c01a60SPhilip Reames; RV32-NEXT:    sb a1, 0(a0)
389*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 1(a0)
390*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 2(a0)
391*2967e5f8SAlex Bradbury; RV32-NEXT:    sb a1, 3(a0)
39234c01a60SPhilip Reames; RV32-NEXT:    ret
39334c01a60SPhilip Reames;
39434c01a60SPhilip Reames; RV64-LABEL: memset_64:
39534c01a60SPhilip Reames; RV64:       # %bb.0:
39634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 60(a0)
397*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 61(a0)
398*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 62(a0)
399*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 63(a0)
40034c01a60SPhilip Reames; RV64-NEXT:    sb a1, 56(a0)
401*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 57(a0)
402*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 58(a0)
403*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 59(a0)
40434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 52(a0)
405*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 53(a0)
406*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 54(a0)
407*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 55(a0)
40834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 48(a0)
409*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 49(a0)
410*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 50(a0)
411*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 51(a0)
41234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 44(a0)
413*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 45(a0)
414*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 46(a0)
415*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 47(a0)
41634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 40(a0)
417*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 41(a0)
418*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 42(a0)
419*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 43(a0)
42034c01a60SPhilip Reames; RV64-NEXT:    sb a1, 36(a0)
421*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 37(a0)
422*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 38(a0)
423*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 39(a0)
42434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 32(a0)
425*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 33(a0)
426*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 34(a0)
427*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 35(a0)
42834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 28(a0)
429*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 29(a0)
430*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 30(a0)
431*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 31(a0)
43234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 24(a0)
433*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 25(a0)
434*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 26(a0)
435*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 27(a0)
43634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 20(a0)
437*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 21(a0)
438*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 22(a0)
439*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 23(a0)
44034c01a60SPhilip Reames; RV64-NEXT:    sb a1, 16(a0)
441*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 17(a0)
442*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 18(a0)
443*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 19(a0)
44434c01a60SPhilip Reames; RV64-NEXT:    sb a1, 12(a0)
445*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 13(a0)
446*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 14(a0)
447*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 15(a0)
44834c01a60SPhilip Reames; RV64-NEXT:    sb a1, 8(a0)
449*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 9(a0)
450*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 10(a0)
451*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 11(a0)
45234c01a60SPhilip Reames; RV64-NEXT:    sb a1, 4(a0)
453*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 5(a0)
454*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 6(a0)
455*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 7(a0)
45634c01a60SPhilip Reames; RV64-NEXT:    sb a1, 0(a0)
457*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 1(a0)
458*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 2(a0)
459*2967e5f8SAlex Bradbury; RV64-NEXT:    sb a1, 3(a0)
46034c01a60SPhilip Reames; RV64-NEXT:    ret
46134c01a60SPhilip Reames;
46234c01a60SPhilip Reames; RV32-FAST-LABEL: memset_64:
46334c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
46434c01a60SPhilip Reames; RV32-FAST-NEXT:    andi a1, a1, 255
46534c01a60SPhilip Reames; RV32-FAST-NEXT:    lui a2, 4112
46634c01a60SPhilip Reames; RV32-FAST-NEXT:    addi a2, a2, 257
46734c01a60SPhilip Reames; RV32-FAST-NEXT:    mul a1, a1, a2
46834c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 48(a0)
469*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 52(a0)
470*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 56(a0)
471*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 60(a0)
47234c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 32(a0)
473*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 36(a0)
474*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 40(a0)
475*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 44(a0)
47634c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 16(a0)
477*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 20(a0)
478*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 24(a0)
479*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 28(a0)
48034c01a60SPhilip Reames; RV32-FAST-NEXT:    sw a1, 0(a0)
481*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 4(a0)
482*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 8(a0)
483*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw a1, 12(a0)
48434c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
48534c01a60SPhilip Reames;
48634c01a60SPhilip Reames; RV64-FAST-LABEL: memset_64:
48734c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
48834c01a60SPhilip Reames; RV64-FAST-NEXT:    andi a1, a1, 255
48934c01a60SPhilip Reames; RV64-FAST-NEXT:    lui a2, 4112
49034c01a60SPhilip Reames; RV64-FAST-NEXT:    addiw a2, a2, 257
49134c01a60SPhilip Reames; RV64-FAST-NEXT:    slli a3, a2, 32
49234c01a60SPhilip Reames; RV64-FAST-NEXT:    add a2, a2, a3
49334c01a60SPhilip Reames; RV64-FAST-NEXT:    mul a1, a1, a2
49434c01a60SPhilip Reames; RV64-FAST-NEXT:    sd a1, 32(a0)
495*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 40(a0)
496*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 48(a0)
497*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 56(a0)
49834c01a60SPhilip Reames; RV64-FAST-NEXT:    sd a1, 0(a0)
499*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 8(a0)
500*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 16(a0)
501*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd a1, 24(a0)
50234c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
50334c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 %value, i64 64, i1 0)
50434c01a60SPhilip Reames  ret void
50534c01a60SPhilip Reames}
50634c01a60SPhilip Reames
50734c01a60SPhilip Reames; /////////////////////////////////////////////////////////////////////////////
50834c01a60SPhilip Reames
50934c01a60SPhilip Reamesdefine void @aligned_memset_2(ptr align 2 %a, i8 %value) nounwind {
51034c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_2:
51134c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
51234c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a2, a1, 255
51334c01a60SPhilip Reames; RV32-BOTH-NEXT:    slli a1, a1, 8
51434c01a60SPhilip Reames; RV32-BOTH-NEXT:    or a1, a1, a2
51534c01a60SPhilip Reames; RV32-BOTH-NEXT:    sh a1, 0(a0)
51634c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
51734c01a60SPhilip Reames;
51834c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_2:
51934c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
52034c01a60SPhilip Reames; RV64-BOTH-NEXT:    andi a2, a1, 255
52134c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a1, a1, 8
52234c01a60SPhilip Reames; RV64-BOTH-NEXT:    or a1, a1, a2
52334c01a60SPhilip Reames; RV64-BOTH-NEXT:    sh a1, 0(a0)
52434c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
52534c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 2 %a, i8 %value, i64 2, i1 0)
52634c01a60SPhilip Reames  ret void
52734c01a60SPhilip Reames}
52834c01a60SPhilip Reames
52934c01a60SPhilip Reamesdefine void @aligned_memset_4(ptr align 4 %a, i8 %value) nounwind {
53034c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_4:
53134c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
53234c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a1, a1, 255
53334c01a60SPhilip Reames; RV32-BOTH-NEXT:    lui a2, 4112
53434c01a60SPhilip Reames; RV32-BOTH-NEXT:    addi a2, a2, 257
53534c01a60SPhilip Reames; RV32-BOTH-NEXT:    mul a1, a1, a2
53634c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 0(a0)
53734c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
53834c01a60SPhilip Reames;
53934c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_4:
54034c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
54134c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a1, a1, 56
54234c01a60SPhilip Reames; RV64-BOTH-NEXT:    lui a2, 65793
54334c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a2, a2, 4
54434c01a60SPhilip Reames; RV64-BOTH-NEXT:    addi a2, a2, 256
54534c01a60SPhilip Reames; RV64-BOTH-NEXT:    mulhu a1, a1, a2
54634c01a60SPhilip Reames; RV64-BOTH-NEXT:    sw a1, 0(a0)
54734c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
54834c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 4 %a, i8 %value, i64 4, i1 0)
54934c01a60SPhilip Reames  ret void
55034c01a60SPhilip Reames}
55134c01a60SPhilip Reames
55234c01a60SPhilip Reamesdefine void @aligned_memset_8(ptr align 8 %a, i8 %value) nounwind {
55334c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_8:
55434c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
55534c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a1, a1, 255
55634c01a60SPhilip Reames; RV32-BOTH-NEXT:    lui a2, 4112
55734c01a60SPhilip Reames; RV32-BOTH-NEXT:    addi a2, a2, 257
55834c01a60SPhilip Reames; RV32-BOTH-NEXT:    mul a1, a1, a2
55934c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 0(a0)
560*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 4(a0)
56134c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
56234c01a60SPhilip Reames;
56334c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_8:
56434c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
56534c01a60SPhilip Reames; RV64-BOTH-NEXT:    andi a1, a1, 255
56634c01a60SPhilip Reames; RV64-BOTH-NEXT:    lui a2, 4112
56734c01a60SPhilip Reames; RV64-BOTH-NEXT:    addiw a2, a2, 257
56834c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a3, a2, 32
56934c01a60SPhilip Reames; RV64-BOTH-NEXT:    add a2, a2, a3
57034c01a60SPhilip Reames; RV64-BOTH-NEXT:    mul a1, a1, a2
57134c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd a1, 0(a0)
57234c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
57334c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 8 %a, i8 %value, i64 8, i1 0)
57434c01a60SPhilip Reames  ret void
57534c01a60SPhilip Reames}
57634c01a60SPhilip Reames
57734c01a60SPhilip Reamesdefine void @aligned_memset_16(ptr align 16 %a, i8 %value) nounwind {
57834c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_16:
57934c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
58034c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a1, a1, 255
58134c01a60SPhilip Reames; RV32-BOTH-NEXT:    lui a2, 4112
58234c01a60SPhilip Reames; RV32-BOTH-NEXT:    addi a2, a2, 257
58334c01a60SPhilip Reames; RV32-BOTH-NEXT:    mul a1, a1, a2
58434c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 0(a0)
585*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 4(a0)
586*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 8(a0)
587*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 12(a0)
58834c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
58934c01a60SPhilip Reames;
59034c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_16:
59134c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
59234c01a60SPhilip Reames; RV64-BOTH-NEXT:    andi a1, a1, 255
59334c01a60SPhilip Reames; RV64-BOTH-NEXT:    lui a2, 4112
59434c01a60SPhilip Reames; RV64-BOTH-NEXT:    addiw a2, a2, 257
59534c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a3, a2, 32
59634c01a60SPhilip Reames; RV64-BOTH-NEXT:    add a2, a2, a3
59734c01a60SPhilip Reames; RV64-BOTH-NEXT:    mul a1, a1, a2
59834c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd a1, 0(a0)
599*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 8(a0)
60034c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
60134c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 16 %a, i8 %value, i64 16, i1 0)
60234c01a60SPhilip Reames  ret void
60334c01a60SPhilip Reames}
60434c01a60SPhilip Reames
60534c01a60SPhilip Reamesdefine void @aligned_memset_32(ptr align 32 %a, i8 %value) nounwind {
60634c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_32:
60734c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
60834c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a1, a1, 255
60934c01a60SPhilip Reames; RV32-BOTH-NEXT:    lui a2, 4112
61034c01a60SPhilip Reames; RV32-BOTH-NEXT:    addi a2, a2, 257
61134c01a60SPhilip Reames; RV32-BOTH-NEXT:    mul a1, a1, a2
61234c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 16(a0)
613*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 20(a0)
614*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 24(a0)
615*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 28(a0)
61634c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 0(a0)
617*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 4(a0)
618*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 8(a0)
619*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 12(a0)
62034c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
62134c01a60SPhilip Reames;
62234c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_32:
62334c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
62434c01a60SPhilip Reames; RV64-BOTH-NEXT:    andi a1, a1, 255
62534c01a60SPhilip Reames; RV64-BOTH-NEXT:    lui a2, 4112
62634c01a60SPhilip Reames; RV64-BOTH-NEXT:    addiw a2, a2, 257
62734c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a3, a2, 32
62834c01a60SPhilip Reames; RV64-BOTH-NEXT:    add a2, a2, a3
62934c01a60SPhilip Reames; RV64-BOTH-NEXT:    mul a1, a1, a2
63034c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd a1, 0(a0)
631*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 8(a0)
632*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 16(a0)
633*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 24(a0)
63434c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
63534c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 32 %a, i8 %value, i64 32, i1 0)
63634c01a60SPhilip Reames  ret void
63734c01a60SPhilip Reames}
63834c01a60SPhilip Reames
63934c01a60SPhilip Reamesdefine void @aligned_memset_64(ptr align 64 %a, i8 %value) nounwind {
64034c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_memset_64:
64134c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
64234c01a60SPhilip Reames; RV32-BOTH-NEXT:    andi a1, a1, 255
64334c01a60SPhilip Reames; RV32-BOTH-NEXT:    lui a2, 4112
64434c01a60SPhilip Reames; RV32-BOTH-NEXT:    addi a2, a2, 257
64534c01a60SPhilip Reames; RV32-BOTH-NEXT:    mul a1, a1, a2
64634c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 48(a0)
647*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 52(a0)
648*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 56(a0)
649*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 60(a0)
65034c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 32(a0)
651*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 36(a0)
652*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 40(a0)
653*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 44(a0)
65434c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 16(a0)
655*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 20(a0)
656*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 24(a0)
657*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 28(a0)
65834c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw a1, 0(a0)
659*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 4(a0)
660*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 8(a0)
661*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw a1, 12(a0)
66234c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
66334c01a60SPhilip Reames;
66434c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_memset_64:
66534c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
66634c01a60SPhilip Reames; RV64-BOTH-NEXT:    andi a1, a1, 255
66734c01a60SPhilip Reames; RV64-BOTH-NEXT:    lui a2, 4112
66834c01a60SPhilip Reames; RV64-BOTH-NEXT:    addiw a2, a2, 257
66934c01a60SPhilip Reames; RV64-BOTH-NEXT:    slli a3, a2, 32
67034c01a60SPhilip Reames; RV64-BOTH-NEXT:    add a2, a2, a3
67134c01a60SPhilip Reames; RV64-BOTH-NEXT:    mul a1, a1, a2
67234c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd a1, 32(a0)
673*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 40(a0)
674*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 48(a0)
675*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 56(a0)
67634c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd a1, 0(a0)
677*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 8(a0)
678*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 16(a0)
679*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd a1, 24(a0)
68034c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
68134c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 64 %a, i8 %value, i64 64, i1 0)
68234c01a60SPhilip Reames  ret void
68334c01a60SPhilip Reames}
68434c01a60SPhilip Reames
68534c01a60SPhilip Reames; /////////////////////////////////////////////////////////////////////////////
68634c01a60SPhilip Reames
68734c01a60SPhilip Reamesdefine void @bzero_1(ptr %a) nounwind {
68834c01a60SPhilip Reames; RV32-BOTH-LABEL: bzero_1:
68934c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
69034c01a60SPhilip Reames; RV32-BOTH-NEXT:    sb zero, 0(a0)
69134c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
69234c01a60SPhilip Reames;
69334c01a60SPhilip Reames; RV64-BOTH-LABEL: bzero_1:
69434c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
69534c01a60SPhilip Reames; RV64-BOTH-NEXT:    sb zero, 0(a0)
69634c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
69734c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 1, i1 0)
69834c01a60SPhilip Reames  ret void
69934c01a60SPhilip Reames}
70034c01a60SPhilip Reames
70134c01a60SPhilip Reamesdefine void @bzero_2(ptr %a) nounwind {
70234c01a60SPhilip Reames; RV32-LABEL: bzero_2:
70334c01a60SPhilip Reames; RV32:       # %bb.0:
70434c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
705*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
70634c01a60SPhilip Reames; RV32-NEXT:    ret
70734c01a60SPhilip Reames;
70834c01a60SPhilip Reames; RV64-LABEL: bzero_2:
70934c01a60SPhilip Reames; RV64:       # %bb.0:
71034c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
711*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
71234c01a60SPhilip Reames; RV64-NEXT:    ret
71334c01a60SPhilip Reames;
71434c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_2:
71534c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
71634c01a60SPhilip Reames; RV32-FAST-NEXT:    sh zero, 0(a0)
71734c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
71834c01a60SPhilip Reames;
71934c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_2:
72034c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
72134c01a60SPhilip Reames; RV64-FAST-NEXT:    sh zero, 0(a0)
72234c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
72334c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 2, i1 0)
72434c01a60SPhilip Reames  ret void
72534c01a60SPhilip Reames}
72634c01a60SPhilip Reames
72734c01a60SPhilip Reamesdefine void @bzero_4(ptr %a) nounwind {
72834c01a60SPhilip Reames; RV32-LABEL: bzero_4:
72934c01a60SPhilip Reames; RV32:       # %bb.0:
73034c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
731*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
732*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 2(a0)
733*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 3(a0)
73434c01a60SPhilip Reames; RV32-NEXT:    ret
73534c01a60SPhilip Reames;
73634c01a60SPhilip Reames; RV64-LABEL: bzero_4:
73734c01a60SPhilip Reames; RV64:       # %bb.0:
73834c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
739*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
740*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 2(a0)
741*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 3(a0)
74234c01a60SPhilip Reames; RV64-NEXT:    ret
74334c01a60SPhilip Reames;
74434c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_4:
74534c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
74634c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 0(a0)
74734c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
74834c01a60SPhilip Reames;
74934c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_4:
75034c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
75134c01a60SPhilip Reames; RV64-FAST-NEXT:    sw zero, 0(a0)
75234c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
75334c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 4, i1 0)
75434c01a60SPhilip Reames  ret void
75534c01a60SPhilip Reames}
75634c01a60SPhilip Reames
75734c01a60SPhilip Reamesdefine void @bzero_8(ptr %a) nounwind {
75834c01a60SPhilip Reames; RV32-LABEL: bzero_8:
75934c01a60SPhilip Reames; RV32:       # %bb.0:
76034c01a60SPhilip Reames; RV32-NEXT:    sb zero, 4(a0)
761*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 5(a0)
762*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 6(a0)
763*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 7(a0)
76434c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
765*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
766*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 2(a0)
767*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 3(a0)
76834c01a60SPhilip Reames; RV32-NEXT:    ret
76934c01a60SPhilip Reames;
77034c01a60SPhilip Reames; RV64-LABEL: bzero_8:
77134c01a60SPhilip Reames; RV64:       # %bb.0:
77234c01a60SPhilip Reames; RV64-NEXT:    sb zero, 4(a0)
773*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 5(a0)
774*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 6(a0)
775*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 7(a0)
77634c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
777*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
778*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 2(a0)
779*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 3(a0)
78034c01a60SPhilip Reames; RV64-NEXT:    ret
78134c01a60SPhilip Reames;
78234c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_8:
78334c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
78434c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 0(a0)
785*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 4(a0)
78634c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
78734c01a60SPhilip Reames;
78834c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_8:
78934c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
79034c01a60SPhilip Reames; RV64-FAST-NEXT:    sd zero, 0(a0)
79134c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
79234c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 8, i1 0)
79334c01a60SPhilip Reames  ret void
79434c01a60SPhilip Reames}
79534c01a60SPhilip Reames
79634c01a60SPhilip Reamesdefine void @bzero_16(ptr %a) nounwind {
79734c01a60SPhilip Reames; RV32-LABEL: bzero_16:
79834c01a60SPhilip Reames; RV32:       # %bb.0:
79934c01a60SPhilip Reames; RV32-NEXT:    sb zero, 12(a0)
800*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 13(a0)
801*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 14(a0)
802*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 15(a0)
80334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 8(a0)
804*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 9(a0)
805*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 10(a0)
806*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 11(a0)
80734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 4(a0)
808*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 5(a0)
809*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 6(a0)
810*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 7(a0)
81134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
812*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
813*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 2(a0)
814*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 3(a0)
81534c01a60SPhilip Reames; RV32-NEXT:    ret
81634c01a60SPhilip Reames;
81734c01a60SPhilip Reames; RV64-LABEL: bzero_16:
81834c01a60SPhilip Reames; RV64:       # %bb.0:
81934c01a60SPhilip Reames; RV64-NEXT:    sb zero, 12(a0)
820*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 13(a0)
821*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 14(a0)
822*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 15(a0)
82334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 8(a0)
824*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 9(a0)
825*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 10(a0)
826*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 11(a0)
82734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 4(a0)
828*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 5(a0)
829*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 6(a0)
830*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 7(a0)
83134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
832*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
833*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 2(a0)
834*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 3(a0)
83534c01a60SPhilip Reames; RV64-NEXT:    ret
83634c01a60SPhilip Reames;
83734c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_16:
83834c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
83934c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 0(a0)
840*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 4(a0)
841*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 8(a0)
842*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 12(a0)
84334c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
84434c01a60SPhilip Reames;
84534c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_16:
84634c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
84734c01a60SPhilip Reames; RV64-FAST-NEXT:    sd zero, 0(a0)
848*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 8(a0)
84934c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
85034c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 16, i1 0)
85134c01a60SPhilip Reames  ret void
85234c01a60SPhilip Reames}
85334c01a60SPhilip Reames
85434c01a60SPhilip Reamesdefine void @bzero_32(ptr %a) nounwind {
85534c01a60SPhilip Reames; RV32-LABEL: bzero_32:
85634c01a60SPhilip Reames; RV32:       # %bb.0:
85734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 28(a0)
858*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 29(a0)
859*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 30(a0)
860*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 31(a0)
86134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 24(a0)
862*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 25(a0)
863*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 26(a0)
864*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 27(a0)
86534c01a60SPhilip Reames; RV32-NEXT:    sb zero, 20(a0)
866*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 21(a0)
867*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 22(a0)
868*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 23(a0)
86934c01a60SPhilip Reames; RV32-NEXT:    sb zero, 16(a0)
870*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 17(a0)
871*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 18(a0)
872*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 19(a0)
87334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 12(a0)
874*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 13(a0)
875*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 14(a0)
876*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 15(a0)
87734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 8(a0)
878*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 9(a0)
879*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 10(a0)
880*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 11(a0)
88134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 4(a0)
882*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 5(a0)
883*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 6(a0)
884*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 7(a0)
88534c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
886*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
887*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 2(a0)
888*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 3(a0)
88934c01a60SPhilip Reames; RV32-NEXT:    ret
89034c01a60SPhilip Reames;
89134c01a60SPhilip Reames; RV64-LABEL: bzero_32:
89234c01a60SPhilip Reames; RV64:       # %bb.0:
89334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 28(a0)
894*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 29(a0)
895*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 30(a0)
896*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 31(a0)
89734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 24(a0)
898*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 25(a0)
899*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 26(a0)
900*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 27(a0)
90134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 20(a0)
902*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 21(a0)
903*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 22(a0)
904*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 23(a0)
90534c01a60SPhilip Reames; RV64-NEXT:    sb zero, 16(a0)
906*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 17(a0)
907*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 18(a0)
908*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 19(a0)
90934c01a60SPhilip Reames; RV64-NEXT:    sb zero, 12(a0)
910*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 13(a0)
911*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 14(a0)
912*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 15(a0)
91334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 8(a0)
914*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 9(a0)
915*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 10(a0)
916*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 11(a0)
91734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 4(a0)
918*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 5(a0)
919*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 6(a0)
920*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 7(a0)
92134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
922*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
923*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 2(a0)
924*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 3(a0)
92534c01a60SPhilip Reames; RV64-NEXT:    ret
92634c01a60SPhilip Reames;
92734c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_32:
92834c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
92934c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 16(a0)
930*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 20(a0)
931*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 24(a0)
932*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 28(a0)
93334c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 0(a0)
934*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 4(a0)
935*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 8(a0)
936*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 12(a0)
93734c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
93834c01a60SPhilip Reames;
93934c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_32:
94034c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
94134c01a60SPhilip Reames; RV64-FAST-NEXT:    sd zero, 0(a0)
942*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 8(a0)
943*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 16(a0)
944*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 24(a0)
94534c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
94634c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 32, i1 0)
94734c01a60SPhilip Reames  ret void
94834c01a60SPhilip Reames}
94934c01a60SPhilip Reames
95034c01a60SPhilip Reamesdefine void @bzero_64(ptr %a) nounwind {
95134c01a60SPhilip Reames; RV32-LABEL: bzero_64:
95234c01a60SPhilip Reames; RV32:       # %bb.0:
95334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 60(a0)
954*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 61(a0)
955*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 62(a0)
956*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 63(a0)
95734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 56(a0)
958*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 57(a0)
959*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 58(a0)
960*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 59(a0)
96134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 52(a0)
962*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 53(a0)
963*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 54(a0)
964*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 55(a0)
96534c01a60SPhilip Reames; RV32-NEXT:    sb zero, 48(a0)
966*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 49(a0)
967*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 50(a0)
968*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 51(a0)
96934c01a60SPhilip Reames; RV32-NEXT:    sb zero, 44(a0)
970*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 45(a0)
971*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 46(a0)
972*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 47(a0)
97334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 40(a0)
974*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 41(a0)
975*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 42(a0)
976*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 43(a0)
97734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 36(a0)
978*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 37(a0)
979*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 38(a0)
980*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 39(a0)
98134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 32(a0)
982*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 33(a0)
983*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 34(a0)
984*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 35(a0)
98534c01a60SPhilip Reames; RV32-NEXT:    sb zero, 28(a0)
986*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 29(a0)
987*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 30(a0)
988*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 31(a0)
98934c01a60SPhilip Reames; RV32-NEXT:    sb zero, 24(a0)
990*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 25(a0)
991*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 26(a0)
992*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 27(a0)
99334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 20(a0)
994*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 21(a0)
995*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 22(a0)
996*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 23(a0)
99734c01a60SPhilip Reames; RV32-NEXT:    sb zero, 16(a0)
998*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 17(a0)
999*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 18(a0)
1000*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 19(a0)
100134c01a60SPhilip Reames; RV32-NEXT:    sb zero, 12(a0)
1002*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 13(a0)
1003*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 14(a0)
1004*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 15(a0)
100534c01a60SPhilip Reames; RV32-NEXT:    sb zero, 8(a0)
1006*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 9(a0)
1007*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 10(a0)
1008*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 11(a0)
100934c01a60SPhilip Reames; RV32-NEXT:    sb zero, 4(a0)
1010*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 5(a0)
1011*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 6(a0)
1012*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 7(a0)
101334c01a60SPhilip Reames; RV32-NEXT:    sb zero, 0(a0)
1014*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 1(a0)
1015*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 2(a0)
1016*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 3(a0)
101734c01a60SPhilip Reames; RV32-NEXT:    ret
101834c01a60SPhilip Reames;
101934c01a60SPhilip Reames; RV64-LABEL: bzero_64:
102034c01a60SPhilip Reames; RV64:       # %bb.0:
102134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 60(a0)
1022*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 61(a0)
1023*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 62(a0)
1024*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 63(a0)
102534c01a60SPhilip Reames; RV64-NEXT:    sb zero, 56(a0)
1026*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 57(a0)
1027*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 58(a0)
1028*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 59(a0)
102934c01a60SPhilip Reames; RV64-NEXT:    sb zero, 52(a0)
1030*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 53(a0)
1031*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 54(a0)
1032*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 55(a0)
103334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 48(a0)
1034*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 49(a0)
1035*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 50(a0)
1036*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 51(a0)
103734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 44(a0)
1038*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 45(a0)
1039*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 46(a0)
1040*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 47(a0)
104134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 40(a0)
1042*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 41(a0)
1043*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 42(a0)
1044*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 43(a0)
104534c01a60SPhilip Reames; RV64-NEXT:    sb zero, 36(a0)
1046*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 37(a0)
1047*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 38(a0)
1048*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 39(a0)
104934c01a60SPhilip Reames; RV64-NEXT:    sb zero, 32(a0)
1050*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 33(a0)
1051*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 34(a0)
1052*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 35(a0)
105334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 28(a0)
1054*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 29(a0)
1055*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 30(a0)
1056*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 31(a0)
105734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 24(a0)
1058*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 25(a0)
1059*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 26(a0)
1060*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 27(a0)
106134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 20(a0)
1062*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 21(a0)
1063*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 22(a0)
1064*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 23(a0)
106534c01a60SPhilip Reames; RV64-NEXT:    sb zero, 16(a0)
1066*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 17(a0)
1067*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 18(a0)
1068*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 19(a0)
106934c01a60SPhilip Reames; RV64-NEXT:    sb zero, 12(a0)
1070*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 13(a0)
1071*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 14(a0)
1072*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 15(a0)
107334c01a60SPhilip Reames; RV64-NEXT:    sb zero, 8(a0)
1074*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 9(a0)
1075*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 10(a0)
1076*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 11(a0)
107734c01a60SPhilip Reames; RV64-NEXT:    sb zero, 4(a0)
1078*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 5(a0)
1079*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 6(a0)
1080*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 7(a0)
108134c01a60SPhilip Reames; RV64-NEXT:    sb zero, 0(a0)
1082*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 1(a0)
1083*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 2(a0)
1084*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 3(a0)
108534c01a60SPhilip Reames; RV64-NEXT:    ret
108634c01a60SPhilip Reames;
108734c01a60SPhilip Reames; RV32-FAST-LABEL: bzero_64:
108834c01a60SPhilip Reames; RV32-FAST:       # %bb.0:
108934c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 48(a0)
1090*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 52(a0)
1091*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 56(a0)
1092*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 60(a0)
109334c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 32(a0)
1094*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 36(a0)
1095*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 40(a0)
1096*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 44(a0)
109734c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 16(a0)
1098*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 20(a0)
1099*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 24(a0)
1100*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 28(a0)
110134c01a60SPhilip Reames; RV32-FAST-NEXT:    sw zero, 0(a0)
1102*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 4(a0)
1103*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 8(a0)
1104*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 12(a0)
110534c01a60SPhilip Reames; RV32-FAST-NEXT:    ret
110634c01a60SPhilip Reames;
110734c01a60SPhilip Reames; RV64-FAST-LABEL: bzero_64:
110834c01a60SPhilip Reames; RV64-FAST:       # %bb.0:
110934c01a60SPhilip Reames; RV64-FAST-NEXT:    sd zero, 32(a0)
1110*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 40(a0)
1111*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 48(a0)
1112*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 56(a0)
111334c01a60SPhilip Reames; RV64-FAST-NEXT:    sd zero, 0(a0)
1114*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 8(a0)
1115*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 16(a0)
1116*2967e5f8SAlex Bradbury; RV64-FAST-NEXT:    sd zero, 24(a0)
111734c01a60SPhilip Reames; RV64-FAST-NEXT:    ret
111834c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr %a, i8 0, i64 64, i1 0)
111934c01a60SPhilip Reames  ret void
112034c01a60SPhilip Reames}
112134c01a60SPhilip Reames
112234c01a60SPhilip Reames; /////////////////////////////////////////////////////////////////////////////
112334c01a60SPhilip Reames
112434c01a60SPhilip Reamesdefine void @aligned_bzero_2(ptr %a) nounwind {
112534c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_2:
112634c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
112734c01a60SPhilip Reames; RV32-BOTH-NEXT:    sh zero, 0(a0)
112834c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
112934c01a60SPhilip Reames;
113034c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_2:
113134c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
113234c01a60SPhilip Reames; RV64-BOTH-NEXT:    sh zero, 0(a0)
113334c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
113434c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 2 %a, i8 0, i64 2, i1 0)
113534c01a60SPhilip Reames  ret void
113634c01a60SPhilip Reames}
113734c01a60SPhilip Reames
113834c01a60SPhilip Reamesdefine void @aligned_bzero_4(ptr %a) nounwind {
113934c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_4:
114034c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
114134c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 0(a0)
114234c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
114334c01a60SPhilip Reames;
114434c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_4:
114534c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
114634c01a60SPhilip Reames; RV64-BOTH-NEXT:    sw zero, 0(a0)
114734c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
114834c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 4 %a, i8 0, i64 4, i1 0)
114934c01a60SPhilip Reames  ret void
115034c01a60SPhilip Reames}
115134c01a60SPhilip Reames
115234c01a60SPhilip Reamesdefine void @aligned_bzero_8(ptr %a) nounwind {
115334c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_8:
115434c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
115534c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 0(a0)
1156*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 4(a0)
115734c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
115834c01a60SPhilip Reames;
115934c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_8:
116034c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
116134c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd zero, 0(a0)
116234c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
116334c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 8 %a, i8 0, i64 8, i1 0)
116434c01a60SPhilip Reames  ret void
116534c01a60SPhilip Reames}
116634c01a60SPhilip Reames
116734c01a60SPhilip Reames
116834c01a60SPhilip Reamesdefine void @aligned_bzero_16(ptr %a) nounwind {
116934c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_16:
117034c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
117134c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 0(a0)
1172*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 4(a0)
1173*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 8(a0)
1174*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 12(a0)
117534c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
117634c01a60SPhilip Reames;
117734c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_16:
117834c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
117934c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd zero, 0(a0)
1180*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 8(a0)
118134c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
118234c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 16 %a, i8 0, i64 16, i1 0)
118334c01a60SPhilip Reames  ret void
118434c01a60SPhilip Reames}
118534c01a60SPhilip Reames
118634c01a60SPhilip Reamesdefine void @aligned_bzero_32(ptr %a) nounwind {
118734c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_32:
118834c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
118934c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 16(a0)
1190*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 20(a0)
1191*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 24(a0)
1192*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 28(a0)
119334c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 0(a0)
1194*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 4(a0)
1195*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 8(a0)
1196*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 12(a0)
119734c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
119834c01a60SPhilip Reames;
119934c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_32:
120034c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
120134c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd zero, 0(a0)
1202*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 8(a0)
1203*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 16(a0)
1204*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 24(a0)
120534c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
120634c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 32 %a, i8 0, i64 32, i1 0)
120734c01a60SPhilip Reames  ret void
120834c01a60SPhilip Reames}
120934c01a60SPhilip Reames
121034c01a60SPhilip Reamesdefine void @aligned_bzero_64(ptr %a) nounwind {
121134c01a60SPhilip Reames; RV32-BOTH-LABEL: aligned_bzero_64:
121234c01a60SPhilip Reames; RV32-BOTH:       # %bb.0:
121334c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 48(a0)
1214*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 52(a0)
1215*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 56(a0)
1216*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 60(a0)
121734c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 32(a0)
1218*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 36(a0)
1219*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 40(a0)
1220*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 44(a0)
122134c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 16(a0)
1222*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 20(a0)
1223*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 24(a0)
1224*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 28(a0)
122534c01a60SPhilip Reames; RV32-BOTH-NEXT:    sw zero, 0(a0)
1226*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 4(a0)
1227*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 8(a0)
1228*2967e5f8SAlex Bradbury; RV32-BOTH-NEXT:    sw zero, 12(a0)
122934c01a60SPhilip Reames; RV32-BOTH-NEXT:    ret
123034c01a60SPhilip Reames;
123134c01a60SPhilip Reames; RV64-BOTH-LABEL: aligned_bzero_64:
123234c01a60SPhilip Reames; RV64-BOTH:       # %bb.0:
123334c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd zero, 32(a0)
1234*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 40(a0)
1235*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 48(a0)
1236*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 56(a0)
123734c01a60SPhilip Reames; RV64-BOTH-NEXT:    sd zero, 0(a0)
1238*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 8(a0)
1239*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 16(a0)
1240*2967e5f8SAlex Bradbury; RV64-BOTH-NEXT:    sd zero, 24(a0)
124134c01a60SPhilip Reames; RV64-BOTH-NEXT:    ret
124234c01a60SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 64 %a, i8 0, i64 64, i1 0)
124334c01a60SPhilip Reames  ret void
124434c01a60SPhilip Reames}
12454f057f52SPhilip Reames
12464f057f52SPhilip Reames
12474f057f52SPhilip Reames; /////////////////////////////////////////////////////////////////////////////
12484f057f52SPhilip Reames; Usual overlap tricks
12494f057f52SPhilip Reames
12504f057f52SPhilip Reamesdefine void @aligned_bzero_7(ptr %a) nounwind {
12515b95bba6SLuke Lau; RV32-LABEL: aligned_bzero_7:
12525b95bba6SLuke Lau; RV32:       # %bb.0:
12535b95bba6SLuke Lau; RV32-NEXT:    sw zero, 0(a0)
1254*2967e5f8SAlex Bradbury; RV32-NEXT:    sh zero, 4(a0)
1255*2967e5f8SAlex Bradbury; RV32-NEXT:    sb zero, 6(a0)
12565b95bba6SLuke Lau; RV32-NEXT:    ret
12574f057f52SPhilip Reames;
12585b95bba6SLuke Lau; RV64-LABEL: aligned_bzero_7:
12595b95bba6SLuke Lau; RV64:       # %bb.0:
12605b95bba6SLuke Lau; RV64-NEXT:    sw zero, 0(a0)
1261*2967e5f8SAlex Bradbury; RV64-NEXT:    sh zero, 4(a0)
1262*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 6(a0)
12635b95bba6SLuke Lau; RV64-NEXT:    ret
12645b95bba6SLuke Lau;
12655b95bba6SLuke Lau; RV32-FAST-LABEL: aligned_bzero_7:
12665b95bba6SLuke Lau; RV32-FAST:       # %bb.0:
12675b95bba6SLuke Lau; RV32-FAST-NEXT:    sw zero, 3(a0)
12685b95bba6SLuke Lau; RV32-FAST-NEXT:    sw zero, 0(a0)
12695b95bba6SLuke Lau; RV32-FAST-NEXT:    ret
12705b95bba6SLuke Lau;
12715b95bba6SLuke Lau; RV64-FAST-LABEL: aligned_bzero_7:
12725b95bba6SLuke Lau; RV64-FAST:       # %bb.0:
12735b95bba6SLuke Lau; RV64-FAST-NEXT:    sw zero, 3(a0)
12745b95bba6SLuke Lau; RV64-FAST-NEXT:    sw zero, 0(a0)
12755b95bba6SLuke Lau; RV64-FAST-NEXT:    ret
12764f057f52SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 8 %a, i8 0, i64 7, i1 0)
12774f057f52SPhilip Reames  ret void
12784f057f52SPhilip Reames}
12794f057f52SPhilip Reames
12804f057f52SPhilip Reamesdefine void @aligned_bzero_15(ptr %a) nounwind {
12815b95bba6SLuke Lau; RV32-LABEL: aligned_bzero_15:
12825b95bba6SLuke Lau; RV32:       # %bb.0:
12835b95bba6SLuke Lau; RV32-NEXT:    sb zero, 14(a0)
12845b95bba6SLuke Lau; RV32-NEXT:    sw zero, 0(a0)
1285*2967e5f8SAlex Bradbury; RV32-NEXT:    sw zero, 4(a0)
1286*2967e5f8SAlex Bradbury; RV32-NEXT:    sw zero, 8(a0)
1287*2967e5f8SAlex Bradbury; RV32-NEXT:    sh zero, 12(a0)
12885b95bba6SLuke Lau; RV32-NEXT:    ret
12894f057f52SPhilip Reames;
12905b95bba6SLuke Lau; RV64-LABEL: aligned_bzero_15:
12915b95bba6SLuke Lau; RV64:       # %bb.0:
12925b95bba6SLuke Lau; RV64-NEXT:    sd zero, 0(a0)
1293*2967e5f8SAlex Bradbury; RV64-NEXT:    sw zero, 8(a0)
1294*2967e5f8SAlex Bradbury; RV64-NEXT:    sh zero, 12(a0)
1295*2967e5f8SAlex Bradbury; RV64-NEXT:    sb zero, 14(a0)
12965b95bba6SLuke Lau; RV64-NEXT:    ret
12975b95bba6SLuke Lau;
12985b95bba6SLuke Lau; RV32-FAST-LABEL: aligned_bzero_15:
12995b95bba6SLuke Lau; RV32-FAST:       # %bb.0:
13005b95bba6SLuke Lau; RV32-FAST-NEXT:    sw zero, 11(a0)
13015b95bba6SLuke Lau; RV32-FAST-NEXT:    sw zero, 0(a0)
1302*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 4(a0)
1303*2967e5f8SAlex Bradbury; RV32-FAST-NEXT:    sw zero, 8(a0)
13045b95bba6SLuke Lau; RV32-FAST-NEXT:    ret
13055b95bba6SLuke Lau;
13065b95bba6SLuke Lau; RV64-FAST-LABEL: aligned_bzero_15:
13075b95bba6SLuke Lau; RV64-FAST:       # %bb.0:
13085b95bba6SLuke Lau; RV64-FAST-NEXT:    sd zero, 7(a0)
13095b95bba6SLuke Lau; RV64-FAST-NEXT:    sd zero, 0(a0)
13105b95bba6SLuke Lau; RV64-FAST-NEXT:    ret
13114f057f52SPhilip Reames  tail call void @llvm.memset.inline.p0.i64(ptr align 8 %a, i8 0, i64 15, i1 0)
13124f057f52SPhilip Reames  ret void
13134f057f52SPhilip Reames}
1314