1d4ed253dSFraser Cormack; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2d4ed253dSFraser Cormack; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \ 3d4ed253dSFraser Cormack; RUN: | FileCheck %s --check-prefix=RV32I 4d4ed253dSFraser Cormack; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ 5d4ed253dSFraser Cormack; RUN: | FileCheck %s --check-prefix=RV64I 6d4ed253dSFraser Cormack 71456b686SNikita Popovdefine void @cast0(ptr addrspace(1) %ptr) { 8d4ed253dSFraser Cormack; RV32I-LABEL: cast0: 9d4ed253dSFraser Cormack; RV32I: # %bb.0: 10d4ed253dSFraser Cormack; RV32I-NEXT: sw zero, 0(a0) 11d4ed253dSFraser Cormack; RV32I-NEXT: ret 12d4ed253dSFraser Cormack; 13d4ed253dSFraser Cormack; RV64I-LABEL: cast0: 14d4ed253dSFraser Cormack; RV64I: # %bb.0: 15d4ed253dSFraser Cormack; RV64I-NEXT: sw zero, 0(a0) 16d4ed253dSFraser Cormack; RV64I-NEXT: ret 171456b686SNikita Popov %ptr0 = addrspacecast ptr addrspace(1) %ptr to ptr addrspace(0) 181456b686SNikita Popov store i32 0, ptr %ptr0 19d4ed253dSFraser Cormack ret void 20d4ed253dSFraser Cormack} 21d4ed253dSFraser Cormack 221456b686SNikita Popovdefine void @cast1(ptr %ptr) { 23d4ed253dSFraser Cormack; RV32I-LABEL: cast1: 24d4ed253dSFraser Cormack; RV32I: # %bb.0: 25d4ed253dSFraser Cormack; RV32I-NEXT: addi sp, sp, -16 26d4ed253dSFraser Cormack; RV32I-NEXT: .cfi_def_cfa_offset 16 27d4ed253dSFraser Cormack; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 28d4ed253dSFraser Cormack; RV32I-NEXT: .cfi_offset ra, -4 29eabaee0cSFangrui Song; RV32I-NEXT: call foo 30d4ed253dSFraser Cormack; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31*97982a8cSdlav-sc; RV32I-NEXT: .cfi_restore ra 32d4ed253dSFraser Cormack; RV32I-NEXT: addi sp, sp, 16 33*97982a8cSdlav-sc; RV32I-NEXT: .cfi_def_cfa_offset 0 34d4ed253dSFraser Cormack; RV32I-NEXT: ret 35d4ed253dSFraser Cormack; 36d4ed253dSFraser Cormack; RV64I-LABEL: cast1: 37d4ed253dSFraser Cormack; RV64I: # %bb.0: 38d4ed253dSFraser Cormack; RV64I-NEXT: addi sp, sp, -16 39d4ed253dSFraser Cormack; RV64I-NEXT: .cfi_def_cfa_offset 16 40d4ed253dSFraser Cormack; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41d4ed253dSFraser Cormack; RV64I-NEXT: .cfi_offset ra, -8 42eabaee0cSFangrui Song; RV64I-NEXT: call foo 43d4ed253dSFraser Cormack; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44*97982a8cSdlav-sc; RV64I-NEXT: .cfi_restore ra 45d4ed253dSFraser Cormack; RV64I-NEXT: addi sp, sp, 16 46*97982a8cSdlav-sc; RV64I-NEXT: .cfi_def_cfa_offset 0 47d4ed253dSFraser Cormack; RV64I-NEXT: ret 481456b686SNikita Popov %castptr = addrspacecast ptr %ptr to ptr addrspace(10) 491456b686SNikita Popov call void @foo(ptr addrspace(10) %castptr) 50d4ed253dSFraser Cormack ret void 51d4ed253dSFraser Cormack} 52d4ed253dSFraser Cormack 531456b686SNikita Popovdeclare void @foo(ptr addrspace(10)) 54