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