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