49 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -global-merge-on-external=false \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -global-merge-on-external=false \5; RUN: -verify-machineinstrs < %s | FileCheck %s6; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \7; RUN: | FileCheck -check-prefix=CHECK-WEXTERN %s8; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \9; RUN: | FileCheck -check-prefix=CHECK-WEXTERN %s10 11@ig1 = internal global i32 0, align 412@ig2 = internal global i32 0, align 413 14@eg1 = dso_local global i32 0, align 415@eg2 = dso_local global i32 0, align 416 17; TODO: It would be better for code size to alter the first store below by18; first fully materialising .L_MergedGlobals in a1 and then storing to it with19; a 0 offset.20 21define void @f1(i32 %a) nounwind {22; CHECK-LABEL: f1:23; CHECK: # %bb.0:24; CHECK-NEXT: lui a1, %hi(.L_MergedGlobals)25; CHECK-NEXT: addi a1, a1, %lo(.L_MergedGlobals)26; CHECK-NEXT: sw a0, 0(a1)27; CHECK-NEXT: sw a0, 4(a1)28; CHECK-NEXT: lui a1, %hi(eg1)29; CHECK-NEXT: sw a0, %lo(eg1)(a1)30; CHECK-NEXT: lui a1, %hi(eg2)31; CHECK-NEXT: sw a0, %lo(eg2)(a1)32; CHECK-NEXT: ret33;34; CHECK-WEXTERN-LABEL: f1:35; CHECK-WEXTERN: # %bb.0:36; CHECK-WEXTERN-NEXT: lui a1, %hi(.L_MergedGlobals)37; CHECK-WEXTERN-NEXT: addi a1, a1, %lo(.L_MergedGlobals)38; CHECK-WEXTERN-NEXT: sw a0, 0(a1)39; CHECK-WEXTERN-NEXT: sw a0, 4(a1)40; CHECK-WEXTERN-NEXT: sw a0, 8(a1)41; CHECK-WEXTERN-NEXT: sw a0, 12(a1)42; CHECK-WEXTERN-NEXT: ret43 store i32 %a, ptr @ig1, align 444 store i32 %a, ptr @ig2, align 445 store i32 %a, ptr @eg1, align 446 store i32 %a, ptr @eg2, align 447 ret void48}49