1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \ 3; RUN: | FileCheck %s --check-prefix=RV32I 4; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ 5; RUN: | FileCheck %s --check-prefix=RV64I 6 7define void @cast0(i32 addrspace(1)* %ptr) { 8; RV32I-LABEL: cast0: 9; RV32I: # %bb.0: 10; RV32I-NEXT: sw zero, 0(a0) 11; RV32I-NEXT: ret 12; 13; RV64I-LABEL: cast0: 14; RV64I: # %bb.0: 15; RV64I-NEXT: sw zero, 0(a0) 16; RV64I-NEXT: ret 17 %ptr0 = addrspacecast i32 addrspace(1)* %ptr to i32 addrspace(0)* 18 store i32 0, i32* %ptr0 19 ret void 20} 21 22define void @cast1(i32* %ptr) { 23; RV32I-LABEL: cast1: 24; RV32I: # %bb.0: 25; RV32I-NEXT: addi sp, sp, -16 26; RV32I-NEXT: .cfi_def_cfa_offset 16 27; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 28; RV32I-NEXT: .cfi_offset ra, -4 29; RV32I-NEXT: call foo@plt 30; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31; RV32I-NEXT: addi sp, sp, 16 32; RV32I-NEXT: ret 33; 34; RV64I-LABEL: cast1: 35; RV64I: # %bb.0: 36; RV64I-NEXT: addi sp, sp, -16 37; RV64I-NEXT: .cfi_def_cfa_offset 16 38; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 39; RV64I-NEXT: .cfi_offset ra, -8 40; RV64I-NEXT: call foo@plt 41; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42; RV64I-NEXT: addi sp, sp, 16 43; RV64I-NEXT: ret 44 %castptr = addrspacecast i32* %ptr to i32 addrspace(10)* 45 call void @foo(i32 addrspace(10)* %castptr) 46 ret void 47} 48 49declare void @foo(i32 addrspace(10)*) 50