xref: /llvm-project/llvm/test/CodeGen/RISCV/clear-cache.ll (revision 5ef02d9963765514f094092d6635eb8b4f1f9ce6)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2; RUN: llc -mtriple=riscv32 < %s | FileCheck --check-prefix=RV32 %s
3; RUN: llc -mtriple=riscv64 < %s | FileCheck --check-prefix=RV64 %s
4; RUN: llc -mtriple=riscv32-unknown-linux-gnu < %s | FileCheck --check-prefix=RV32-LINUX %s
5; RUN: llc -mtriple=riscv64-unknown-linux-gnu < %s | FileCheck --check-prefix=RV64-LINUX %s
6; RUN: llc -mtriple=riscv32-unknown-linux-musl < %s | FileCheck --check-prefix=RV32-LINUX %s
7; RUN: llc -mtriple=riscv64-unknown-linux-musl < %s | FileCheck --check-prefix=RV64-LINUX %s
8
9declare void @llvm.clear_cache(ptr, ptr)
10
11define void @foo(ptr %a, ptr %b) nounwind {
12; RV32-LABEL: foo:
13; RV32:       # %bb.0:
14; RV32-NEXT:    addi sp, sp, -16
15; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
16; RV32-NEXT:    call __clear_cache
17; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
18; RV32-NEXT:    addi sp, sp, 16
19; RV32-NEXT:    ret
20;
21; RV64-LABEL: foo:
22; RV64:       # %bb.0:
23; RV64-NEXT:    addi sp, sp, -16
24; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
25; RV64-NEXT:    call __clear_cache
26; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
27; RV64-NEXT:    addi sp, sp, 16
28; RV64-NEXT:    ret
29;
30; RV32-LINUX-LABEL: foo:
31; RV32-LINUX:       # %bb.0:
32; RV32-LINUX-NEXT:    addi sp, sp, -16
33; RV32-LINUX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
34; RV32-LINUX-NEXT:    li a2, 0
35; RV32-LINUX-NEXT:    call __riscv_flush_icache
36; RV32-LINUX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
37; RV32-LINUX-NEXT:    addi sp, sp, 16
38; RV32-LINUX-NEXT:    ret
39;
40; RV64-LINUX-LABEL: foo:
41; RV64-LINUX:       # %bb.0:
42; RV64-LINUX-NEXT:    addi sp, sp, -16
43; RV64-LINUX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
44; RV64-LINUX-NEXT:    li a2, 0
45; RV64-LINUX-NEXT:    call __riscv_flush_icache
46; RV64-LINUX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
47; RV64-LINUX-NEXT:    addi sp, sp, 16
48; RV64-LINUX-NEXT:    ret
49  call void @llvm.clear_cache(ptr %a, ptr %b)
50  ret void
51}
52