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