xref: /llvm-project/llvm/test/CodeGen/RISCV/global-merge.ll (revision 3787fbf0402b4e03e316c13231f8873769701250)
151ae4624SAlex Bradbury; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*3787fbf0SAlex Bradbury; RUN: llc -mtriple=riscv32 -global-merge-on-external=false \
3*3787fbf0SAlex Bradbury; RUN:     -verify-machineinstrs < %s | FileCheck %s
4*3787fbf0SAlex Bradbury; RUN: llc -mtriple=riscv64 -global-merge-on-external=false \
5*3787fbf0SAlex Bradbury; RUN:     -verify-machineinstrs < %s | FileCheck %s
6*3787fbf0SAlex Bradbury; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
7ae4fc805SAlex Bradbury; RUN:   | FileCheck -check-prefix=CHECK-WEXTERN %s
8*3787fbf0SAlex Bradbury; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
9ae4fc805SAlex Bradbury; RUN:   | FileCheck -check-prefix=CHECK-WEXTERN %s
1051ae4624SAlex Bradbury
1151ae4624SAlex Bradbury@ig1 = internal global i32 0, align 4
1251ae4624SAlex Bradbury@ig2 = internal global i32 0, align 4
1351ae4624SAlex Bradbury
1451ae4624SAlex Bradbury@eg1 = dso_local global i32 0, align 4
1551ae4624SAlex Bradbury@eg2 = dso_local global i32 0, align 4
1651ae4624SAlex Bradbury
1751ae4624SAlex Bradbury; TODO: It would be better for code size to alter the first store below by
1851ae4624SAlex Bradbury; first fully materialising .L_MergedGlobals in a1 and then storing to it with
1951ae4624SAlex Bradbury; a 0 offset.
2051ae4624SAlex Bradbury
2151ae4624SAlex Bradburydefine void @f1(i32 %a) nounwind {
2251ae4624SAlex Bradbury; CHECK-LABEL: f1:
2351ae4624SAlex Bradbury; CHECK:       # %bb.0:
249122c523SPengcheng Wang; CHECK-NEXT:    lui a1, %hi(eg1)
259122c523SPengcheng Wang; CHECK-NEXT:    sw a0, %lo(eg1)(a1)
2651ae4624SAlex Bradbury; CHECK-NEXT:    lui a1, %hi(.L_MergedGlobals)
2751ae4624SAlex Bradbury; CHECK-NEXT:    sw a0, %lo(.L_MergedGlobals)(a1)
2851ae4624SAlex Bradbury; CHECK-NEXT:    addi a1, a1, %lo(.L_MergedGlobals)
2951ae4624SAlex Bradbury; CHECK-NEXT:    sw a0, 4(a1)
30ae4fc805SAlex Bradbury; CHECK-NEXT:    lui a1, %hi(eg2)
31ae4fc805SAlex Bradbury; CHECK-NEXT:    sw a0, %lo(eg2)(a1)
3251ae4624SAlex Bradbury; CHECK-NEXT:    ret
33ae4fc805SAlex Bradbury;
34ae4fc805SAlex Bradbury; CHECK-WEXTERN-LABEL: f1:
35ae4fc805SAlex Bradbury; CHECK-WEXTERN:       # %bb.0:
36ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    lui a1, %hi(.L_MergedGlobals)
37ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    sw a0, %lo(.L_MergedGlobals)(a1)
38ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    addi a1, a1, %lo(.L_MergedGlobals)
39ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    sw a0, 4(a1)
40ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    sw a0, 8(a1)
41ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    sw a0, 12(a1)
42ae4fc805SAlex Bradbury; CHECK-WEXTERN-NEXT:    ret
4351ae4624SAlex Bradbury  store i32 %a, ptr @ig1, align 4
4451ae4624SAlex Bradbury  store i32 %a, ptr @ig2, align 4
4551ae4624SAlex Bradbury  store i32 %a, ptr @eg1, align 4
4651ae4624SAlex Bradbury  store i32 %a, ptr @eg2, align 4
4751ae4624SAlex Bradbury  ret void
4851ae4624SAlex Bradbury}
49