1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=aarch64-apple-ios -asm-verbose=false -aarch64-collect-loh=false \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -aarch64-global-merge -global-merge-group-by-use -global-merge-ignore-single-use \ 3*9880d681SAndroid Build Coastguard Worker; RUN: %s -o - | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; We assume that globals of the same size aren't reordered inside a set. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker@m1 = internal global i32 0, align 4 8*9880d681SAndroid Build Coastguard Worker@n1 = internal global i32 0, align 4 9*9880d681SAndroid Build Coastguard Worker@o1 = internal global i32 0, align 4 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 12*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32 %a1, i32 %a2) #0 { 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: adrp x8, [[SET:l__MergedGlobals]]@PAGE 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add x8, x8, [[SET]]@PAGEOFF 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stp w0, w1, [x8] 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 17*9880d681SAndroid Build Coastguard Worker store i32 %a1, i32* @m1, align 4 18*9880d681SAndroid Build Coastguard Worker store i32 %a2, i32* @n1, align 4 19*9880d681SAndroid Build Coastguard Worker ret void 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker@m2 = internal global i32 0, align 4 23*9880d681SAndroid Build Coastguard Worker@n2 = internal global i32 0, align 4 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 26*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32 %a1, i32 %a2, i32 %a3) #0 { 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: adrp x8, [[SET]]@PAGE 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add x8, x8, [[SET]]@PAGEOFF 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stp w0, w1, [x8] 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str w2, [x8, #8] 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 32*9880d681SAndroid Build Coastguard Worker store i32 %a1, i32* @m1, align 4 33*9880d681SAndroid Build Coastguard Worker store i32 %a2, i32* @n1, align 4 34*9880d681SAndroid Build Coastguard Worker store i32 %a3, i32* @o1, align 4 35*9880d681SAndroid Build Coastguard Worker ret void 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 39*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32 %a1, i32 %a2) #0 { 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: adrp x8, [[SET]]@PAGE 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add x8, x8, [[SET]]@PAGEOFF 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stp w0, w1, [x8, #12] 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 44*9880d681SAndroid Build Coastguard Worker store i32 %a1, i32* @m2, align 4 45*9880d681SAndroid Build Coastguard Worker store i32 %a2, i32* @n2, align 4 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker@o2 = internal global i32 0, align 4 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 52*9880d681SAndroid Build Coastguard Workerdefine void @f4(i32 %a1) #0 { 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: adrp x8, _o2@PAGE 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str w0, [x8, _o2@PAGEOFF] 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 56*9880d681SAndroid Build Coastguard Worker store i32 %a1, i32* @o2, align 4 57*9880d681SAndroid Build Coastguard Worker ret void 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: .zerofill __DATA,__bss,[[SET]],20,4 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: .zerofill __DATA,__bss,_o2,4,2 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 64