TargetMachine::shouldAssumeDSOLocal currently implies dso_local for such definitions.
Adding explicit dso_local makes these tests align with the clang -fpic behavior
and allow the removal of the TargetMachine::shouldAssumeDSOLocal special case.
Rewrite preemption.ll to dsolocal-static.ll and dsolocal-pic.ll, and add
"PIC Level" metadata.
; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -code-model=medium| FileCheck --check-prefix=CHECK --check-prefix=MEDIUM %s
; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -code-model=large | FileCheck --check-prefix=CHECK --check-prefix=LARGE %s
-@foo = global i32 42
-@fooa = alias i32, i32* @foo
+@foo = dso_local global i32 42
+@fooa = dso_local alias i32, i32* @foo
-@foo2 = global i64 42
-@foo2a = alias i64, i64* @foo2
+@foo2 = dso_local global i64 42
+@foo2a = dso_local alias i64, i64* @foo2
; CHECK-LABEL: bar:
-define i32 @bar() {
+define dso_local i32 @bar() {
; MEDIUM: addis 3, 2, fooa@toc@ha
; LARGE: addis 3, 2, .L[[L0:.*]]@toc@ha
%a = load i32, i32* @fooa
target triple = "powerpc64le-unknown-linux-gnu"
-@a = constant i64 zeroinitializer
+@a = dso_local constant i64 zeroinitializer
define i64 @foo() {
; CHECK-LABEL: foo:
--- /dev/null
+; RUN: llc -mtriple=ppc64le -relocation-model=pic < %s | FileCheck %s
+
+@default = global i32 55
+define dso_local i32* @get_default_global() {
+; CHECK-LABEL: get_default_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @default
+}
+
+@local_global = dso_local global i32 55
+define dso_local i32* @get_local_global() {
+; CHECK-LABEL: get_local_global:
+; CHECK: addis 3, 2, local_global@toc@ha
+; CHECK-NEXT: addi 3, 3, local_global@toc@l
+; CHECK-NEXT: blr
+ ret i32* @local_global
+}
+
+@preemptable_global = dso_preemptable global i32 42
+define dso_local i32* @get_preemptable_global() {
+; CHECK-LABEL: get_preemptable_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @preemptable_global
+}
+
+
+@external_default_global = external global i32
+define dso_local i32* @get_external_default_global() {
+; CHECK-LABEL: get_external_default_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @external_default_global
+}
+
+@external_local_global = external dso_local global i32
+define dso_local i32* @get_external_local_global() {
+; CHECK-LABEL: get_external_local_global:
+; CHECK: addis 3, 2, external_local_global@toc@ha
+; CHECK: addi 3, 3, external_local_global@toc@l
+; CHECK: blr
+ ret i32* @external_local_global
+}
+
+@external_preemptable_global = external dso_preemptable global i32
+define dso_local i32* @get_external_preemptable_global() {
+; CHECK-LABEL: get_external_preemptable_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @external_preemptable_global
+}
+
+
+; functions
+define signext i32 @default_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @default_function_caller(i32 %i) {
+; CHECK-LABEL: default_function_caller:
+; CHECK: bl default_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @default_function(i32 signext %i)
+ ret i32 %call
+}
+
+define dso_local signext i32 @local_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @local_function_caller(i32 %i) {
+; CHECK-LABEL: local_function_caller:
+; CHECK: bl local_function
+; CHECK-NOT: nop
+; CHECK: blr
+ %call = notail call signext i32 @local_function(i32 signext %i)
+ ret i32 %call
+}
+
+define dso_preemptable signext i32 @preemptable_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @preemptable_function_caller(i32 %i) {
+; CHECK-LABEL: preemptable_function_caller:
+; CHECK: bl preemptable_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @preemptable_function(i32 signext %i)
+ ret i32 %call
+}
+
+
+declare i32 @external_default_function(i32 %i)
+define dso_local i32 @external_default_function_caller(i32 %i) {
+; CHECK-LABEL: external_default_function_caller:
+; CHECK: bl external_default_function
+; CHECK-NEXT: nop
+; CHECK: blr
+ %call = notail call signext i32 @external_default_function(i32 signext %i)
+ ret i32 %call
+}
+
+declare dso_local i32 @external_local_function(i32 %i)
+define dso_local i32 @external_local_function_caller(i32 %i) {
+; CHECK-LABEL: external_local_function_caller:
+; CHECK: bl external_local_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @external_local_function(i32 signext %i)
+ ret i32 %call
+}
+
+declare dso_preemptable i32 @external_preemptable_function(i32 %i)
+define dso_local i32 @external_preemptable_function_caller(i32 %i) {
+; CHECK-LABEL: external_preemptable_function_caller:
+; CHECK: bl external_preemptable_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @external_preemptable_function(i32 signext %i)
+ ret i32 %call
+}
+
+!llvm.module.flags = !{!0}
+!0 = !{i32 1, !"PIC Level", i32 1}
--- /dev/null
+; RUN: llc -mtriple=ppc64le -relocation-model=static < %s | FileCheck %s
+
+@default = global i32 55
+define dso_local i32* @get_default_global() {
+; CHECK-LABEL: get_default_global:
+; CHECK: addis 3, 2, default@toc@ha
+; CHECK-NEXT: addi 3, 3, default@toc@l
+; CHECK-NEXT: blr
+ ret i32* @default
+}
+
+@local_global = dso_local global i32 55
+define dso_local i32* @get_local_global() {
+; CHECK-LABEL: get_local_global:
+; CHECK: addis 3, 2, local_global@toc@ha
+; CHECK-NEXT: addi 3, 3, local_global@toc@l
+; CHECK-NEXT: blr
+ ret i32* @local_global
+}
+
+@preemptable_global = dso_preemptable global i32 42
+define dso_local i32* @get_preemptable_global() {
+; CHECK-LABEL: get_preemptable_global:
+; CHECK: addis 3, 2, preemptable_global@toc@ha
+; CHECK-NEXT: addi 3, 3, preemptable_global@toc@l
+; CHECK-NEXT: blr
+ ret i32* @preemptable_global
+}
+
+
+@external_default_global = external global i32
+define dso_local i32* @get_external_default_global() {
+; CHECK-LABEL: get_external_default_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @external_default_global
+}
+
+@external_local_global = external dso_local global i32
+define dso_local i32* @get_external_local_global() {
+; CHECK-LABEL: get_external_local_global:
+; CHECK: addis 3, 2, external_local_global@toc@ha
+; CHECK-NEXT: addi 3, 3, external_local_global@toc@l
+; CHECK-NEXT: blr
+ ret i32* @external_local_global
+}
+
+@external_preemptable_global = external dso_preemptable global i32
+define dso_local i32* @get_external_preemptable_global() {
+; CHECK-LABEL: get_external_preemptable_global:
+; CHECK: addis 3, 2, .LC{{.*}}@toc@ha
+; CHECK-NEXT: ld 3, .LC{{.*}}@toc@l(3)
+; CHECK-NEXT: blr
+ ret i32* @external_preemptable_global
+}
+
+
+; functions
+define signext i32 @default_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @default_function_caller(i32 %i) {
+; CHECK-LABEL: default_function_caller:
+; CHECK: bl default_function
+; CHECK-NOT: nop
+; CHECK: blr
+ %call = notail call signext i32 @default_function(i32 signext %i)
+ ret i32 %call
+}
+
+define dso_local signext i32 @local_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @local_function_caller(i32 %i) {
+; CHECK-LABEL: local_function_caller:
+; CHECK: bl local_function
+; CHECK-NOT: nop
+; CHECK: blr
+ %call = notail call signext i32 @local_function(i32 signext %i)
+ ret i32 %call
+}
+
+define dso_preemptable signext i32 @preemptable_function(i32 %i) {
+ ret i32 %i
+}
+define dso_local signext i32 @preemptable_function_caller(i32 %i) {
+; CHECK-LABEL: preemptable_function_caller:
+; CHECK: bl preemptable_function
+; CHECK-NOT: nop
+; CHECK: blr
+ %call = notail call signext i32 @preemptable_function(i32 signext %i)
+ ret i32 %call
+}
+
+
+declare i32 @external_default_function(i32 %i)
+define dso_local i32 @external_default_function_caller(i32 %i) {
+; CHECK-LABEL: external_default_function_caller:
+; CHECK: bl external_default_function
+; CHECK-NEXT: nop
+; CHECK: blr
+ %call = notail call signext i32 @external_default_function(i32 signext %i)
+ ret i32 %call
+}
+
+declare dso_local i32 @external_local_function(i32 %i)
+define dso_local i32 @external_local_function_caller(i32 %i) {
+; CHECK-LABEL: external_local_function_caller:
+; CHECK: bl external_local_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @external_local_function(i32 signext %i)
+ ret i32 %call
+}
+
+declare dso_preemptable i32 @external_preemptable_function(i32 %i)
+define dso_local i32 @external_preemptable_function_caller(i32 %i) {
+; CHECK-LABEL: external_preemptable_function_caller:
+; CHECK: bl external_preemptable_function
+; CHECK-NEXT: nop
+ %call = notail call signext i32 @external_preemptable_function(i32 signext %i)
+ ret i32 %call
+}
; RUN: | FileCheck -check-prefix=NOOPT %s
; RUN: llc -relocation-model=static -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
; RUN: -mcpu=pwr8 < %s | FileCheck -check-prefix=STATIC %s
-; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
-; RUN: -mcpu=pwr8 < %s | FileCheck -check-prefix=PIC %s
-; Test correct code generation for static and pic for loading and storing a common symbol
+;; Test loading and storing a common symbol for static relocation model.
-@comm_glob = common global i32 0, align 4
+@comm_glob = common dso_local global i32 0, align 4
-define signext i32 @test_comm() nounwind {
+define dso_local signext i32 @test_comm() nounwind {
; NOOPT-LABEL: test_comm:
; NOOPT: # %bb.0: # %entry
; NOOPT-NEXT: addis 3, 2, comm_glob@toc@ha
; STATIC-NEXT: addi 5, 3, 1
; STATIC-NEXT: stw 5, comm_glob@toc@l(4)
; STATIC-NEXT: blr
-;
-; PIC-LABEL: test_comm:
-; PIC: # %bb.0: # %entry
-; PIC-NEXT: addis 3, 2, .LC0@toc@ha
-; PIC-NEXT: ld 4, .LC0@toc@l(3)
-; PIC-NEXT: lwa 3, 0(4)
-; PIC-NEXT: addi 5, 3, 1
-; PIC-NEXT: stw 5, 0(4)
-; PIC-NEXT: blr
entry:
%0 = load i32, i32* @comm_glob, align 4
%inc = add nsw i32 %0, 1
; RUN: -check-prefix=CHECK-P8
; Function Attrs: norecurse nounwind
-define void @qpAdd(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpAdd(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpAdd:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
; Function Attrs: norecurse nounwind
-define void @qpSub(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpSub(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpSub:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
; Function Attrs: norecurse nounwind
-define void @qpMul(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpMul(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpMul:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
; Function Attrs: norecurse nounwind
-define void @qpDiv(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpDiv(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpDiv:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
ret void
}
-define void @testLdNSt(i8* nocapture readonly %PtrC, fp128* nocapture %PtrF) {
+define dso_local void @testLdNSt(i8* nocapture readonly %PtrC, fp128* nocapture %PtrF) {
; CHECK-LABEL: testLdNSt:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r3, r3, 4
ret void
}
-define void @qpSqrt(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpSqrt(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpSqrt:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.sqrt.f128(fp128 %Val)
-define void @qpCpsgn(fp128* nocapture readonly %a, fp128* nocapture readonly %b,
+define dso_local void @qpCpsgn(fp128* nocapture readonly %a, fp128* nocapture readonly %b,
; CHECK-LABEL: qpCpsgn:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.copysign.f128(fp128 %Mag, fp128 %Sgn)
-define void @qpAbs(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpAbs(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpAbs:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.fabs.f128(fp128 %Val)
-define void @qpNAbs(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpNAbs(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpNAbs:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
-define void @qpNeg(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpNeg(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpNeg:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.exp2.f128(fp128 %Val)
-define void @qp_powi(fp128* nocapture readonly %a, i32* nocapture readonly %b,
+define dso_local void @qp_powi(fp128* nocapture readonly %a, i32* nocapture readonly %b,
; CHECK-LABEL: qp_powi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr r0
}
declare fp128 @llvm.powi.f128(fp128 %Val, i32 %power)
-@a = common global fp128 0xL00000000000000000000000000000000, align 16
-@b = common global fp128 0xL00000000000000000000000000000000, align 16
+@a = common dso_local global fp128 0xL00000000000000000000000000000000, align 16
+@b = common dso_local global fp128 0xL00000000000000000000000000000000, align 16
define fp128 @qp_frem() #0 {
; CHECK-LABEL: qp_frem:
ret fp128 %rem
}
-define void @qpCeil(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpCeil(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpCeil:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.ceil.f128(fp128 %Val)
-define void @qpFloor(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpFloor(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpFloor:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.floor.f128(fp128 %Val)
-define void @qpTrunc(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpTrunc(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpTrunc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.trunc.f128(fp128 %Val)
-define void @qpRound(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpRound(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpRound:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.round.f128(fp128 %Val)
-define void @qpLRound(fp128* nocapture readonly %a, i32* nocapture %res) {
+define dso_local void @qpLRound(fp128* nocapture readonly %a, i32* nocapture %res) {
; CHECK-LABEL: qpLRound:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr r0
}
declare i32 @llvm.lround.f128(fp128 %Val)
-define void @qpLLRound(fp128* nocapture readonly %a, i64* nocapture %res) {
+define dso_local void @qpLLRound(fp128* nocapture readonly %a, i64* nocapture %res) {
; CHECK-LABEL: qpLLRound:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr r0
}
declare i64 @llvm.llround.f128(fp128 %Val)
-define void @qpRint(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpRint(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpRint:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.rint.f128(fp128 %Val)
-define void @qpLRint(fp128* nocapture readonly %a, i32* nocapture %res) {
+define dso_local void @qpLRint(fp128* nocapture readonly %a, i32* nocapture %res) {
; CHECK-LABEL: qpLRint:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr r0
}
declare i32 @llvm.lrint.f128(fp128 %Val)
-define void @qpLLRint(fp128* nocapture readonly %a, i64* nocapture %res) {
+define dso_local void @qpLLRint(fp128* nocapture readonly %a, i64* nocapture %res) {
; CHECK-LABEL: qpLLRint:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr r0
}
declare i64 @llvm.llrint.f128(fp128 %Val)
-define void @qpNearByInt(fp128* nocapture readonly %a, fp128* nocapture %res) {
+define dso_local void @qpNearByInt(fp128* nocapture readonly %a, fp128* nocapture %res) {
; CHECK-LABEL: qpNearByInt:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
}
declare fp128 @llvm.nearbyint.f128(fp128 %Val)
-define void @qpFMA(fp128* %a, fp128* %b, fp128* %c, fp128* %res) {
+define dso_local void @qpFMA(fp128* %a, fp128* %b, fp128* %c, fp128* %res) {
; CHECK-LABEL: qpFMA:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lxv v2, 0(r3)
; RUN: -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s \
; RUN: -check-prefix=CHECK-P8
-@a_qp = common global fp128 0xL00000000000000000000000000000000, align 16
-@b_qp = common global fp128 0xL00000000000000000000000000000000, align 16
+@a_qp = common dso_local global fp128 0xL00000000000000000000000000000000, align 16
+@b_qp = common dso_local global fp128 0xL00000000000000000000000000000000, align 16
; Function Attrs: noinline nounwind optnone
-define signext i32 @greater_qp() {
+define dso_local signext i32 @greater_qp() {
; CHECK-LABEL: greater_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @less_qp() {
+define dso_local signext i32 @less_qp() {
; CHECK-LABEL: less_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @greater_eq_qp() {
+define dso_local signext i32 @greater_eq_qp() {
; CHECK-LABEL: greater_eq_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @less_eq_qp() {
+define dso_local signext i32 @less_eq_qp() {
; CHECK-LABEL: less_eq_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @equal_qp() {
+define dso_local signext i32 @equal_qp() {
; CHECK-LABEL: equal_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @not_greater_qp() {
+define dso_local signext i32 @not_greater_qp() {
; CHECK-LABEL: not_greater_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @not_less_qp() {
+define dso_local signext i32 @not_less_qp() {
; CHECK-LABEL: not_less_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @not_greater_eq_qp() {
+define dso_local signext i32 @not_greater_eq_qp() {
; CHECK-LABEL: not_greater_eq_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @not_less_eq_qp() {
+define dso_local signext i32 @not_less_eq_qp() {
; CHECK-LABEL: not_less_eq_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
}
; Function Attrs: noinline nounwind optnone
-define signext i32 @not_equal_qp() {
+define dso_local signext i32 @not_equal_qp() {
; CHECK-LABEL: not_equal_qp:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis r3, r2, a_qp@toc@ha
; This test verifies that load/store instructions are properly generated,
; and that they pass MI verification.
-@a = global i8 1, align 1
-@b = global i16 2, align 2
-@c = global i32 4, align 4
-@d = global i64 8, align 8
-@e = global float 1.25, align 4
-@f = global double 3.5, align 8
+@a = dso_local global i8 1, align 1
+@b = dso_local global i16 2, align 2
+@c = dso_local global i32 4, align 4
+@d = dso_local global i64 8, align 8
+@e = dso_local global float 1.25, align 4
+@f = dso_local global double 3.5, align 8
%struct.s = type<{ i8, i32 }>
%struct.t = type<{ i8, i64 }>
-@g = global %struct.s <{ i8 1, i32 2 }>, align 1
-@h = global %struct.t <{ i8 1, i64 2 }>, align 1
+@g = dso_local global %struct.s <{ i8 1, i32 2 }>, align 1
+@h = dso_local global %struct.t <{ i8 1, i64 2 }>, align 1
-@i = common global [8192 x i64] zeroinitializer, align 8
+@i = common dso_local global [8192 x i64] zeroinitializer, align 8
; load
ret i16 %2
}
-define i32 @t3() nounwind {
+define dso_local i32 @t3() nounwind {
; ELF64: t3
%1 = load i32, i32* @c, align 4
; ELF64: lwz
ret i64 %2
}
-define float @t5() nounwind {
+define dso_local float @t5() nounwind {
; ELF64: t5
; SPE: t5
%1 = load float, float* @e, align 4
ret float %2
}
-define double @t6() nounwind {
+define dso_local double @t6() nounwind {
; ELF64: t6
; SPE: t6
%1 = load double, double* @f, align 8
; store
-define void @t7(i8 %v) nounwind {
+define dso_local void @t7(i8 %v) nounwind {
; ELF64: t7
%1 = add nsw i8 %v, 1
store i8 %1, i8* @a, align 1
ret void
}
-define void @t8(i16 %v) nounwind {
+define dso_local void @t8(i16 %v) nounwind {
; ELF64: t8
%1 = add nsw i16 %v, 1
store i16 %1, i16* @b, align 2
ret void
}
-define void @t9(i32 %v) nounwind {
+define dso_local void @t9(i32 %v) nounwind {
; ELF64: t9
%1 = add nsw i32 %v, 1
store i32 %1, i32* @c, align 4
ret void
}
-define void @t10(i64 %v) nounwind {
+define dso_local void @t10(i64 %v) nounwind {
; ELF64: t10
%1 = add nsw i64 %v, 1
store i64 %1, i64* @d, align 4
ret void
}
-define void @t11(float %v) nounwind {
+define dso_local void @t11(float %v) nounwind {
; ELF64: t11
; SPE: t11
%1 = fadd float %v, 1.0
ret void
}
-define void @t12(double %v) nounwind {
+define dso_local void @t12(double %v) nounwind {
; ELF64: t12
; SPE: t12
%1 = fadd double %v, 1.0
}
;; std requires an offset divisible by 4, so we need stdx here.
-define void @t15(i64 %v) nounwind {
+define dso_local void @t15(i64 %v) nounwind {
; ELF64: t15
%1 = add nsw i64 %v, 1
store i64 %1, i64* getelementptr inbounds (%struct.t, %struct.t* @h, i32 0, i32 1), align 1
}
;; std requires an offset that fits in 16 bits, so we need stdx here.
-define void @t17(i64 %v) nounwind {
+define dso_local void @t17(i64 %v) nounwind {
; ELF64: t17
%1 = add nsw i64 %v, 1
store i64 %1, i64* getelementptr inbounds ([8192 x i64], [8192 x i64]* @i, i32 0, i64 5000), align 8
; if the load value isn't used by any other operations,
; then consider transforming the pair to integer load / store operations
-@a1 = local_unnamed_addr global double 0.000000e+00, align 8
-@a2 = local_unnamed_addr global double 0.000000e+00, align 8
-@a3 = local_unnamed_addr global double 0.000000e+00, align 8
-@a4 = local_unnamed_addr global double 0.000000e+00, align 8
-@a5 = local_unnamed_addr global double 0.000000e+00, align 8
-@a6 = local_unnamed_addr global double 0.000000e+00, align 8
-@a7 = local_unnamed_addr global double 0.000000e+00, align 8
-@a8 = local_unnamed_addr global double 0.000000e+00, align 8
-@a9 = local_unnamed_addr global double 0.000000e+00, align 8
-@a10 = local_unnamed_addr global double 0.000000e+00, align 8
-@a11 = local_unnamed_addr global double 0.000000e+00, align 8
-@a12 = local_unnamed_addr global double 0.000000e+00, align 8
-@a13 = local_unnamed_addr global double 0.000000e+00, align 8
-@a14 = local_unnamed_addr global double 0.000000e+00, align 8
-@a15 = local_unnamed_addr global double 0.000000e+00, align 8
-@a16 = local_unnamed_addr global ppc_fp128 0xM00000000000000000000000000000000, align 16
-@a17 = local_unnamed_addr global fp128 0xL00000000000000000000000000000000, align 16
+@a1 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a2 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a3 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a4 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a5 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a6 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a7 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a8 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a9 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a10 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a11 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a12 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a13 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a14 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a15 = dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@a16 = dso_local local_unnamed_addr global ppc_fp128 0xM00000000000000000000000000000000, align 16
+@a17 = dso_local local_unnamed_addr global fp128 0xL00000000000000000000000000000000, align 16
; Because this test function is trying to pass float argument by stack,
; so the fpr is only used to load/store float argument
-define signext i32 @test() nounwind {
+define dso_local signext i32 @test() nounwind {
; CHECK-LABEL: test:
; CHECK: # %bb.0:
; CHECK-NEXT: mflr 0
; RUN: -enable-unsafe-fp-math -mattr=-vsx < %s | FileCheck -check-prefix=CHECK-FAST-NOVSX %s
; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
-define double @fma_combine1(double %a, double %b, double %c) {
+define dso_local double @fma_combine1(double %a, double %b, double %c) {
; CHECK-FAST-LABEL: fma_combine1:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xsnmaddadp 1, 3, 2
ret double %add
}
-define double @fma_combine2(double %a, double %b, double %c) {
+define dso_local double @fma_combine2(double %a, double %b, double %c) {
; CHECK-FAST-LABEL: fma_combine2:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xsnmaddadp 1, 2, 3
ret double %add
}
-@v = common local_unnamed_addr global double 0.000000e+00, align 8
-@z = common local_unnamed_addr global double 0.000000e+00, align 8
-define double @fma_combine_two_uses(double %a, double %b, double %c) {
+@v = common dso_local local_unnamed_addr global double 0.000000e+00, align 8
+@z = common dso_local local_unnamed_addr global double 0.000000e+00, align 8
+define dso_local double @fma_combine_two_uses(double %a, double %b, double %c) {
; CHECK-FAST-LABEL: fma_combine_two_uses:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xsnegdp 0, 1
ret double %add
}
-define double @fma_combine_one_use(double %a, double %b, double %c) {
+define dso_local double @fma_combine_one_use(double %a, double %b, double %c) {
; CHECK-FAST-LABEL: fma_combine_one_use:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xsnegdp 0, 1
ret double %add
}
-define float @fma_combine_no_ice() {
+define dso_local float @fma_combine_no_ice() {
; CHECK-FAST-LABEL: fma_combine_no_ice:
; CHECK-FAST: # %bb.0:
; CHECK-FAST-NEXT: addis 3, 2, .LCPI4_0@toc@ha
}
; This would crash while trying getNegatedExpression().
-define double @getNegatedExpression_crash(double %x, double %y) {
+define dso_local double @getNegatedExpression_crash(double %x, double %y) {
; CHECK-FAST-LABEL: getNegatedExpression_crash:
; CHECK-FAST: # %bb.0:
; CHECK-FAST-NEXT: addis 3, 2, .LCPI5_1@toc@ha
ret double %fma1
}
-define double @fma_flag_propagation(double %a) {
+define dso_local double @fma_flag_propagation(double %a) {
; CHECK-FAST-LABEL: fma_flag_propagation:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xxlxor 1, 1, 1
ret double %1
}
-define double @neg_fma_flag_propagation(double %a) {
+define dso_local double @neg_fma_flag_propagation(double %a) {
; CHECK-FAST-LABEL: neg_fma_flag_propagation:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: xxlxor 1, 1, 1
ret <2 x double> %0
}
-define double @fma_combine_const(double %a, double %b) {
+define dso_local double @fma_combine_const(double %a, double %b) {
; CHECK-FAST-LABEL: fma_combine_const:
; CHECK-FAST: # %bb.0: # %entry
; CHECK-FAST-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; RUN: llc -relocation-model=static -verify-machineinstrs -mtriple powerpc64-linux < %s | FileCheck %s
; RUN: llc -relocation-model=static -verify-machineinstrs -O0 -mtriple powerpc64-linux < %s | FileCheck %s
-define void @foo() {
+define dso_local void @foo() {
ret void
}
declare i32 @bar(i8*)
; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -verify-misched -debug-only=machine-scheduler \
; RUN: -o - 2>&1 > /dev/null | FileCheck %s --check-prefix=CHECK-P8
-@m = local_unnamed_addr global i64 0, align 8
+@m = dso_local local_unnamed_addr global i64 0, align 8
define i64 @fuse_addis_ld() {
entry:
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
-@gi = global i32 5, align 4
+@gi = dso_local global i32 5, align 4
-define signext i32 @test_file_static() nounwind {
+define dso_local signext i32 @test_file_static() nounwind {
entry:
%0 = load i32, i32* @gi, align 4
%inc = add nsw i32 %0, 1
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
-@gi = global i32 5, align 4
+@gi = dso_local global i32 5, align 4
-define signext i32 @test_file_static() nounwind {
+define dso_local signext i32 @test_file_static() nounwind {
entry:
%0 = load i32, i32* @gi, align 4
%inc = add nsw i32 %0, 1
@test_fn_static.si = internal global i32 0, align 4
-define signext i32 @test_fn_static() nounwind {
+define dso_local signext i32 @test_fn_static() nounwind {
entry:
%0 = load i32, i32* @test_fn_static.si, align 4
%inc = add nsw i32 %0, 1
; CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM2]]
; CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO [[SYM2]]
-@gi = global i32 5, align 4
+@gi = dso_local global i32 5, align 4
-define signext i32 @test_file_static() nounwind {
+define dso_local signext i32 @test_file_static() nounwind {
entry:
%0 = load i32, i32* @gi, align 4
%inc = add nsw i32 %0, 1
@ei = external global i32
-define signext i32 @test_external() nounwind {
+define dso_local signext i32 @test_external() nounwind {
entry:
%0 = load i32, i32* @ei, align 4
%inc = add nsw i32 %0, 1
;
; MEDIUM: Relocations [
; MEDIUM: Section {{.*}} .rela.text {
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM1:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM1]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA .toc 0x0
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS .toc 0x0
;
; LARGE: Relocations [
; LARGE: Section {{.*}} .rela.text {
@test_fn_static.si = internal global i32 0, align 4
-define signext i32 @test_fn_static() nounwind {
+define dso_local signext i32 @test_fn_static() nounwind {
entry:
%0 = load i32, i32* @test_fn_static.si, align 4
%inc = add nsw i32 %0, 1
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
; accessing function-scoped variable si.
;
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM2:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO [[SYM2]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA .bss 0x0
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO .bss 0x0
;
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO_DS for
; accessing function-scoped variable si.
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM2:[^ ]+]]
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM2]]
-@gi = global i32 5, align 4
+@gi = dso_local global i32 5, align 4
-define signext i32 @test_file_static() nounwind {
+define dso_local signext i32 @test_file_static() nounwind {
entry:
%0 = load i32, i32* @gi, align 4
%inc = add nsw i32 %0, 1
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
; accessing file-scope variable gi.
;
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM3:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO [[SYM3]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA gi 0x0
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO gi 0x0
;
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO_DS for
; accessing file-scope variable gi.
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM3:[^ ]+]]
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM3]]
-define double @test_double_const() nounwind {
+define dso_local double @test_double_const() nounwind {
entry:
ret double 0x3F4FD4920B498CF0
}
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
; accessing a constant.
;
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM4:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO [[SYM4]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA .rodata.cst8
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO .rodata.cst8
;
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO_DS for
; accessing a constant.
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM4:[^ ]+]]
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM4]]
-@ti = common global i32 0, align 4
+@ti = common dso_local global i32 0, align 4
-define signext i32 @test_tentative() nounwind {
+define dso_local signext i32 @test_tentative() nounwind {
entry:
%0 = load i32, i32* @ti, align 4
%inc = add nsw i32 %0, 1
; Verify generation of relocations foraccessing variable ti.
;
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM6:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO [[SYM6]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA ti 0x0
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO ti 0x0
;
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM6:[^ ]+]]
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM6]]
; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO_DS for
; accessing function address foo.
;
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM7:[^ ]+]]
-; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM7]]
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA .toc 0x8
+; MEDIUM-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS .toc 0x8
;
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA [[SYM7:[^ ]+]]
; LARGE-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS [[SYM7]]
-define signext i32 @test_jump_table(i32 signext %i) nounwind {
+define dso_local signext i32 @test_jump_table(i32 signext %i) nounwind {
entry:
%i.addr = alloca i32, align 4
store i32 %i, i32* %i.addr, align 4
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names \
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=BE-PAIRED
-@f = common local_unnamed_addr global <512 x i1> zeroinitializer, align 16
-@g = common local_unnamed_addr global <256 x i1> zeroinitializer, align 16
+@f = common dso_local local_unnamed_addr global <512 x i1> zeroinitializer, align 16
+@g = common dso_local local_unnamed_addr global <256 x i1> zeroinitializer, align 16
-define void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
+define dso_local void @testLdSt(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-LABEL: testLdSt:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: plxv vs1, f@PCREL+96(0), 1
;
; BE-PAIRED-LABEL: testLdSt:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-PAIRED-NEXT: ld r3, .LC0@toc@l(r3)
+; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
+; BE-PAIRED-NEXT: addi r3, r3, f@toc@l
; BE-PAIRED-NEXT: lxv vs1, 80(r3)
; BE-PAIRED-NEXT: lxv vs0, 64(r3)
; BE-PAIRED-NEXT: lxv vs3, 112(r3)
ret void
}
-define void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
+define dso_local void @testXLdSt(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-LABEL: testXLdSt:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: sldi r3, r3, 6
;
; BE-PAIRED-LABEL: testXLdSt:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r5, r2, .LC0@toc@ha
+; BE-PAIRED-NEXT: addis r5, r2, f@toc@ha
; BE-PAIRED-NEXT: sldi r3, r3, 6
-; BE-PAIRED-NEXT: ld r5, .LC0@toc@l(r5)
+; BE-PAIRED-NEXT: addi r5, r5, f@toc@l
; BE-PAIRED-NEXT: add r6, r5, r3
; BE-PAIRED-NEXT: lxvx vs0, r5, r3
; BE-PAIRED-NEXT: sldi r3, r4, 6
ret void
}
-define void @testUnalignedLdSt() {
+define dso_local void @testUnalignedLdSt() {
; LE-PAIRED-LABEL: testUnalignedLdSt:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: plxv vs1, f@PCREL+43(0), 1
;
; BE-PAIRED-LABEL: testUnalignedLdSt:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r3, r2, .LC0@toc@ha
+; BE-PAIRED-NEXT: addis r3, r2, f@toc@ha
; BE-PAIRED-NEXT: li r4, 11
-; BE-PAIRED-NEXT: ld r3, .LC0@toc@l(r3)
+; BE-PAIRED-NEXT: addi r3, r3, f@toc@l
; BE-PAIRED-NEXT: lxvx vs0, r3, r4
; BE-PAIRED-NEXT: li r4, 27
; BE-PAIRED-NEXT: lxvx vs1, r3, r4
ret void
}
-define void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
+define dso_local void @testLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-LABEL: testLdStPair:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: plxv vs1, g@PCREL+32(0), 1
;
; BE-PAIRED-LABEL: testLdStPair:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r3, r2, .LC1@toc@ha
-; BE-PAIRED-NEXT: ld r3, .LC1@toc@l(r3)
+; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
+; BE-PAIRED-NEXT: addi r3, r3, g@toc@l
; BE-PAIRED-NEXT: lxv vs1, 48(r3)
; BE-PAIRED-NEXT: lxv vs0, 32(r3)
; BE-PAIRED-NEXT: stxv vs1, 80(r3)
ret void
}
-define void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
+define dso_local void @testXLdStPair(i64 %SrcIdx, i64 %DstIdx) {
; LE-PAIRED-LABEL: testXLdStPair:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: sldi r3, r3, 5
;
; BE-PAIRED-LABEL: testXLdStPair:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r5, r2, .LC1@toc@ha
+; BE-PAIRED-NEXT: addis r5, r2, g@toc@ha
; BE-PAIRED-NEXT: sldi r3, r3, 5
-; BE-PAIRED-NEXT: ld r5, .LC1@toc@l(r5)
+; BE-PAIRED-NEXT: addi r5, r5, g@toc@l
; BE-PAIRED-NEXT: add r6, r5, r3
; BE-PAIRED-NEXT: lxvx vs0, r5, r3
; BE-PAIRED-NEXT: sldi r3, r4, 5
ret void
}
-define void @testUnalignedLdStPair() {
+define dso_local void @testUnalignedLdStPair() {
; LE-PAIRED-LABEL: testUnalignedLdStPair:
; LE-PAIRED: # %bb.0: # %entry
; LE-PAIRED-NEXT: plxv vs1, g@PCREL+11(0), 1
;
; BE-PAIRED-LABEL: testUnalignedLdStPair:
; BE-PAIRED: # %bb.0: # %entry
-; BE-PAIRED-NEXT: addis r3, r2, .LC1@toc@ha
+; BE-PAIRED-NEXT: addis r3, r2, g@toc@ha
; BE-PAIRED-NEXT: li r4, 11
-; BE-PAIRED-NEXT: ld r3, .LC1@toc@l(r3)
+; BE-PAIRED-NEXT: addi r3, r3, g@toc@l
; BE-PAIRED-NEXT: lxvx vs0, r3, r4
; BE-PAIRED-NEXT: li r4, 27
; BE-PAIRED-NEXT: lxvx vs1, r3, r4
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setbc1(i8 %a) {
+define dso_local signext i32 @setbc1(i8 %a) {
; CHECK-LABEL: setbc1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb r3, r3
ret i32 %conv
}
-define signext i32 @setbc2(i32 %a) {
+define dso_local signext i32 @setbc2(i32 %a) {
; CHECK-LABEL: setbc2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setbc3(i64 %a) {
+define dso_local signext i32 @setbc3(i64 %a) {
; CHECK-LABEL: setbc3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setbc4(i16 %a) {
+define dso_local signext i32 @setbc4(i16 %a) {
; CHECK-LABEL: setbc4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh r3, r3
ret i64 %conv
}
-define void @setbc9(i8 %a) {
+define dso_local void @setbc9(i8 %a) {
; CHECK-LE-LABEL: setbc9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsb r3, r3
;
; CHECK-BE-LABEL: setbc9:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: extsb r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i8 %a, 1
ret void
}
-define void @setbc10(i32 %a) {
+define dso_local void @setbc10(i32 %a) {
; CHECK-LE-LABEL: setbc10:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setbc10:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i32 %a, 1
ret void
}
-define void @setbc11(i64 %a) {
+define dso_local void @setbc11(i64 %a) {
; CHECK-LE-LABEL: setbc11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setbc11:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, 1
ret void
}
-define void @setbc12(i16 %a) {
+define dso_local void @setbc12(i16 %a) {
; CHECK-LE-LABEL: setbc12:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsh r3, r3
;
; CHECK-BE-LABEL: setbc12:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: extsh r3, r3
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i16 %a, 1
ret void
}
-define signext i32 @setbc13(i8 %a) {
+define dso_local signext i32 @setbc13(i8 %a) {
; CHECK-LABEL: setbc13:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb r3, r3
ret i32 %conv
}
-define signext i32 @setbc14(i32 %a) {
+define dso_local signext i32 @setbc14(i32 %a) {
; CHECK-LABEL: setbc14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setbc15(i64 %a) {
+define dso_local signext i32 @setbc15(i64 %a) {
; CHECK-LABEL: setbc15:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setbc16(i16 %a) {
+define dso_local signext i32 @setbc16(i16 %a) {
; CHECK-LABEL: setbc16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh r3, r3
ret i64 %conv
}
-define void @setbc21(i8 %a) {
+define dso_local void @setbc21(i8 %a) {
; CHECK-LE-LABEL: setbc21:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsb r3, r3
;
; CHECK-BE-LABEL: setbc21:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: extsb r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i8 %a, 1
ret void
}
-define void @setbc22(i32 %a) {
+define dso_local void @setbc22(i32 %a) {
; CHECK-LE-LABEL: setbc22:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setbc22:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i32 %a, 1
ret void
}
-define void @setbc23(i64 %a) {
+define dso_local void @setbc23(i64 %a) {
; CHECK-LE-LABEL: setbc23:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setbc23:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, 1
ret void
}
-define void @setbc24(i16 %a) {
+define dso_local void @setbc24(i16 %a) {
; CHECK-LE-LABEL: setbc24:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsh r3, r3
;
; CHECK-BE-LABEL: setbc24:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: extsh r3, r3
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i16 %a, 1
ret void
}
-define signext i32 @setbc25(i8 %a) {
+define dso_local signext i32 @setbc25(i8 %a) {
; CHECK-LABEL: setbc25:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 24
ret i32 %conv
}
-define signext i32 @setbc26(i32 %a) {
+define dso_local signext i32 @setbc26(i32 %a) {
; CHECK-LABEL: setbc26:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setbc27(i64 %a) {
+define dso_local signext i32 @setbc27(i64 %a) {
; CHECK-LABEL: setbc27:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setbc28(i16 %a) {
+define dso_local signext i32 @setbc28(i16 %a) {
; CHECK-LABEL: setbc28:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 16
ret i64 %conv
}
-define void @setbc33(i8 %a) {
+define dso_local void @setbc33(i8 %a) {
; CHECK-LE-LABEL: setbc33:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 24
;
; CHECK-BE-LABEL: setbc33:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 24
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, 1
ret void
}
-define void @setbc34(i32 %a) {
+define dso_local void @setbc34(i32 %a) {
; CHECK-LE-LABEL: setbc34:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setbc34:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, 1
ret void
}
-define void @setbc35(i64 %a) {
+define dso_local void @setbc35(i64 %a) {
; CHECK-LE-LABEL: setbc35:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setbc35:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, 1
ret void
}
-define void @setbc36(i16 %a) {
+define dso_local void @setbc36(i16 %a) {
; CHECK-LE-LABEL: setbc36:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 16
;
; CHECK-BE-LABEL: setbc36:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 16
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, 1
ret void
}
-define signext i32 @setbc37(i64 %a) {
+define dso_local signext i32 @setbc37(i64 %a) {
; CHECK-LABEL: setbc37:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpldi r3, 1
ret i64 %conv
}
-define void @setbc39(i64 %a) {
+define dso_local void @setbc39(i64 %a) {
; CHECK-LE-LABEL: setbc39:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpldi r3, 1
;
; CHECK-BE-LABEL: setbc39:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpldi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i64 %a, 1
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setbc1(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbc1(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbc1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setbc2(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbc2(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbc2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setbc3(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbc3(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbc3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setbc4(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbc4(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbc4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv2
}
-define void @setbc5(i8 signext %a, i8 signext %b) {
+define dso_local void @setbc5(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbc5:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc5:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
ret void
}
-define void @setbc6(i32 signext %a, i32 signext %b) {
+define dso_local void @setbc6(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbc6:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc6:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
ret void
}
-define signext i32 @setbc7(i64 %a, i64 %b) {
+define dso_local signext i32 @setbc7(i64 %a, i64 %b) {
; CHECK-LABEL: setbc7:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
}
-define void @setbc9(i64 %a, i64 %b) {
+define dso_local void @setbc9(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc9:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
}
-define signext i32 @setbc10(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbc10(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbc10:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc11(i16 signext %a, i16 signext %b) {
+define dso_local void @setbc11(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbc11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc11:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
}
-define signext i32 @setbc12(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setbc12(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setbc12:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc13(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setbc13(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setbc13:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc13:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
}
-define signext i32 @setbc14(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setbc14(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setbc14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc15(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setbc15(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setbc15:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc15:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
}
-define signext i32 @setbc16(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setbc16(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setbc16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc17(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setbc17(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setbc17:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc17:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
}
-define signext i32 @setbc18(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbc18(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbc18:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc19(i8 signext %a, i8 signext %b) {
+define dso_local void @setbc19(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbc19:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc19:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i8 %a, %b
}
-define void @setbc20(i32 signext %a, i32 signext %b) {
+define dso_local void @setbc20(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbc20:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc20:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i32 %a, %b
}
-define signext i32 @setbc21(i64 %a, i64 %b) {
+define dso_local signext i32 @setbc21(i64 %a, i64 %b) {
; CHECK-LABEL: setbc21:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
}
-define void @setbc22(i64 %a, i64 %b) {
+define dso_local void @setbc22(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc22:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc22:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, %b
}
-define signext i32 @setbc23(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbc23(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbc23:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc24(i16 signext %a, i16 signext %b) {
+define dso_local void @setbc24(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbc24:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc24:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i16 %a, %b
}
-define signext i32 @setbc25(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbc25(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbc25:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc26(i8 signext %a, i8 signext %b) {
+define dso_local void @setbc26(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbc26:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc26:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i8 %a, %b
}
-define void @setbc27(i32 signext %a, i32 signext %b) {
+define dso_local void @setbc27(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbc27:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc27:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i32 %a, %b
}
-define signext i32 @setbc28(i64 %a, i64 %b) {
+define dso_local signext i32 @setbc28(i64 %a, i64 %b) {
; CHECK-LABEL: setbc28:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
}
-define void @setbc30(i64 %a, i64 %b) {
+define dso_local void @setbc30(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc30:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc30:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, %b
}
-define signext i32 @setbc31(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbc31(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbc31:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbc32(i16 signext %a, i16 signext %b) {
+define dso_local void @setbc32(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbc32:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc32:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i16 %a, %b
}
-define void @setbc34(i8 signext %a, i8 signext %b) {
+define dso_local void @setbc34(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbc34:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc34:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
}
-define void @setbc36(i32 signext %a, i32 signext %b) {
+define dso_local void @setbc36(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbc36:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc36:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
}
-define void @setbc37(i64 %a, i64 %b) {
+define dso_local void @setbc37(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc37:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc37:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
}
-define void @setbc39(i16 signext %a, i16 signext %b) {
+define dso_local void @setbc39(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbc39:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc39:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
}
-define void @setbc41(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setbc41(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setbc41:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc41:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
}
-define void @setbc43(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setbc43(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setbc43:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc43:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
}
-define void @setbc45(i64 %a, i64 %b) {
+define dso_local void @setbc45(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc45:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc45:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
}
-define void @setbc47(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setbc47(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setbc47:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbc47:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
}
-define void @setbc49(i64 %a, i64 %b) {
+define dso_local void @setbc49(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbc49:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbc49:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, %b
}
-define void @setnbc51(i64 %a, i64 %b) {
+define dso_local void @setnbc51(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc51:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc51:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, %b
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setbcr1(i8 %a) {
+define dso_local signext i32 @setbcr1(i8 %a) {
; CHECK-LABEL: setbcr1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 24
ret i32 %conv
}
-define signext i32 @setbcr2(i32 %a) {
+define dso_local signext i32 @setbcr2(i32 %a) {
; CHECK-LABEL: setbcr2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setbcr3(i64 %a) {
+define dso_local signext i32 @setbcr3(i64 %a) {
; CHECK-LABEL: setbcr3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setbcr4(i16 %a) {
+define dso_local signext i32 @setbcr4(i16 %a) {
; CHECK-LABEL: setbcr4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 16
ret i64 %conv
}
-define void @setbcr9(i8 %a) {
+define dso_local void @setbcr9(i8 %a) {
; CHECK-LE-LABEL: setbcr9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 24
;
; CHECK-BE-LABEL: setbcr9:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 24
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, 1
ret void
}
-define void @setbcr10(i32 %a) {
+define dso_local void @setbcr10(i32 %a) {
; CHECK-LE-LABEL: setbcr10:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setbcr10:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, 1
ret void
}
-define void @setbcr11(i64 %a) {
+define dso_local void @setbcr11(i64 %a) {
; CHECK-LE-LABEL: setbcr11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setbcr11:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, 1
ret void
}
-define void @setbcr12(i16 %a) {
+define dso_local void @setbcr12(i16 %a) {
; CHECK-LE-LABEL: setbcr12:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 16
;
; CHECK-BE-LABEL: setbcr12:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 16
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, 1
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setbcr1(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbcr1(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbcr1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define signext i32 @setbcr2(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbcr2(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbcr2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define signext i32 @setbcr3(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbcr3(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbcr3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define signext i32 @setbcr4(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbcr4(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbcr4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbcr5(i8 signext %a, i8 signext %b) {
+define dso_local void @setbcr5(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbcr5:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr5:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i8 %a, %b
}
-define void @setbcr6(i32 signext %a, i32 signext %b) {
+define dso_local void @setbcr6(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbcr6:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr6:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i32 %a, %b
}
-define signext i32 @setbcr7(i64 %a, i64 %b) {
+define dso_local signext i32 @setbcr7(i64 %a, i64 %b) {
; CHECK-LABEL: setbcr7:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
}
-define void @setbcr9(i64 %a, i64 %b) {
+define dso_local void @setbcr9(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr9:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i64 %a, %b
}
-define signext i32 @setbcr10(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbcr10(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbcr10:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbcr11(i16 signext %a, i16 signext %b) {
+define dso_local void @setbcr11(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbcr11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr11:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i16 %a, %b
}
-define signext i32 @setbcr12(i64 %a, i64 %b) {
+define dso_local signext i32 @setbcr12(i64 %a, i64 %b) {
; CHECK-LABEL: setbcr12:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpld r3, r4
}
-define void @setbcr13(i64 %a, i64 %b) {
+define dso_local void @setbcr13(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr13:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setbcr13:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
}
-define signext i32 @setbcr14(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbcr14(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbcr14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbcr15(i8 signext %a, i8 signext %b) {
+define dso_local void @setbcr15(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbcr15:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr15:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i8 %a, %b
}
-define signext i32 @setbcr16(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setbcr16(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setbcr16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbcr17(i32 signext %a, i32 signext %b) {
+define dso_local void @setbcr17(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbcr17:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr17:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i32 %a, %b
}
-define signext i32 @setbcr18(i64 %a, i64 %b) {
+define dso_local signext i32 @setbcr18(i64 %a, i64 %b) {
; CHECK-LABEL: setbcr18:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
}
-define void @setbcr19(i64 %a, i64 %b) {
+define dso_local void @setbcr19(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr19:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr19:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i64 %a, %b
}
-define signext i32 @setbcr20(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbcr20(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbcr20:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
-define void @setbcr21(i16 signext %a, i16 signext %b) {
+define dso_local void @setbcr21(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbcr21:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr21:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i16 %a, %b
}
-define signext i32 @setbcr22(i64 %a, i64 %b) {
+define dso_local signext i32 @setbcr22(i64 %a, i64 %b) {
; CHECK-LABEL: setbcr22:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpld r3, r4
}
-define void @setbcr23(i64 %a, i64 %b) {
+define dso_local void @setbcr23(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr23:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setbcr23:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
ret void
}
-define signext i32 @setbcr24(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setbcr24(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setbcr24:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv2
}
-define void @setbcr25(i8 signext %a, i8 signext %b) {
+define dso_local void @setbcr25(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbcr25:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr25:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, %b
ret void
}
-define void @setbcr26(i32 signext %a, i32 signext %b) {
+define dso_local void @setbcr26(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbcr26:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr26:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, %b
ret void
}
-define signext i32 @setbcr27(i64 %a, i64 %b) {
+define dso_local signext i32 @setbcr27(i64 %a, i64 %b) {
; CHECK-LABEL: setbcr27:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i32 %conv
}
-define void @setbcr28(i64 %a, i64 %b) {
+define dso_local void @setbcr28(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr28:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr28:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, %b
ret void
}
-define signext i32 @setbcr29(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setbcr29(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setbcr29:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv2
}
-define void @setbcr30(i16 signext %a, i16 signext %b) {
+define dso_local void @setbcr30(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbcr30:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr30:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, %b
ret void
}
-define signext i32 @setbcr31(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setbcr31(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setbcr31:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv2
}
-define void @setbcr32(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setbcr32(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setbcr32:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr32:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, %b
ret void
}
-define signext i32 @setbcr33(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setbcr33(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setbcr33:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setbcr34(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setbcr34(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setbcr34:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr34:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, %b
ret void
}
-define signext i32 @setbcr35(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setbcr35(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setbcr35:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv2
}
-define void @setbcr36(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setbcr36(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setbcr36:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr36:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, %b
ret i64 %conv3
}
-define void @setbcr38(i8 signext %a, i8 signext %b) {
+define dso_local void @setbcr38(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbcr38:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr38:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i8 %a, %b
ret i64 %conv1
}
-define void @setbcr40(i32 signext %a, i32 signext %b) {
+define dso_local void @setbcr40(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbcr40:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr40:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i32 %a, %b
ret i64 %conv1
}
-define void @setbcr42(i64 %a, i64 %b) {
+define dso_local void @setbcr42(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr42:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr42:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i64 %a, %b
ret i64 %conv3
}
-define void @setbcr44(i16 signext %a, i16 signext %b) {
+define dso_local void @setbcr44(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbcr44:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr44:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i16 %a, %b
}
-define void @setbcr46(i64 %a, i64 %b) {
+define dso_local void @setbcr46(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr46:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setbcr46:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
ret i64 %conv3
}
-define void @setbcr48(i8 signext %a, i8 signext %b) {
+define dso_local void @setbcr48(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setbcr48:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr48:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i8 %a, %b
ret i64 %conv1
}
-define void @setbcr50(i32 signext %a, i32 signext %b) {
+define dso_local void @setbcr50(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setbcr50:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr50:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i32 %a, %b
}
-define void @setbcr52(i64 %a, i64 %b) {
+define dso_local void @setbcr52(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr52:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr52:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i64 %a, %b
ret i64 %conv3
}
-define void @setbcr54(i16 signext %a, i16 signext %b) {
+define dso_local void @setbcr54(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setbcr54:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setbcr54:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i16 %a, %b
}
-define void @setbcr56(i64 %a, i64 %b) {
+define dso_local void @setbcr56(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr56:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setbcr56:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
ret i64 %conv1
}
-define void @setbcr58(i64 %a, i64 %b) {
+define dso_local void @setbcr58(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr58:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr58:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, %b
ret i64 %conv1
}
-define void @setbcr60(i64 %a, i64 %b) {
+define dso_local void @setbcr60(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setbcr60:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setbcr60:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, %b
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setnbc1(i8 %a) {
+define dso_local signext i32 @setnbc1(i8 %a) {
; CHECK-LABEL: setnbc1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb r3, r3
ret i32 %conv
}
-define signext i32 @setnbc2(i32 %a) {
+define dso_local signext i32 @setnbc2(i32 %a) {
; CHECK-LABEL: setnbc2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc3(i64 %a) {
+define dso_local signext i32 @setnbc3(i64 %a) {
; CHECK-LABEL: setnbc3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc4(i16 %a) {
+define dso_local signext i32 @setnbc4(i16 %a) {
; CHECK-LABEL: setnbc4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh r3, r3
ret i64 %conv
}
-define void @setnbc9(i8 %a) {
+define dso_local void @setnbc9(i8 %a) {
; CHECK-LE-LABEL: setnbc9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsb r3, r3
;
; CHECK-BE-LABEL: setnbc9:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: extsb r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i8 %a, 1
ret void
}
-define void @setnbc10(i32 %a) {
+define dso_local void @setnbc10(i32 %a) {
; CHECK-LE-LABEL: setnbc10:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setnbc10:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i32 %a, 1
ret void
}
-define void @setnbc11(i64 %a) {
+define dso_local void @setnbc11(i64 %a) {
; CHECK-LE-LABEL: setnbc11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setnbc11:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, 1
ret void
}
-define void @setnbc12(i16 %a) {
+define dso_local void @setnbc12(i16 %a) {
; CHECK-LE-LABEL: setnbc12:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsh r3, r3
;
; CHECK-BE-LABEL: setnbc12:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: extsh r3, r3
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i16 %a, 1
ret void
}
-define signext i32 @setnbc13(i8 %a) {
+define dso_local signext i32 @setnbc13(i8 %a) {
; CHECK-LABEL: setnbc13:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb r3, r3
ret i32 %conv
}
-define signext i32 @setnbc14(i32 %a) {
+define dso_local signext i32 @setnbc14(i32 %a) {
; CHECK-LABEL: setnbc14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc15(i64 %a) {
+define dso_local signext i32 @setnbc15(i64 %a) {
; CHECK-LABEL: setnbc15:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc16(i16 %a) {
+define dso_local signext i32 @setnbc16(i16 %a) {
; CHECK-LABEL: setnbc16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh r3, r3
ret i64 %conv
}
-define void @setnbc21(i8 %a) {
+define dso_local void @setnbc21(i8 %a) {
; CHECK-LE-LABEL: setnbc21:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsb r3, r3
;
; CHECK-BE-LABEL: setnbc21:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: extsb r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i8 %a, 1
ret void
}
-define void @setnbc22(i32 %a) {
+define dso_local void @setnbc22(i32 %a) {
; CHECK-LE-LABEL: setnbc22:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setnbc22:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i32 %a, 1
ret void
}
-define void @setnbc23(i64 %a) {
+define dso_local void @setnbc23(i64 %a) {
; CHECK-LE-LABEL: setnbc23:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setnbc23:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, 1
ret void
}
-define void @setnbc24(i16 %a) {
+define dso_local void @setnbc24(i16 %a) {
; CHECK-LE-LABEL: setnbc24:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsh r3, r3
;
; CHECK-BE-LABEL: setnbc24:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: extsh r3, r3
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i16 %a, 1
ret void
}
-define signext i32 @setnbc25(i8 %a) {
+define dso_local signext i32 @setnbc25(i8 %a) {
; CHECK-LABEL: setnbc25:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 24
ret i32 %conv
}
-define signext i32 @setnbc26(i32 %a) {
+define dso_local signext i32 @setnbc26(i32 %a) {
; CHECK-LABEL: setnbc26:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc27(i64 %a) {
+define dso_local signext i32 @setnbc27(i64 %a) {
; CHECK-LABEL: setnbc27:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setnbc28(i16 %a) {
+define dso_local signext i32 @setnbc28(i16 %a) {
; CHECK-LABEL: setnbc28:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 16
ret i64 %conv
}
-define void @setnbc33(i8 %a) {
+define dso_local void @setnbc33(i8 %a) {
; CHECK-LE-LABEL: setnbc33:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 24
;
; CHECK-BE-LABEL: setnbc33:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 24
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, 1
ret void
}
-define void @setnbc34(i32 %a) {
+define dso_local void @setnbc34(i32 %a) {
; CHECK-LE-LABEL: setnbc34:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setnbc34:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, 1
ret void
}
-define void @setnbc35(i64 %a) {
+define dso_local void @setnbc35(i64 %a) {
; CHECK-LE-LABEL: setnbc35:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setnbc35:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, 1
ret void
}
-define void @setnbc36(i16 %a) {
+define dso_local void @setnbc36(i16 %a) {
; CHECK-LE-LABEL: setnbc36:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 16
;
; CHECK-BE-LABEL: setnbc36:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 16
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, 1
ret void
}
-define signext i32 @setnbc37(i64 %a) {
+define dso_local signext i32 @setnbc37(i64 %a) {
; CHECK-LABEL: setnbc37:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpldi r3, 1
ret i64 %conv
}
-define void @setnbc39(i64 %a) {
+define dso_local void @setnbc39(i64 %a) {
; CHECK-LE-LABEL: setnbc39:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpldi r3, 1
;
; CHECK-BE-LABEL: setnbc39:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpldi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i64 %a, 1
ret void
}
-define signext i32 @setnbc40(i8 %a) {
+define dso_local signext i32 @setnbc40(i8 %a) {
; CHECK-LABEL: setnbc40:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb. r3, r3
ret i32 %conv
}
-define signext i32 @setnbc41(i32 %a) {
+define dso_local signext i32 @setnbc41(i32 %a) {
; CHECK-LABEL: setnbc41:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 0
ret i32 %conv
}
-define signext i32 @setnbc42(i16 %a) {
+define dso_local signext i32 @setnbc42(i16 %a) {
; CHECK-LABEL: setnbc42:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh. r3, r3
ret i64 %conv
}
-define signext i32 @setnbc46(i8 %a) {
+define dso_local signext i32 @setnbc46(i8 %a) {
; CHECK-LABEL: setnbc46:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsb. r3, r3
ret i32 %conv
}
-define signext i32 @setnbc47(i32 %a) {
+define dso_local signext i32 @setnbc47(i32 %a) {
; CHECK-LABEL: setnbc47:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 0
ret i32 %conv
}
-define signext i32 @setnbc48(i64 %a) {
+define dso_local signext i32 @setnbc48(i64 %a) {
; CHECK-LABEL: setnbc48:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 0
ret i32 %conv
}
-define signext i32 @setnbc49(i16 %a) {
+define dso_local signext i32 @setnbc49(i16 %a) {
; CHECK-LABEL: setnbc49:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: extsh. r3, r3
ret i64 %conv
}
-define void @setnbc54(i8 %a) {
+define dso_local void @setnbc54(i8 %a) {
; CHECK-LE-LABEL: setnbc54:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsb. r3, r3
;
; CHECK-BE-LABEL: setnbc54:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: extsb. r3, r3
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i8 %a, 0
ret void
}
-define void @setnbc55(i32 %a) {
+define dso_local void @setnbc55(i32 %a) {
; CHECK-LE-LABEL: setnbc55:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 0
;
; CHECK-BE-LABEL: setnbc55:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i32 %a, 0
ret void
}
-define void @setnbc56(i64 %a) {
+define dso_local void @setnbc56(i64 %a) {
; CHECK-LE-LABEL: setnbc56:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 0
;
; CHECK-BE-LABEL: setnbc56:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, 0
ret void
}
-define void @setnbc57(i16 %a) {
+define dso_local void @setnbc57(i16 %a) {
; CHECK-LE-LABEL: setnbc57:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: extsh. r3, r3
;
; CHECK-BE-LABEL: setnbc57:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: extsh. r3, r3
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i16 %a, 0
ret void
}
-define signext i32 @setnbc58(i8 %a) {
+define dso_local signext i32 @setnbc58(i8 %a) {
; CHECK-LABEL: setnbc58:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: andi. r3, r3, 255
ret i32 %conv
}
-define signext i32 @setnbc59(i32 %a) {
+define dso_local signext i32 @setnbc59(i32 %a) {
; CHECK-LABEL: setnbc59:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 0
ret i32 %conv
}
-define signext i32 @setnbc60(i64 %a) {
+define dso_local signext i32 @setnbc60(i64 %a) {
; CHECK-LABEL: setnbc60:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 0
ret i32 %conv
}
-define signext i32 @setnbc61(i16 %a) {
+define dso_local signext i32 @setnbc61(i16 %a) {
; CHECK-LABEL: setnbc61:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: andi. r3, r3, 65535
ret i64 %conv
}
-define void @setnbc66(i8 %a) {
+define dso_local void @setnbc66(i8 %a) {
; CHECK-LE-LABEL: setnbc66:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: andi. r3, r3, 255
;
; CHECK-BE-LABEL: setnbc66:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: andi. r3, r3, 255
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, 0
ret void
}
-define void @setnbc67(i32 %a) {
+define dso_local void @setnbc67(i32 %a) {
; CHECK-LE-LABEL: setnbc67:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 0
;
; CHECK-BE-LABEL: setnbc67:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, 0
ret void
}
-define void @setnbc68(i64 %a) {
+define dso_local void @setnbc68(i64 %a) {
; CHECK-LE-LABEL: setnbc68:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 0
;
; CHECK-BE-LABEL: setnbc68:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, 0
ret void
}
-define void @setnbc69(i16 %a) {
+define dso_local void @setnbc69(i16 %a) {
; CHECK-LE-LABEL: setnbc69:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: andi. r3, r3, 65535
;
; CHECK-BE-LABEL: setnbc69:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: andi. r3, r3, 65535
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, 0
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setnbc1(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbc1(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbc1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setnbc2(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbc2(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbc2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setnbc3(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbc3(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbc3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define signext i32 @setnbc4(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbc4(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbc4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
}
; function attrs: norecurse nounwind
-define void @setnbc5(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbc5(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbc5:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc5:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
ret void
}
-define void @setnbc6(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbc6(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbc6:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc6:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
ret void
}
-define signext i32 @setnbc7(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbc7(i64 %a, i64 %b) {
; CHECK-LABEL: setnbc7:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i64 %conv
}
-define void @setnbc9(i64 %a, i64 %b) {
+define dso_local void @setnbc9(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc9:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
ret void
}
-define signext i32 @setnbc10(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbc10(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbc10:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setnbc11(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbc11(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbc11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc11:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
ret void
}
-define signext i32 @setnbc12(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbc12(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbc12:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setnbc13(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc13(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc13:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc13:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
ret void
}
-define signext i32 @setnbc14(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbc14(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbc14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setnbc15(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc15(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc15:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc15:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
ret void
}
-define signext i32 @setnbc16(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbc16(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbc16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setnbc17(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc17(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc17:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc17:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
ret void
}
-define signext i32 @setnbc18(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbc18(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbc18:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbc19(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbc19(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbc19:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc19:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i8 %a, %b
ret void
}
-define void @setnbc20(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbc20(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbc20:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc20:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i32 %a, %b
ret void
}
-define signext i32 @setnbc21(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbc21(i64 %a, i64 %b) {
; CHECK-LABEL: setnbc21:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i32 %sub
}
-define void @setnbc22(i64 %a, i64 %b) {
+define dso_local void @setnbc22(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc22:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc22:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, %b
ret void
}
-define signext i32 @setnbc23(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbc23(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbc23:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbc24(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbc24(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbc24:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc24:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i16 %a, %b
ret void
}
-define signext i32 @setnbc25(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbc25(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbc25:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc26(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc26(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc26:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc26:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i8 %a, %b
ret void
}
-define signext i32 @setnbc27(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbc27(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbc27:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc28(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc28(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc28:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc28:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i32 %a, %b
ret void
}
-define signext i32 @setnbc29(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbc29(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbc29:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc30(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc30(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc30:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc30:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i16 %a, %b
ret void
}
-define signext i32 @setnbc31(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbc31(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbc31:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbc32(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbc32(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbc32:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc32:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i8 %a, %b
ret void
}
-define void @setnbc33(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbc33(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbc33:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc33:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i32 %a, %b
ret void
}
-define signext i32 @setnbc34(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbc34(i64 %a, i64 %b) {
; CHECK-LABEL: setnbc34:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i64 %sub
}
-define void @setnbc36(i64 %a, i64 %b) {
+define dso_local void @setnbc36(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc36:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc36:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, %b
ret void
}
-define signext i32 @setnbc37(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbc37(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbc37:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbc38(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbc38(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbc38:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc38:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i16 %a, %b
ret void
}
-define signext i32 @setnbc39(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbc39(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbc39:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc40(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc40(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc40:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc40:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
ret void
}
-define signext i32 @setnbc41(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbc41(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbc41:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc42(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc42(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc42:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc42:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i32 %a, %b
ret void
}
-define signext i32 @setnbc43(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbc43(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbc43:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbc44(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc44(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc44:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc44:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
ret i64 %conv3
}
-define void @setnbc46(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbc46(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbc46:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc46:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
ret i64 %conv1
}
-define void @setnbc48(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbc48(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbc48:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc48:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
ret void
}
-define void @setnbc49(i64 %a, i64 %b) {
+define dso_local void @setnbc49(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc49:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc49:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
ret i64 %conv3
}
-define void @setnbc51(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbc51(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbc51:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc51:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
ret i64 %conv3
}
-define void @setnbc53(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc53(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc53:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc53:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i8 %a, %b
ret i64 %conv1
}
-define void @setnbc55(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc55(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc55:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc55:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i32 %a, %b
ret i64 %conv1
}
-define void @setnbc57(i64 %a, i64 %b) {
+define dso_local void @setnbc57(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc57:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc57:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i64 %a, %b
ret i64 %conv3
}
-define void @setnbc59(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc59(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc59:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbc59:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp eq i16 %a, %b
ret i64 %conv1
}
-define void @setnbc61(i64 %a, i64 %b) {
+define dso_local void @setnbc61(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc61:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc61:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sgt i64 %a, %b
ret i64 %conv3
}
-define void @setnbc63(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc63(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc63:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc63:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i8 %a, %b
ret i64 %conv1
}
-define void @setnbc65(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc65(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc65:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc65:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i32 %a, %b
ret i64 %conv3
}
-define void @setnbc67(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc67(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc67:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc67:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ugt i16 %a, %b
ret i64 %conv1
}
-define void @setnbc69(i64 %a, i64 %b) {
+define dso_local void @setnbc69(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbc69:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbc69:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp slt i64 %a, %b
ret i64 %conv3
}
-define void @setnbc71(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbc71(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbc71:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc71:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
ret i64 %conv1
}
-define void @setnbc73(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbc73(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbc73:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc73:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i32 %a, %b
ret i64 %conv3
}
-define void @setnbc75(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbc75(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbc75:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbc75:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbc r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setnbcr1(i8 %a) {
+define dso_local signext i32 @setnbcr1(i8 %a) {
; CHECK-LABEL: setnbcr1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: andi. r3, r3, 255
ret i32 %conv
}
-define signext i32 @setnbcr2(i32 %a) {
+define dso_local signext i32 @setnbcr2(i32 %a) {
; CHECK-LABEL: setnbcr2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 0
ret i32 %conv
}
-define signext i32 @setnbcr3(i64 %a) {
+define dso_local signext i32 @setnbcr3(i64 %a) {
; CHECK-LABEL: setnbcr3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 0
ret i32 %conv
}
-define signext i32 @setnbcr4(i16 %a) {
+define dso_local signext i32 @setnbcr4(i16 %a) {
; CHECK-LABEL: setnbcr4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: andi. r3, r3, 65535
ret i64 %conv
}
-define void @setnbcr9(i8 %a) {
+define dso_local void @setnbcr9(i8 %a) {
; CHECK-LE-LABEL: setnbcr9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: andi. r3, r3, 255
;
; CHECK-BE-LABEL: setnbcr9:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: andi. r3, r3, 255
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i8 %a, 1
ret void
}
-define void @setnbcr10(i32 %a) {
+define dso_local void @setnbcr10(i32 %a) {
; CHECK-LE-LABEL: setnbcr10:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 0
;
; CHECK-BE-LABEL: setnbcr10:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i32 %a, 1
ret void
}
-define void @setnbcr11(i64 %a) {
+define dso_local void @setnbcr11(i64 %a) {
; CHECK-LE-LABEL: setnbcr11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 0
;
; CHECK-BE-LABEL: setnbcr11:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 0
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i64 %a, 1
ret void
}
-define void @setnbcr12(i16 %a) {
+define dso_local void @setnbcr12(i16 %a) {
; CHECK-LE-LABEL: setnbcr12:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: andi. r3, r3, 65535
;
; CHECK-BE-LABEL: setnbcr12:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: andi. r3, r3, 65535
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i16 %a, 1
ret void
}
-define signext i32 @setnbcr13(i8 %a) {
+define dso_local signext i32 @setnbcr13(i8 %a) {
; CHECK-LABEL: setnbcr13:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 24
ret i32 %conv
}
-define signext i32 @setnbcr14(i32 %a) {
+define dso_local signext i32 @setnbcr14(i32 %a) {
; CHECK-LABEL: setnbcr14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpwi r3, 1
ret i32 %conv
}
-define signext i32 @setnbcr15(i64 %a) {
+define dso_local signext i32 @setnbcr15(i64 %a) {
; CHECK-LABEL: setnbcr15:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpdi r3, 1
ret i32 %conv
}
-define signext i32 @setnbcr16(i16 %a) {
+define dso_local signext i32 @setnbcr16(i16 %a) {
; CHECK-LABEL: setnbcr16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 16
ret i64 %conv
}
-define void @setnbcr21(i8 %a) {
+define dso_local void @setnbcr21(i8 %a) {
; CHECK-LE-LABEL: setnbcr21:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 24
;
; CHECK-BE-LABEL: setnbcr21:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 24
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, 1
ret void
}
-define void @setnbcr22(i32 %a) {
+define dso_local void @setnbcr22(i32 %a) {
; CHECK-LE-LABEL: setnbcr22:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpwi r3, 1
;
; CHECK-BE-LABEL: setnbcr22:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, 1
ret void
}
-define void @setnbcr23(i64 %a) {
+define dso_local void @setnbcr23(i64 %a) {
; CHECK-LE-LABEL: setnbcr23:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpdi r3, 1
;
; CHECK-BE-LABEL: setnbcr23:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
; CHECK-BE-NEXT: cmpdi r3, 1
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, 1
ret void
}
-define void @setnbcr24(i16 %a) {
+define dso_local void @setnbcr24(i16 %a) {
; CHECK-LE-LABEL: setnbcr24:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: clrlwi r3, r3, 16
;
; CHECK-BE-LABEL: setnbcr24:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
; CHECK-BE-NEXT: clrlwi r3, r3, 16
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: cmpwi r3, 1
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, 1
; This codegen will be re-evaluated at a later time on whether or not it should
; be emitted on P10.
-@globalVal = common local_unnamed_addr global i8 0, align 1
-@globalVal2 = common local_unnamed_addr global i32 0, align 4
-@globalVal3 = common local_unnamed_addr global i64 0, align 8
-@globalVal4 = common local_unnamed_addr global i16 0, align 2
+@globalVal = common dso_local local_unnamed_addr global i8 0, align 1
+@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 4
+@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 8
+@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @setnbcr1(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbcr1(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbcr1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %lnot.ext
}
-define signext i32 @setnbcr2(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbcr2(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbcr2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %lnot.ext
}
-define signext i32 @setnbcr3(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbcr3(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbcr3:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %lnot.ext
}
-define signext i32 @setnbcr4(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbcr4(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbcr4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %conv
}
-define void @setnbcr5(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbcr5(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbcr5:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr5:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i8 %a, %b
ret void
}
-define void @setnbcr6(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbcr6(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbcr6:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr6:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i32 %a, %b
ret void
}
-define signext i32 @setnbcr7(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbcr7(i64 %a, i64 %b) {
; CHECK-LABEL: setnbcr7:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i64 %conv
}
-define void @setnbcr9(i64 %a, i64 %b) {
+define dso_local void @setnbcr9(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr9:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr9:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i64 %a, %b
ret void
}
-define signext i32 @setnbcr10(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbcr10(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbcr10:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr11(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbcr11(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbcr11:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr11:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i16 %a, %b
ret void
}
-define signext i32 @setnbcr12(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbcr12(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbcr12:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr13(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbcr13(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbcr13:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr13:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
ret void
}
-define signext i32 @setnbcr14(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbcr14(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbcr14:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr15(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbcr15(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbcr15:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr15:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
ret void
}
-define signext i32 @setnbcr16(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbcr16(i64 %a, i64 %b) {
; CHECK-LABEL: setnbcr16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpld r3, r4
ret i32 %sub
}
-define void @setnbcr17(i64 %a, i64 %b) {
+define dso_local void @setnbcr17(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr17:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setnbcr17:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
ret void
}
-define signext i32 @setnbcr18(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbcr18(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbcr18:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr19(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbcr19(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbcr19:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr19:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
ret void
}
-define signext i32 @setnbcr20(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbcr20(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbcr20:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr21(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbcr21(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbcr21:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr21:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i8 %a, %b
ret void
}
-define signext i32 @setnbcr22(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @setnbcr22(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: setnbcr22:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr23(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbcr23(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbcr23:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr23:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i32 %a, %b
ret void
}
-define signext i32 @setnbcr24(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbcr24(i64 %a, i64 %b) {
; CHECK-LABEL: setnbcr24:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i32 %sub
}
-define void @setnbcr25(i64 %a, i64 %b) {
+define dso_local void @setnbcr25(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr25:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr25:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i64 %a, %b
ret void
}
-define signext i32 @setnbcr26(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbcr26(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbcr26:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr27(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbcr27(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbcr27:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr27:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i16 %a, %b
ret void
}
-define signext i32 @setnbcr28(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbcr28(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbcr28:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr29(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbcr29(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbcr29:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr29:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
ret void
}
-define signext i32 @setnbcr30(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbcr30(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbcr30:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr31(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbcr31(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbcr31:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr31:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
ret void
}
-define signext i32 @setnbcr32(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbcr32(i64 %a, i64 %b) {
; CHECK-LABEL: setnbcr32:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpld r3, r4
ret i32 %sub
}
-define void @setnbcr33(i64 %a, i64 %b) {
+define dso_local void @setnbcr33(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr33:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setnbcr33:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
ret void
}
-define signext i32 @setnbcr34(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbcr34(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbcr34:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplw r3, r4
ret i32 %sub
}
-define void @setnbcr35(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbcr35(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbcr35:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr35:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
ret void
}
-define signext i32 @setnbcr36(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @setnbcr36(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: setnbcr36:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr37(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbcr37(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbcr37:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr37:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, %b
ret void
}
-define void @setnbcr38(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbcr38(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbcr38:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr38:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, %b
ret void
}
-define signext i32 @setnbcr39(i64 %a, i64 %b) {
+define dso_local signext i32 @setnbcr39(i64 %a, i64 %b) {
; CHECK-LABEL: setnbcr39:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpd r3, r4
ret i32 %sub
}
-define void @setnbcr40(i64 %a, i64 %b) {
+define dso_local void @setnbcr40(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr40:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr40:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, %b
ret void
}
-define signext i32 @setnbcr41(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @setnbcr41(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: setnbcr41:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr42(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbcr42(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbcr42:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr42:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, %b
ret void
}
-define signext i32 @setnbcr43(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @setnbcr43(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: setnbcr43:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @sernbcr44(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @sernbcr44(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: sernbcr44:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: sernbcr44:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i8 %a, %b
ret void
}
-define signext i32 @setnbcr45(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @setnbcr45(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: setnbcr45:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr46(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbcr46(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbcr46:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr46:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i32 %a, %b
ret void
}
-define signext i32 @setnbcr47(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @setnbcr47(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: setnbcr47:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpw r3, r4
ret i32 %sub
}
-define void @setnbcr48(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbcr48(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbcr48:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr48:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i16 %a, %b
ret i64 %conv3
}
-define void @setnbcr50(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbcr50(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbcr50:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr50:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i8 %a, %b
ret i64 %conv1
}
-define void @setnbcr52(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbcr52(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbcr52:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr52:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i32 %a, %b
ret i64 %conv1
}
-define void @setnbcr54(i64 %a, i64 %b) {
+define dso_local void @setnbcr54(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr54:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr54:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i64 %a, %b
ret i64 %conv3
}
-define void @setnbcr56(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbcr56(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbcr56:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr56:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sge i16 %a, %b
ret i64 %conv3
}
-define void @setnbcr58(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbcr58(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbcr58:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr58:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
ret i64 %conv1
}
-define void @setnbcr60(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbcr60(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbcr60:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr60:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
ret i64 %conv1
}
-define void @setnbcr62(i64 %a, i64 %b) {
+define dso_local void @setnbcr62(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr62:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setnbcr62:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
ret i64 %conv3
}
-define void @setnbcr64(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbcr64(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbcr64:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr64:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, lt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
ret i64 %conv3
}
-define void @setnbcr66(i8 signext %a, i8 signext %b) {
+define dso_local void @setnbcr66(i8 signext %a, i8 signext %b) {
; CHECK-LE-LABEL: setnbcr66:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr66:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i8 %a, %b
ret i64 %conv1
}
-define void @setnbcr68(i32 signext %a, i32 signext %b) {
+define dso_local void @setnbcr68(i32 signext %a, i32 signext %b) {
; CHECK-LE-LABEL: setnbcr68:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr68:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i32 %a, %b
ret i64 %conv1
}
-define void @setnbcr70(i64 %a, i64 %b) {
+define dso_local void @setnbcr70(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr70:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr70:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i64 %a, %b
ret i64 %conv3
}
-define void @setnbcr72(i16 signext %a, i16 signext %b) {
+define dso_local void @setnbcr72(i16 signext %a, i16 signext %b) {
; CHECK-LE-LABEL: setnbcr72:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpw r3, r4
; CHECK-BE-LABEL: setnbcr72:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp sle i16 %a, %b
ret i64 %conv3
}
-define void @setnbcr74(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @setnbcr74(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LE-LABEL: setnbcr74:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr74:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
ret i64 %conv1
}
-define void @setnbcr76(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @setnbcr76(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LE-LABEL: setnbcr76:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr76:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC1@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
ret i64 %conv1
}
-define void @setnbcr78(i64 %a, i64 %b) {
+define dso_local void @setnbcr78(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr78:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpld r3, r4
; CHECK-BE-LABEL: setnbcr78:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpld r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
ret i64 %conv3
}
-define void @setnbcr80(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @setnbcr80(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LE-LABEL: setnbcr80:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmplw r3, r4
; CHECK-BE-LABEL: setnbcr80:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmplw r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC3@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha
; CHECK-BE-NEXT: setnbcr r3, gt
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
ret i64 %conv1
}
-define void @setnbcr83(i64 %a, i64 %b) {
+define dso_local void @setnbcr83(i64 %a, i64 %b) {
; CHECK-LE-LABEL: setnbcr83:
; CHECK-LE: # %bb.0: # %entry
; CHECK-LE-NEXT: cmpd r3, r4
; CHECK-BE-LABEL: setnbcr83:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: cmpd r3, r4
-; CHECK-BE-NEXT: addis r4, r2, .LC2@toc@ha
-; CHECK-BE-NEXT: ld r4, .LC2@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha
; CHECK-BE-NEXT: setnbcr r3, eq
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)
; CHECK-BE-NEXT: blr
entry:
%cmp = icmp ne i64 %a, %b
; These test cases are to ensure that when using pc relative memory operations
; ABI correct code and relocations are produced for the Local Exec TLS Model.
-@x = thread_local global i32 0, align 4
-@y = thread_local global [5 x i32] [i32 0, i32 0, i32 0, i32 0, i32 0], align 4
+@x = dso_local thread_local global i32 0, align 4
+@y = dso_local thread_local global [5 x i32] [i32 0, i32 0, i32 0, i32 0, i32 0], align 4
-define i32* @LocalExecAddressLoad() {
+define dso_local i32* @LocalExecAddressLoad() {
; CHECK-S-LABEL: LocalExecAddressLoad:
; CHECK-S: # %bb.0: # %entry
; CHECK-S-NEXT: paddi r3, r13, x@TPREL, 0
ret i32* @x
}
-define i32 @LocalExecValueLoad() {
+define dso_local i32 @LocalExecValueLoad() {
; CHECK-S-LABEL: LocalExecValueLoad:
; CHECK-S: # %bb.0: # %entry
; CHECK-S-NEXT: paddi r3, r13, x@TPREL, 0
ret i32 %0
}
-define void @LocalExecValueStore(i32 %in) {
+define dso_local void @LocalExecValueStore(i32 %in) {
; CHECK-S-LABEL: LocalExecValueStore:
; CHECK-S: # %bb.0: # %entry
; CHECK-S-NEXT: paddi r4, r13, x@TPREL, 0
ret void
}
-define i32 @LocalExecValueLoadOffset() {
+define dso_local i32 @LocalExecValueLoadOffset() {
; CHECK-S-LABEL: LocalExecValueLoadOffset:
; CHECK-S: # %bb.0: # %entry
; CHECK-S-NEXT: paddi r3, r13, y@TPREL, 0
}
-define i32* @LocalExecValueLoadOffsetNoLoad() {
+define dso_local i32* @LocalExecValueLoadOffsetNoLoad() {
; CHECK-S-LABEL: LocalExecValueLoadOffsetNoLoad:
; CHECK-S: # %bb.0: # %entry
; CHECK-S-NEXT: paddi r3, r13, y@TPREL, 0
%struct.d2 = type<{ i64, i64 }>
%struct.misalign = type<{ i8, i64 }>
-@b4v = global %struct.b4 <{ i8 1, i8 2, i8 3, i8 4 }>, align 4
-@h2v = global %struct.h2 <{ i16 1, i16 2 }>, align 4
+@b4v = dso_local global %struct.b4 <{ i8 1, i8 2, i8 3, i8 4 }>, align 4
+@h2v = dso_local global %struct.h2 <{ i16 1, i16 2 }>, align 4
-@b8v = global %struct.b8 <{ i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8 }>, align 8
-@h4v = global %struct.h4 <{ i16 1, i16 2, i16 3, i16 4 }>, align 8
-@w2v = global %struct.w2 <{ i32 1, i32 2 }>, align 8
+@b8v = dso_local global %struct.b8 <{ i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8 }>, align 8
+@h4v = dso_local global %struct.h4 <{ i16 1, i16 2, i16 3, i16 4 }>, align 8
+@w2v = dso_local global %struct.w2 <{ i32 1, i32 2 }>, align 8
-@d2v = global %struct.d2 <{ i64 1, i64 2 }>, align 16
-@misalign_v = global %struct.misalign <{ i8 1, i64 2 }>, align 16
+@d2v = dso_local global %struct.d2 <{ i64 1, i64 2 }>, align 16
+@misalign_v = dso_local global %struct.misalign <{ i8 1, i64 2 }>, align 16
; CHECK-LABEL: test_b4:
; CHECK: addis [[REGSTRUCT:[0-9]+]], 2, b4v@toc@ha
; CHECK-DAG: stb [[REG2_1]], b4v@toc@l+2([[REGSTRUCT]])
; CHECK-DAG: stb [[REG3_1]], b4v@toc@l+3([[REGSTRUCT]])
-define void @test_b4() nounwind {
+define dso_local void @test_b4() nounwind {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.b4, %struct.b4* @b4v, i32 0, i32 0), align 1
%inc0 = add nsw i8 %0, 1
; CHECK-DAG: sth [[REG0_1]], h2v@toc@l([[REGSTRUCT]])
; CHECK-DAG: sth [[REG1_1]], h2v@toc@l+2([[REGSTRUCT]])
-define void @test_h2() nounwind {
+define dso_local void @test_h2() nounwind {
entry:
%0 = load i16, i16* getelementptr inbounds (%struct.h2, %struct.h2* @h2v, i32 0, i32 0), align 2
%inc0 = add nsw i16 %0, 1
; CHECK-DAG: addi [[REG1_1:[0-9]+]], [[REG1_0]], 2
; CHECK-DAG: sth [[REG0_1]], h2v@toc@l([[REGSTRUCT]])
; CHECK-DAG: sth [[REG1_1]], h2v@toc@l+2([[REGSTRUCT]])
-define void @test_h2_optsize() optsize nounwind {
+define dso_local void @test_h2_optsize() optsize nounwind {
entry:
%0 = load i16, i16* getelementptr inbounds (%struct.h2, %struct.h2* @h2v, i32 0, i32 0), align 2
%inc0 = add nsw i16 %0, 1
; CHECK-DAG: stb [[REG6_1]], b8v@toc@l+6([[REGSTRUCT]])
; CHECK-DAG: stb [[REG7_1]], b8v@toc@l+7([[REGSTRUCT]])
-define void @test_b8() nounwind {
+define dso_local void @test_b8() nounwind {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.b8, %struct.b8* @b8v, i32 0, i32 0), align 1
%inc0 = add nsw i8 %0, 1
; CHECK-DAG: sth [[REG2_1]], h4v@toc@l+4([[REGSTRUCT]])
; CHECK-DAG: sth [[REG3_1]], h4v@toc@l+6([[REGSTRUCT]])
-define void @test_h4() nounwind {
+define dso_local void @test_h4() nounwind {
entry:
%0 = load i16, i16* getelementptr inbounds (%struct.h4, %struct.h4* @h4v, i32 0, i32 0), align 2
%inc0 = add nsw i16 %0, 1
; CHECK-DAG: stw [[REG0_1]], w2v@toc@l([[REGSTRUCT]])
; CHECK-DAG: stw [[REG1_1]], w2v@toc@l+4([[REGSTRUCT]])
-define void @test_w2() nounwind {
+define dso_local void @test_w2() nounwind {
entry:
%0 = load i32, i32* getelementptr inbounds (%struct.w2, %struct.w2* @w2v, i32 0, i32 0), align 4
%inc0 = add nsw i32 %0, 1
; CHECK-DAG: std [[REG0_1]], d2v@toc@l([[REGSTRUCT]])
; CHECK-DAG: std [[REG1_1]], 8([[BASEV]])
-define void @test_d2() nounwind {
+define dso_local void @test_d2() nounwind {
entry:
%0 = load i64, i64* getelementptr inbounds (%struct.d2, %struct.d2* @d2v, i32 0, i32 0), align 8
%inc0 = add nsw i64 %0, 1
; CHECK: ldx [[REG0_0:[0-9]+]], [[REGSTRUCT]], [[OFFSET_REG]]
; CHECK: addi [[REG0_1:[0-9]+]], [[REG0_0]], 1
; CHECK: stdx [[REG0_1]], [[REGSTRUCT]], [[OFFSET_REG]]
-define void @test_misalign() nounwind {
+define dso_local void @test_misalign() nounwind {
entry:
%0 = load i64, i64* getelementptr inbounds (%struct.misalign, %struct.misalign* @misalign_v, i32 0, i32 1), align 1
%inc0 = add nsw i64 %0, 1
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-pc-linux -relocation-model=pic | FileCheck %s
-define void @f() {
+define dso_local void @f() {
ret void
}
-define void @g() {
+define dso_local void @g() {
; CHECK: g:
; CHECK: bl f{{$}}
call void @f()
target triple = "powerpc64-unknown-linux-gnu"
-define void @foo() nounwind noinline {
+define dso_local void @foo() nounwind noinline {
ret void
}
}
; Calls to local function does not require the TOC restore 'nop'
-define void @test_direct() nounwind readnone {
+define dso_local void @test_direct() nounwind readnone {
; CHECK-LABEL: test_direct:
tail call void @foo() nounwind
; Because of tail call optimization, it can be 'b' instruction.
; Calls to weak function requires a TOC restore 'nop' with all code models
; because the definition that gets choosen at link time may come from a
; different compilation unit that was compiled with PC Relative and has no TOC.
-define void @test_weak() nounwind readnone {
+define dso_local void @test_weak() nounwind readnone {
tail call void @foo_weak() nounwind
; CHECK-LABEL: test_weak:
; CHECK: bl foo_weak
}
; Indirect calls requires a full stub creation
-define void @test_indirect(void ()* nocapture %fp) nounwind {
+define dso_local void @test_indirect(void ()* nocapture %fp) nounwind {
; CHECK-LABEL: test_indirect:
tail call void %fp() nounwind
; CHECK: ld [[FP:[0-9]+]], 0(3)
; Absolute values must use the regular indirect call sequence
; The main purpose of this test is to ensure that BLA is not
; used on 64-bit SVR4 (as e.g. on Darwin).
-define void @test_abs() nounwind {
+define dso_local void @test_abs() nounwind {
; CHECK-LABEL: test_abs:
tail call void inttoptr (i64 1024 to void ()*)() nounwind
; CHECK: ld [[FP:[0-9]+]], 1024(0)
; the unwinding code in libgcc happy.
@g = external global void ()*
declare void @h(i64)
-define void @test_indir_toc_reload(i64 %x) {
+define dso_local void @test_indir_toc_reload(i64 %x) {
%1 = load void ()*, void ()** @g
call void %1()
call void @h(i64 %x)
%struct.cd = type { i64, i64, i64 }
-@something = global [33 x i8] c"this is not really code, but...\0A\00", align 1
-@tls_something = thread_local global %struct.cd zeroinitializer, align 8
+@something = dso_local global [33 x i8] c"this is not really code, but...\0A\00", align 1
+@tls_something = dso_local thread_local global %struct.cd zeroinitializer, align 8
@extern_something = external global %struct.cd
; Function Attrs: nounwind
-define void @foo() #0 {
+define dso_local void @foo() #0 {
entry:
tail call void bitcast ([33 x i8]* @something to void ()*)() #0
ret void
}
; Function Attrs: nounwind
-define void @bar() #0 {
+define dso_local void @bar() #0 {
entry:
tail call void bitcast (%struct.cd* @tls_something to void ()*)() #0
ret void
}
; Function Attrs: nounwind
-define void @ext() #0 {
+define dso_local void @ext() #0 {
entry:
tail call void bitcast (%struct.cd* @extern_something to void ()*)() #0
ret void
%"class.clang::NamedDecl" = type { i32 }
declare void @__assert_fail();
-define i8 @_ZNK5clang9NamedDecl23getLinkageAndVisibilityEv(
+define dso_local i8 @_ZNK5clang9NamedDecl23getLinkageAndVisibilityEv(
%"class.clang::NamedDecl"* %this) {
entry:
%tobool = icmp eq %"class.clang::NamedDecl"* %this, null
; CHECK-SCO-ONLY: bl __assert_fail
}
-define fastcc i8 @LVComputationKind(
+define dso_local fastcc i8 @LVComputationKind(
%"class.clang::NamedDecl"* %D,
i32 %computation) {
ret i8 0
%S_32 = type { [7 x i32], i32 }
; Function Attrs: noinline nounwind
-define void @callee_56_copy([7 x i64] %a, %S_56* %b) #0 { ret void }
-define void @callee_64_copy([8 x i64] %a, %S_64* %b) #0 { ret void }
+define dso_local void @callee_56_copy([7 x i64] %a, %S_56* %b) #0 { ret void }
+define dso_local void @callee_64_copy([8 x i64] %a, %S_64* %b) #0 { ret void }
; Function Attrs: nounwind
-define void @caller_56_reorder_copy(%S_56* %b, [7 x i64] %a) #1 {
+define dso_local void @caller_56_reorder_copy(%S_56* %b, [7 x i64] %a) #1 {
tail call void @callee_56_copy([7 x i64] %a, %S_56* %b)
ret void
; CHECK-SCO: TC_RETURNd8 callee_56_copy
}
-define void @caller_64_reorder_copy(%S_64* %b, [8 x i64] %a) #1 {
+define dso_local void @caller_64_reorder_copy(%S_64* %b, [8 x i64] %a) #1 {
tail call void @callee_64_copy([8 x i64] %a, %S_64* %b)
ret void
; CHECK-SCO: bl callee_64_copy
}
-define void @callee_64_64_copy([8 x i64] %a, [8 x i64] %b) #0 { ret void }
-define void @caller_64_64_copy([8 x i64] %a, [8 x i64] %b) #1 {
+define dso_local void @callee_64_64_copy([8 x i64] %a, [8 x i64] %b) #0 { ret void }
+define dso_local void @caller_64_64_copy([8 x i64] %a, [8 x i64] %b) #1 {
tail call void @callee_64_64_copy([8 x i64] %a, [8 x i64] %b)
ret void
}
define internal fastcc void @callee_64_64_copy_fastcc([8 x i64] %a, [8 x i64] %b) #0 { ret void }
-define void @caller_64_64_copy_ccc([8 x i64] %a, [8 x i64] %b) #1 {
+define dso_local void @caller_64_64_copy_ccc([8 x i64] %a, [8 x i64] %b) #1 {
tail call fastcc void @callee_64_64_copy_fastcc([8 x i64] %a, [8 x i64] %b)
ret void
; If caller and callee use different calling convensions, we cannot apply TCO.
; CHECK-SCO: bl callee_64_64_copy_fastcc
}
-define void @caller_64_64_reorder_copy([8 x i64] %a, [8 x i64] %b) #1 {
+define dso_local void @caller_64_64_reorder_copy([8 x i64] %a, [8 x i64] %b) #1 {
tail call void @callee_64_64_copy([8 x i64] %b, [8 x i64] %a)
ret void
; CHECK-SCO: bl callee_64_64_copy
}
-define void @caller_64_64_undef_copy([8 x i64] %a, [8 x i64] %b) #1 {
+define dso_local void @caller_64_64_undef_copy([8 x i64] %a, [8 x i64] %b) #1 {
tail call void @callee_64_64_copy([8 x i64] %a, [8 x i64] undef)
ret void
; CHECK-SCO: b callee_64_64_copy
}
-define void @arg8_callee(
+define dso_local void @arg8_callee(
float %a, i32 signext %b, float %c, i32* %d,
i8 zeroext %e, float %f, i32* %g, i32 signext %h)
{
ret void
}
-define void @arg8_caller(float %a, i32 signext %b, i8 zeroext %c, i32* %d) {
+define dso_local void @arg8_caller(float %a, i32 signext %b, i8 zeroext %c, i32* %d) {
entry:
tail call void @arg8_callee(float undef, i32 signext undef, float undef,
i32* %d, i8 zeroext undef, float undef,
; Struct return test
; Function Attrs: noinline nounwind
-define void @callee_sret_56(%S_56* noalias sret(%S_56) %agg.result) #0 { ret void }
-define void @callee_sret_32(%S_32* noalias sret(%S_32) %agg.result) #0 { ret void }
+define dso_local void @callee_sret_56(%S_56* noalias sret(%S_56) %agg.result) #0 { ret void }
+define dso_local void @callee_sret_32(%S_32* noalias sret(%S_32) %agg.result) #0 { ret void }
; Function Attrs: nounwind
-define void @caller_do_something_sret_32(%S_32* noalias sret(%S_32) %agg.result) #1 {
+define dso_local void @caller_do_something_sret_32(%S_32* noalias sret(%S_32) %agg.result) #1 {
%1 = alloca %S_56, align 4
%2 = bitcast %S_56* %1 to i8*
call void @callee_sret_56(%S_56* nonnull sret(%S_56) %1)
; CHECK-SCO: TC_RETURNd8 callee_sret_32
}
-define void @caller_local_sret_32(%S_32* %a) #1 {
+define dso_local void @caller_local_sret_32(%S_32* %a) #1 {
%tmp = alloca %S_32, align 4
tail call void @callee_sret_32(%S_32* nonnull sret(%S_32) %tmp)
ret void
attributes #0 = { noinline nounwind }
attributes #1 = { nounwind }
-define void @f128_callee(i32* %ptr, ppc_fp128 %a, ppc_fp128 %b) { ret void }
-define void @f128_caller(i32* %ptr, ppc_fp128 %a, ppc_fp128 %b) {
+define dso_local void @f128_callee(i32* %ptr, ppc_fp128 %a, ppc_fp128 %b) { ret void }
+define dso_local void @f128_caller(i32* %ptr, ppc_fp128 %a, ppc_fp128 %b) {
tail call void @f128_callee(i32* %ptr, ppc_fp128 %a, ppc_fp128 %b)
ret void
%class.T = type { [2 x i8] }
define weak_odr hidden void @wo_hcallee(%class.T* %this, i8* %c) { ret void }
-define void @wo_hcaller(%class.T* %this, i8* %c) {
+define dso_local void @wo_hcaller(%class.T* %this, i8* %c) {
tail call void @wo_hcallee(%class.T* %this, i8* %c)
ret void
}
define weak_odr protected void @wo_pcallee(%class.T* %this, i8* %c) { ret void }
-define void @wo_pcaller(%class.T* %this, i8* %c) {
+define dso_local void @wo_pcaller(%class.T* %this, i8* %c) {
tail call void @wo_pcallee(%class.T* %this, i8* %c)
ret void
}
define weak_odr void @wo_callee(%class.T* %this, i8* %c) { ret void }
-define void @wo_caller(%class.T* %this, i8* %c) {
+define dso_local void @wo_caller(%class.T* %this, i8* %c) {
tail call void @wo_callee(%class.T* %this, i8* %c)
ret void
}
define weak protected void @w_pcallee(i8* %ptr) { ret void }
-define void @w_pcaller(i8* %ptr) {
+define dso_local void @w_pcaller(i8* %ptr) {
tail call void @w_pcallee(i8* %ptr)
ret void
}
define weak hidden void @w_hcallee(i8* %ptr) { ret void }
-define void @w_hcaller(i8* %ptr) {
+define dso_local void @w_hcaller(i8* %ptr) {
tail call void @w_hcallee(i8* %ptr)
ret void
}
define weak void @w_callee(i8* %ptr) { ret void }
-define void @w_caller(i8* %ptr) {
+define dso_local void @w_caller(i8* %ptr) {
tail call void @w_callee(i8* %ptr)
ret void
%struct.byvalTest = type { [8 x i8] }
@byval = common global %struct.byvalTest zeroinitializer
-define void @byval_callee(%struct.byvalTest* byval(%struct.byvalTest) %ptr) { ret void }
-define void @byval_caller() {
+define dso_local void @byval_callee(%struct.byvalTest* byval(%struct.byvalTest) %ptr) { ret void }
+define dso_local void @byval_caller() {
tail call void @byval_callee(%struct.byvalTest* byval(%struct.byvalTest) @byval)
ret void
; RUN: llc -mtriple=powerpc64le-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-LE
; RUN: llc -mtriple=powerpc64-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-BE
-@as = local_unnamed_addr global i16 0, align 2
-@bs = local_unnamed_addr global i16 0, align 2
-@ai = local_unnamed_addr global i32 0, align 4
-@bi = local_unnamed_addr global i32 0, align 4
+@as = dso_local local_unnamed_addr global i16 0, align 2
+@bs = dso_local local_unnamed_addr global i16 0, align 2
+@ai = dso_local local_unnamed_addr global i32 0, align 4
+@bi = dso_local local_unnamed_addr global i32 0, align 4
-define void @bswapStorei64Toi32() {
+define dso_local void @bswapStorei64Toi32() {
; CHECK-LABEL: bswapStorei64Toi32:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis 3, 2, ai@toc@ha
;
; CHECK-BE-LABEL: bswapStorei64Toi32:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis 3, 2, .LC0@toc@ha
-; CHECK-BE-NEXT: addis 4, 2, .LC1@toc@ha
-; CHECK-BE-NEXT: ld 3, .LC0@toc@l(3)
-; CHECK-BE-NEXT: ld 4, .LC1@toc@l(4)
-; CHECK-BE-NEXT: lwa 3, 0(3)
+; CHECK-BE-NEXT: addis 3, 2, ai@toc@ha
+; CHECK-BE-NEXT: addis 4, 2, bi@toc@ha
+; CHECK-BE-NEXT: lwa 3, ai@toc@l(3)
+; CHECK-BE-NEXT: addi 4, 4, bi@toc@l
; CHECK-BE-NEXT: rldicl 3, 3, 32, 32
; CHECK-BE-NEXT: stwbrx 3, 0, 4
; CHECK-BE-NEXT: blr
ret void
}
-define void @bswapStorei32Toi16() {
+define dso_local void @bswapStorei32Toi16() {
; CHECK-LABEL: bswapStorei32Toi16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis 3, 2, as@toc@ha
;
; CHECK-BE-LABEL: bswapStorei32Toi16:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis 3, 2, .LC2@toc@ha
-; CHECK-BE-NEXT: addis 4, 2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld 3, .LC2@toc@l(3)
-; CHECK-BE-NEXT: ld 4, .LC3@toc@l(4)
-; CHECK-BE-NEXT: lha 3, 0(3)
+; CHECK-BE-NEXT: addis 3, 2, as@toc@ha
+; CHECK-BE-NEXT: addis 4, 2, bs@toc@ha
+; CHECK-BE-NEXT: lha 3, as@toc@l(3)
+; CHECK-BE-NEXT: addi 4, 4, bs@toc@l
; CHECK-BE-NEXT: srwi 3, 3, 16
; CHECK-BE-NEXT: sthbrx 3, 0, 4
; CHECK-BE-NEXT: blr
ret void
}
-define void @bswapStorei64Toi16() {
+define dso_local void @bswapStorei64Toi16() {
; CHECK-LABEL: bswapStorei64Toi16:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addis 3, 2, as@toc@ha
;
; CHECK-BE-LABEL: bswapStorei64Toi16:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis 3, 2, .LC2@toc@ha
-; CHECK-BE-NEXT: addis 4, 2, .LC3@toc@ha
-; CHECK-BE-NEXT: ld 3, .LC2@toc@l(3)
-; CHECK-BE-NEXT: ld 4, .LC3@toc@l(4)
-; CHECK-BE-NEXT: lha 3, 0(3)
+; CHECK-BE-NEXT: addis 3, 2, as@toc@ha
+; CHECK-BE-NEXT: addis 4, 2, bs@toc@ha
+; CHECK-BE-NEXT: lha 3, as@toc@l(3)
+; CHECK-BE-NEXT: addi 4, 4, bs@toc@l
; CHECK-BE-NEXT: rldicl 3, 3, 16, 48
; CHECK-BE-NEXT: sthbrx 3, 0, 4
; CHECK-BE-NEXT: blr
+++ /dev/null
-; RUN: llc -mtriple powerpc64le-unknown-gnu-linux -relocation-model=pic \
-; RUN: < %s | FileCheck %s
-; RUN: llc -mtriple powerpc64le-unknown-gnu-linux -relocation-model=static \
-; RUN: < %s | FileCheck --check-prefix=STATIC %s
-; RUN: llc -mtriple powerpc64le-unknown-gnu-linux -relocation-model=pic \
-; RUN: < %s | FileCheck %s
-
-; globals
-
-@strong_default = global i32 55
-define i32* @get_strong_default() #0 {
- ret i32* @strong_default
-
-; STATIC-LABEL: @get_strong_default
-; STATIC: addis 3, 2, strong_default@toc@ha
-; STATIC: addi 3, 3, strong_default@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_strong_default
-; CHECK: addis 3, 2, .LC0@toc@ha
-; CHECK: ld 3, .LC0@toc@l(3)
-; CHECK: blr
-}
-
-@weak_default = weak global i32 55
-define i32* @get_weak_default() #0 {
- ret i32* @weak_default
-
-; STATIC-LABEL: @get_weak_default
-; STATIC: addis 3, 2, weak_default@toc@ha
-; STATIC: addi 3, 3, weak_default@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_weak_default
-; CHECK: addis 3, 2, .LC1@toc@ha
-; CHECK: ld 3, .LC1@toc@l(3)
-; CHECK: blr
-}
-
-@external_default_global = external global i32
-define i32* @get_external_default_global() {
- ret i32* @external_default_global
-
-; STATIC-LABEL: @get_external_default_global
-; STATIC: addis 3, 2, .LC0@toc@ha
-; STATIC: ld 3, .LC0@toc@l(3)
-; STATIC: blr
-
-; CHECK-LABEL: @get_external_default_global
-; CHECK: addis 3, 2, .LC2@toc@ha
-; CHECK: ld 3, .LC2@toc@l(3)
-; CHECK: blr
-}
-
-
-@strong_local_global = dso_local global i32 55
-define i32* @get_strong_local_global() {
- ret i32* @strong_local_global
-
-; STATIC-LABEL: @get_strong_local_global
-; STATIC: addis 3, 2, strong_local_global@toc@ha
-; STATIC: addi 3, 3, strong_local_global@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_strong_local_global
-; CHECK: addis 3, 2, strong_local_global@toc@ha
-; CHECK: addi 3, 3, strong_local_global@toc@l
-; CHECK: blr
-}
-
-@weak_local_global = weak dso_local global i32 42
-define i32* @get_weak_local_global() {
- ret i32* @weak_local_global
-
-; STATIC-LABEL: @get_weak_local_global
-; STATIC: addis 3, 2, weak_local_global@toc@ha
-; STATIC: addi 3, 3, weak_local_global@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_weak_local_global
-; CHECK: addis 3, 2, weak_local_global@toc@ha
-; CHECK: addi 3, 3, weak_local_global@toc@l
-; CHECK: blr
-}
-
-@external_local_global = external dso_local global i32
-define i32* @get_external_local_global() {
- ret i32* @external_local_global
-; STATIC-LABEL: @get_external_local_global
-; STATIC: addis 3, 2, external_local_global@toc@ha
-; STATIC: addi 3, 3, external_local_global@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_external_local_global
-; CHECK: addis 3, 2, external_local_global@toc@ha
-; CHECK: addi 3, 3, external_local_global@toc@l
-; CHECK: blr
-}
-
-@strong_preemptable_global = dso_preemptable global i32 42
-define i32* @get_strong_preemptable_global() {
- ret i32* @strong_preemptable_global
-
-; STATIC-LABEL: @get_strong_preemptable_global
-; STATIC: addis 3, 2, strong_preemptable_global@toc@ha
-; STATIC: addi 3, 3, strong_preemptable_global@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_strong_preemptable_global
-; CHECK: addis 3, 2, .LC3@toc@ha
-; CHECK: ld 3, .LC3@toc@l(3)
-; CHECK: blr
-}
-
-@weak_preemptable_global = weak dso_preemptable global i32 42
-define i32* @get_weak_preemptable_global() {
- ret i32* @weak_preemptable_global
-
-; STATIC-LABEL: @get_weak_preemptable_global
-; STATIC: addis 3, 2, weak_preemptable_global@toc@ha
-; STATIC: addi 3, 3, weak_preemptable_global@toc@l
-; STATIC: blr
-
-; CHECK-LABEL: @get_weak_preemptable_global
-; CHECK: addis 3, 2, .LC4@toc@ha
-; CHECK: ld 3, .LC4@toc@l(3)
-; CHECK: blr
-}
-
-@external_preemptable_global = external dso_preemptable global i32
-define i32* @get_external_preemptable_global() {
- ret i32* @external_preemptable_global
-
-; STATIC-LABEL: @get_external_preemptable_global
-; STATIC: addis 3, 2, .LC1@toc@ha
-; STATIC: ld 3, .LC1@toc@l(3)
-; STATIC: blr
-
-; CHECK-LABEL: @get_external_preemptable_global
-; CHECK: addis 3, 2, .LC5@toc@ha
-; CHECK: ld 3, .LC5@toc@l(3)
-; CHECK: blr
-}
-
-; functions
-define signext i32 @strong_default_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @strong_default_function_caller(i32 %i) {
- %call = notail call signext i32 @strong_default_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @strong_default_function_caller
-; STATIC: bl strong_default_function
-; STATIC-NOT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @strong_default_function_caller
-; CHECK: bl strong_default_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-define weak signext i32 @weak_default_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @weak_default_function_caller(i32 %i) {
- %call = notail call signext i32 @weak_default_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @weak_default_function_caller
-; STATIC: bl weak_default_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @weak_default_function_caller
-; CHECK: bl weak_default_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-
-declare i32 @external_default_function(i32 %i)
-define i32 @external_default_function_caller(i32 %i) {
- %call = notail call signext i32 @external_default_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @external_default_function_caller
-; STATIC: bl external_default_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @external_default_function_caller
-; CHECK: bl external_default_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-define dso_local signext i32 @strong_local_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @strong_local_function_caller(i32 %i) {
- %call = notail call signext i32 @strong_local_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @strong_local_function_caller
-; STATIC: bl strong_local_function
-; STATIC-NOT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @strong_local_function_caller
-; CHECK: bl strong_local_function
-; CHECK-NOT: nop
-; CHECK: blr
-}
-
-define weak dso_local signext i32 @weak_local_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @weak_local_function_caller(i32 %i) {
- %call = notail call signext i32 @weak_local_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @weak_local_function_caller
-; STATIC: bl weak_local_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @weak_local_function_caller
-; CHECK: bl weak_local_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-declare dso_local i32 @external_local_function(i32 %i)
-define i32 @external_local_function_caller(i32 %i) {
- %call = notail call signext i32 @external_local_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @external_local_function_caller
-; STATIC: bl external_local_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @external_local_function_caller
-; CHECK: bl external_local_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-define dso_preemptable signext i32 @strong_preemptable_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @strong_preemptable_function_caller(i32 %i) {
- %call = notail call signext i32 @strong_preemptable_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @strong_preemptable_function_caller
-; STATIC: bl strong_preemptable_function
-; STATIC-NOT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @strong_preemptable_function_caller
-; CHECK: bl strong_preemptable_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-define weak dso_preemptable signext i32 @weak_preemptable_function(i32 %i) {
- ret i32 %i
-}
-define signext i32 @weak_preemptable_function_caller(i32 %i) {
- %call = notail call signext i32 @weak_preemptable_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @weak_preemptable_function_caller
-; STATIC: bl weak_preemptable_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @weak_preemptable_function_caller
-; CHECK: bl weak_preemptable_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
-declare dso_preemptable i32 @external_preemptable_function(i32 %i)
-define i32 @external_preemptable_function_caller(i32 %i) {
- %call = notail call signext i32 @external_preemptable_function(i32 signext %i)
- ret i32 %call
-
-; STATIC-LABEL: @external_preemptable_function_caller
-; STATIC: bl external_preemptable_function
-; STATIC-NEXT: nop
-; STATIC: blr
-
-; CHECK-LABEL: @external_preemptable_function_caller
-; CHECK: bl external_preemptable_function
-; CHECK-NEXT: nop
-; CHECK: blr
-}
-
%_elem_type_of_x = type <{ double }>
%_elem_type_of_a = type <{ double }>
-@scalars = common local_unnamed_addr global %_type_of_scalars zeroinitializer, align 16
+@scalars = common dso_local local_unnamed_addr global %_type_of_scalars zeroinitializer, align 16
-define void @test([0 x %_elem_type_of_x]* noalias %.x, [0 x %_elem_type_of_a]* %.a, i64* noalias %.n) {
+define dso_local void @test([0 x %_elem_type_of_x]* noalias %.x, [0 x %_elem_type_of_a]* %.a, i64* noalias %.n) {
; CHECK-P9-LABEL: test:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: ld 5, 0(5)
}
-define double @callee(double) #1 {
+define dso_local double @callee(double) #1 {
ret double 4.5
}
declare void @TestBaz(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg)
-define void @TestBar(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg) {
+define dso_local void @TestBar(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg) {
bb:
call void @TestBaz(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg)
ret void
}
-define void @TestFoo(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg) {
+define dso_local void @TestFoo(%class.basic_string.11.42.73* noalias sret(%class.basic_string.11.42.73) %arg) {
; CHECK-LABEL: TestFoo:
; CHECK: #TC_RETURNd8 TestBar 0
bb:
; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=ppc64-- -tailcallopt | grep TC_RETURNd8
; RUN: llc -relocation-model=static -verify-machineinstrs -mtriple=ppc64-- < %s | FileCheck %s
-define fastcc i32 @tailcallee(i32 %a1, i32 %a2, i32 %a3, i32 %a4) {
+define dso_local fastcc i32 @tailcallee(i32 %a1, i32 %a2, i32 %a3, i32 %a4) {
entry:
ret i32 %a3
}
-define fastcc i32 @tailcaller(i32 %in1, i32 %in2) {
+define dso_local fastcc i32 @tailcaller(i32 %in1, i32 %in2) {
entry:
%tmp11 = tail call fastcc i32 @tailcallee( i32 %in1, i32 %in2, i32 %in1, i32 %in2 )
ret i32 %tmp11
declare signext i32 @fn2(...) local_unnamed_addr #1
; Function Attrs: nounwind
-define i32 @testCompare1(%struct.tree_common* nocapture readonly %arg1) nounwind {
+define dso_local i32 @testCompare1(%struct.tree_common* nocapture readonly %arg1) nounwind {
; BE-LABEL: testCompare1:
; BE: # %bb.0: # %entry
; BE-NEXT: mflr r0
; BE-NEXT: std r0, 16(r1)
; BE-NEXT: stdu r1, -112(r1)
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
+; BE-NEXT: addis r4, r2, testCompare1@toc@ha
; BE-NEXT: lbz r3, 0(r3)
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
+; BE-NEXT: lbz r4, testCompare1@toc@l(r4)
; BE-NEXT: clrlwi r3, r3, 31
-; BE-NEXT: clrldi r3, r3, 32
-; BE-NEXT: lbz r4, 0(r4)
; BE-NEXT: clrlwi r4, r4, 31
+; BE-NEXT: clrldi r3, r3, 32
; BE-NEXT: clrldi r4, r4, 32
; BE-NEXT: sub r3, r3, r4
; BE-NEXT: rldicl r3, r3, 1, 63
; LE-NEXT: mflr r0
; LE-NEXT: std r0, 16(r1)
; LE-NEXT: stdu r1, -32(r1)
-; LE-NEXT: addis r4, r2, .LC0@toc@ha
+; LE-NEXT: addis r4, r2, testCompare1@toc@ha
; LE-NEXT: lbz r3, 0(r3)
-; LE-NEXT: ld r4, .LC0@toc@l(r4)
+; LE-NEXT: lbz r4, testCompare1@toc@l(r4)
; LE-NEXT: clrlwi r3, r3, 31
-; LE-NEXT: clrldi r3, r3, 32
-; LE-NEXT: lbz r4, 0(r4)
; LE-NEXT: clrlwi r4, r4, 31
+; LE-NEXT: clrldi r3, r3, 32
; LE-NEXT: clrldi r4, r4, 32
; LE-NEXT: sub r3, r3, r4
; LE-NEXT: rldicl r3, r3, 1, 63
; CHECK-P10-BE-NEXT: mflr r0
; CHECK-P10-BE-NEXT: std r0, 16(r1)
; CHECK-P10-BE-NEXT: stdu r1, -112(r1)
-; CHECK-P10-BE-NEXT: addis r4, r2, .LC0@toc@ha
+; CHECK-P10-BE-NEXT: addis r4, r2, testCompare1@toc@ha
; CHECK-P10-BE-NEXT: lbz r3, 0(r3)
-; CHECK-P10-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-P10-BE-NEXT: lbz r4, testCompare1@toc@l(r4)
; CHECK-P10-BE-NEXT: clrlwi r3, r3, 31
-; CHECK-P10-BE-NEXT: lbz r4, 0(r4)
; CHECK-P10-BE-NEXT: clrlwi r4, r4, 31
; CHECK-P10-BE-NEXT: cmplw r4, r3
; CHECK-P10-BE-NEXT: setbc r3, gt
; CHECK-P10-CMP-LE-NEXT: mflr r0
; CHECK-P10-CMP-LE-NEXT: std r0, 16(r1)
; CHECK-P10-CMP-LE-NEXT: stdu r1, -112(r1)
-; CHECK-P10-CMP-LE-NEXT: addis r4, r2, .LC0@toc@ha
+; CHECK-P10-CMP-LE-NEXT: addis r4, r2, testCompare1@toc@ha
; CHECK-P10-CMP-LE-NEXT: lbz r3, 0(r3)
-; CHECK-P10-CMP-LE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-P10-CMP-LE-NEXT: lbz r4, testCompare1@toc@l(r4)
; CHECK-P10-CMP-LE-NEXT: clrlwi r3, r3, 31
-; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32
-; CHECK-P10-CMP-LE-NEXT: lbz r4, 0(r4)
; CHECK-P10-CMP-LE-NEXT: clrlwi r4, r4, 31
+; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32
; CHECK-P10-CMP-LE-NEXT: clrldi r4, r4, 32
; CHECK-P10-CMP-LE-NEXT: sub r3, r3, r4
; CHECK-P10-CMP-LE-NEXT: rldicl r3, r3, 1, 63
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: testCompare2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 31
declare signext i32 @fn2(...) local_unnamed_addr #1
; Function Attrs: nounwind
-define i32 @testCompare1(%struct.tree_common* nocapture readonly %arg1) nounwind {
+define dso_local i32 @testCompare1(%struct.tree_common* nocapture readonly %arg1) nounwind {
; BE-LABEL: testCompare1:
; BE: # %bb.0: # %entry
; BE-NEXT: mflr r0
; BE-NEXT: std r0, 16(r1)
; BE-NEXT: stdu r1, -112(r1)
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
+; BE-NEXT: addis r4, r2, testCompare1@toc@ha
; BE-NEXT: lbz r3, 0(r3)
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
+; BE-NEXT: lbz r4, testCompare1@toc@l(r4)
; BE-NEXT: clrlwi r3, r3, 31
-; BE-NEXT: clrldi r3, r3, 32
-; BE-NEXT: lbz r4, 0(r4)
; BE-NEXT: clrlwi r4, r4, 31
+; BE-NEXT: clrldi r3, r3, 32
; BE-NEXT: clrldi r4, r4, 32
; BE-NEXT: sub r3, r4, r3
; BE-NEXT: rldicl r3, r3, 1, 63
; LE-NEXT: mflr r0
; LE-NEXT: std r0, 16(r1)
; LE-NEXT: stdu r1, -32(r1)
-; LE-NEXT: addis r4, r2, .LC0@toc@ha
+; LE-NEXT: addis r4, r2, testCompare1@toc@ha
; LE-NEXT: lbz r3, 0(r3)
-; LE-NEXT: ld r4, .LC0@toc@l(r4)
+; LE-NEXT: lbz r4, testCompare1@toc@l(r4)
; LE-NEXT: clrlwi r3, r3, 31
-; LE-NEXT: clrldi r3, r3, 32
-; LE-NEXT: lbz r4, 0(r4)
; LE-NEXT: clrlwi r4, r4, 31
+; LE-NEXT: clrldi r3, r3, 32
; LE-NEXT: clrldi r4, r4, 32
; LE-NEXT: sub r3, r4, r3
; LE-NEXT: rldicl r3, r3, 1, 63
; CHECK-P10-BE-NEXT: mflr r0
; CHECK-P10-BE-NEXT: std r0, 16(r1)
; CHECK-P10-BE-NEXT: stdu r1, -112(r1)
-; CHECK-P10-BE-NEXT: addis r4, r2, .LC0@toc@ha
+; CHECK-P10-BE-NEXT: addis r4, r2, testCompare1@toc@ha
; CHECK-P10-BE-NEXT: lbz r3, 0(r3)
-; CHECK-P10-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-P10-BE-NEXT: lbz r4, testCompare1@toc@l(r4)
; CHECK-P10-BE-NEXT: clrlwi r3, r3, 31
-; CHECK-P10-BE-NEXT: lbz r4, 0(r4)
; CHECK-P10-BE-NEXT: clrlwi r4, r4, 31
; CHECK-P10-BE-NEXT: cmplw r4, r3
; CHECK-P10-BE-NEXT: setbc r3, lt
; CHECK-P10-CMP-LE-NEXT: mflr r0
; CHECK-P10-CMP-LE-NEXT: std r0, 16(r1)
; CHECK-P10-CMP-LE-NEXT: stdu r1, -112(r1)
-; CHECK-P10-CMP-LE-NEXT: addis r4, r2, .LC0@toc@ha
+; CHECK-P10-CMP-LE-NEXT: addis r4, r2, testCompare1@toc@ha
; CHECK-P10-CMP-LE-NEXT: lbz r3, 0(r3)
-; CHECK-P10-CMP-LE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-P10-CMP-LE-NEXT: lbz r4, testCompare1@toc@l(r4)
; CHECK-P10-CMP-LE-NEXT: clrlwi r3, r3, 31
-; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32
-; CHECK-P10-CMP-LE-NEXT: lbz r4, 0(r4)
; CHECK-P10-CMP-LE-NEXT: clrlwi r4, r4, 31
+; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32
; CHECK-P10-CMP-LE-NEXT: clrldi r4, r4, 32
; CHECK-P10-CMP-LE-NEXT: sub r3, r4, r3
; CHECK-P10-CMP-LE-NEXT: rldicl r3, r3, 1, 63
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: testCompare2:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: clrlwi r3, r3, 31
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesieqsc.c'
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsc(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_ieqsc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ieqsc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsc_sext(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_ieqsc_sext(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ieqsc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsc_z(i8 signext %a) {
+define dso_local signext i32 @test_ieqsc_z(i8 signext %a) {
; CHECK-LABEL: test_ieqsc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsc_sext_z(i8 signext %a) {
+define dso_local signext i32 @test_ieqsc_sext_z(i8 signext %a) {
; CHECK-LABEL: test_ieqsc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_ieqsc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ieqsc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsc_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_ieqsc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ieqsc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsc_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsc_z_store(i8 signext %a) {
+define dso_local void @test_ieqsc_z_store(i8 signext %a) {
; CHECK-LABEL: test_ieqsc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsc_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsc_sext_z_store(i8 signext %a) {
+define dso_local void @test_ieqsc_sext_z_store(i8 signext %a) {
; CHECK-LABEL: test_ieqsc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsc_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesieqsi.c'
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsi(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_ieqsi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ieqsi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsi_sext(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_ieqsi_sext(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ieqsi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsi_z(i32 signext %a) {
+define dso_local signext i32 @test_ieqsi_z(i32 signext %a) {
; CHECK-LABEL: test_ieqsi_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsi_sext_z(i32 signext %a) {
+define dso_local signext i32 @test_ieqsi_sext_z(i32 signext %a) {
; CHECK-LABEL: test_ieqsi_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_ieqsi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ieqsi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsi_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_ieqsi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ieqsi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsi_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsi_z_store(i32 signext %a) {
+define dso_local void @test_ieqsi_z_store(i32 signext %a) {
; CHECK-LABEL: test_ieqsi_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsi_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsi_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsi_sext_z_store(i32 signext %a) {
+define dso_local void @test_ieqsi_sext_z_store(i32 signext %a) {
; CHECK-LABEL: test_ieqsi_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsi_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsi_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesieqsll.c'
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ieqsll(i64 %a, i64 %b) {
; CHECK-LABEL: test_ieqsll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ieqsll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_ieqsll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsll_z(i64 %a) {
+define dso_local signext i32 @test_ieqsll_z(i64 %a) {
; CHECK-LABEL: test_ieqsll_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqsll_sext_z(i64 %a) {
+define dso_local signext i32 @test_ieqsll_sext_z(i64 %a) {
; CHECK-LABEL: test_ieqsll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsll_store(i64 %a, i64 %b) {
+define dso_local void @test_ieqsll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ieqsll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsll_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_ieqsll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ieqsll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsll_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsll_z_store(i64 %a) {
+define dso_local void @test_ieqsll_z_store(i64 %a) {
; CHECK-LABEL: test_ieqsll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsll_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqsll_sext_z_store(i64 %a) {
+define dso_local void @test_ieqsll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_ieqsll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqsll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqsll_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesieqss.c'
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqss(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_ieqss(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_ieqss:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqss_sext(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_ieqss_sext(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_ieqss_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqss_z(i16 signext %a) {
+define dso_local signext i32 @test_ieqss_z(i16 signext %a) {
; CHECK-LABEL: test_ieqss_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ieqss_sext_z(i16 signext %a) {
+define dso_local signext i32 @test_ieqss_sext_z(i16 signext %a) {
; CHECK-LABEL: test_ieqss_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ieqss_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_ieqss_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_ieqss_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqss_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqss_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqss_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_ieqss_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_ieqss_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqss_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqss_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqss_z_store(i16 signext %a) {
+define dso_local void @test_ieqss_z_store(i16 signext %a) {
; CHECK-LABEL: test_ieqss_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqss_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqss_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_ieqss_sext_z_store(i16 signext %a) {
+define dso_local void @test_ieqss_sext_z_store(i16 signext %a) {
; CHECK-LABEL: test_ieqss_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ieqss_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ieqss_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesiequc.c'
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequc(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_iequc(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iequc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequc_sext(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_iequc_sext(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iequc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequc_z(i8 zeroext %a) {
+define dso_local signext i32 @test_iequc_z(i8 zeroext %a) {
; CHECK-LABEL: test_iequc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequc_sext_z(i8 zeroext %a) {
+define dso_local signext i32 @test_iequc_sext_z(i8 zeroext %a) {
; CHECK-LABEL: test_iequc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_iequc_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_iequc_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iequc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequc_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_iequc_sext_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iequc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequc_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequc_z_store(i8 zeroext %a) {
+define dso_local void @test_iequc_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_iequc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequc_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequc_sext_z_store(i8 zeroext %a) {
+define dso_local void @test_iequc_sext_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_iequc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequc_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesiequi.c'
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequi(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_iequi(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iequi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequi_sext(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_iequi_sext(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iequi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequi_z(i32 zeroext %a) {
+define dso_local signext i32 @test_iequi_z(i32 zeroext %a) {
; CHECK-LABEL: test_iequi_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequi_sext_z(i32 zeroext %a) {
+define dso_local signext i32 @test_iequi_sext_z(i32 zeroext %a) {
; CHECK-LABEL: test_iequi_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_iequi_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_iequi_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iequi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequi_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequi_sext_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_iequi_sext_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iequi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequi_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequi_z_store(i32 zeroext %a) {
+define dso_local void @test_iequi_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_iequi_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequi_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequi_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequi_sext_z_store(i32 zeroext %a) {
+define dso_local void @test_iequi_sext_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_iequi_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequi_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequi_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesiequll.c'
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_iequll(i64 %a, i64 %b) {
; CHECK-LABEL: test_iequll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_iequll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_iequll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequll_z(i64 %a) {
+define dso_local signext i32 @test_iequll_z(i64 %a) {
; CHECK-LABEL: test_iequll_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequll_sext_z(i64 %a) {
+define dso_local signext i32 @test_iequll_sext_z(i64 %a) {
; CHECK-LABEL: test_iequll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_iequll_store(i64 %a, i64 %b) {
+define dso_local void @test_iequll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_iequll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequll_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_iequll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_iequll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequll_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequll_z_store(i64 %a) {
+define dso_local void @test_iequll_z_store(i64 %a) {
; CHECK-LABEL: test_iequll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequll_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequll_sext_z_store(i64 %a) {
+define dso_local void @test_iequll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_iequll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequll_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testComparesiequs.c'
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequs(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_iequs(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iequs:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequs_sext(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_iequs_sext(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iequs_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequs_z(i16 zeroext %a) {
+define dso_local signext i32 @test_iequs_z(i16 zeroext %a) {
; CHECK-LABEL: test_iequs_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iequs_sext_z(i16 zeroext %a) {
+define dso_local signext i32 @test_iequs_sext_z(i16 zeroext %a) {
; CHECK-LABEL: test_iequs_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_iequs_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_iequs_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iequs_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequs_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequs_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequs_sext_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_iequs_sext_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iequs_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequs_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequs_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequs_z_store(i16 zeroext %a) {
+define dso_local void @test_iequs_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_iequs_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequs_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequs_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_iequs_sext_z_store(i16 zeroext %a) {
+define dso_local void @test_iequs_sext_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_iequs_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iequs_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iequs_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
-define signext i32 @test_igesc(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_igesc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_igesc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_igesc_sext(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_igesc_sext(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_igesc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %sub
}
-define void @test_igesc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_igesc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_igesc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesc_store:
ret void
}
-define void @test_igesc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_igesc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_igesc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesc_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
-define signext i32 @test_igesi(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_igesi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_igesi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %conv
}
-define signext i32 @test_igesi_sext(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_igesi_sext(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_igesi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %sub
}
-define void @test_igesi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_igesi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_igesi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesi_store:
ret void
}
-define void @test_igesi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_igesi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_igesi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesi_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
-define signext i32 @test_igesll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_igesll(i64 %a, i64 %b) {
; CHECK-LABEL: test_igesll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r3, 63
ret i32 %conv
}
-define signext i32 @test_igesll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_igesll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_igesll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r3, 63
ret i32 %sub
}
-define signext i32 @test_igesll_z(i64 %a) {
+define dso_local signext i32 @test_igesll_z(i64 %a) {
; CHECK-LABEL: test_igesll_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: not r3, r3
ret i32 %conv
}
-define signext i32 @test_igesll_sext_z(i64 %a) {
+define dso_local signext i32 @test_igesll_sext_z(i64 %a) {
; CHECK-LABEL: test_igesll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r3, r3, 63
ret i32 %sub
}
-define void @test_igesll_store(i64 %a, i64 %b) {
+define dso_local void @test_igesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_igesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r3, 63
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sradi r6, r3, 63
-; CHECK-BE-NEXT: ld r5, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r3, r3, r4
; CHECK-BE-NEXT: rldicl r3, r4, 1, 63
; CHECK-BE-NEXT: adde r3, r6, r3
-; CHECK-BE-NEXT: std r3, 0(r5)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesll_store:
ret void
}
-define void @test_igesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_igesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_igesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r3, 63
; CHECK-BE-LABEL: test_igesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: sradi r6, r3, 63
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r3, r3, r4
; CHECK-BE-NEXT: rldicl r3, r4, 1, 63
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: adde r3, r6, r3
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesll_sext_store:
ret void
}
-define void @test_igesll_z_store(i64 %a) {
+define dso_local void @test_igesll_z_store(i64 %a) {
; CHECK-LABEL: test_igesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: not r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: not r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesll_z_store:
ret void
}
-define void @test_igesll_sext_z_store(i64 %a) {
+define dso_local void @test_igesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_igesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: not r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: not r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: sradi r3, r3, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igesll_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @test_igess(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_igess(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_igess:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_igess_sext(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_igess_sext(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_igess_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
ret i32 %sub
}
-define void @test_igess_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_igess_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_igess_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igess_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igess_store:
ret void
}
-define void @test_igess_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_igess_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_igess_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_igess_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_igess_sext_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeuc(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_igeuc(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_igeuc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeuc_sext(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_igeuc_sext(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_igeuc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeuc_z(i8 zeroext %a) {
+define dso_local signext i32 @test_igeuc_z(i8 zeroext %a) {
; CHECK-LABEL: test_igeuc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, 1
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeuc_sext_z(i8 zeroext %a) {
+define dso_local signext i32 @test_igeuc_sext_z(i8 zeroext %a) {
; CHECK-LABEL: test_igeuc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_igeuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_igeuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_igeuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_igeuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_igeuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_igeuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
%conv3 = sext i1 %cmp to i8
}
; Function Attrs : norecurse nounwind
-define void @test_igeuc_z_store(i8 zeroext %a) {
-; BE-LABEL: test_igeuc_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stb r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeuc_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: stb r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeuc_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_igeuc_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: stb r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, 0
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_igeuc_sext_z_store(i8 zeroext %a) {
-; BE-LABEL: test_igeuc_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stb r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeuc_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: stb r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeuc_sext_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_igeuc_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: stb r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, 0
%conv3 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeui(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_igeui(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_igeui:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeui_sext(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_igeui_sext(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_igeui_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeui_z(i32 zeroext %a) {
+define dso_local signext i32 @test_igeui_z(i32 zeroext %a) {
; CHECK-LABEL: test_igeui_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, 1
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeui_sext_z(i32 zeroext %a) {
+define dso_local signext i32 @test_igeui_sext_z(i32 zeroext %a) {
; CHECK-LABEL: test_igeui_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_igeui_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_igeui_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeui_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeui_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_igeui_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_igeui_sext_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_igeui_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeui_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_igeui_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
%sub = sext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_igeui_z_store(i32 zeroext %a) {
-; BE-LABEL: test_igeui_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stw r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeui_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: stw r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeui_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_igeui_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: stw r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, 0
%conv1 = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_igeui_sext_z_store(i32 zeroext %a) {
-; BE-LABEL: test_igeui_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stw r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeui_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: stw r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeui_sext_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_igeui_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: stw r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, 0
%conv1 = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeull(i64 %a, i64 %b) {
+define dso_local signext i32 @test_igeull(i64 %a, i64 %b) {
; CHECK-LABEL: test_igeull:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subc r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeull_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_igeull_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_igeull_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subc r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeull_z(i64 %a) {
+define dso_local signext i32 @test_igeull_z(i64 %a) {
; CHECK-LABEL: test_igeull_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, 1
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeull_sext_z(i64 %a) {
+define dso_local signext i32 @test_igeull_sext_z(i64 %a) {
; CHECK-LABEL: test_igeull_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_igeull_store(i64 %a, i64 %b) {
-; BE-LABEL: test_igeull_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: ld r3, .LC0@toc@l(r5)
-; BE-NEXT: subfe r4, r4, r4
-; BE-NEXT: addi r4, r4, 1
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeull_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r4, r4
-; LE-NEXT: addi r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeull_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_igeull_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r4, r4
+; CHECK-NEXT: addi r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_igeull_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_igeull_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: ld r3, .LC0@toc@l(r5)
-; BE-NEXT: subfe r4, r4, r4
-; BE-NEXT: not r4, r4
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeull_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r4, r4
-; LE-NEXT: not r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeull_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_igeull_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r4, r4
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
%conv1 = sext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_igeull_z_store(i64 %a) {
-; BE-LABEL: test_igeull_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeull_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: std r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeull_z_store(i64 %a) {
+; CHECK-LABEL: test_igeull_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: std r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, 0
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_igeull_sext_z_store(i64 %a) {
-; BE-LABEL: test_igeull_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeull_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: std r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeull_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_igeull_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: std r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, 0
%conv1 = sext i1 %cmp to i64
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeus(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_igeus(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_igeus:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeus_sext(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_igeus_sext(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_igeus_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeus_z(i16 zeroext %a) {
+define dso_local signext i32 @test_igeus_z(i16 zeroext %a) {
; CHECK-LABEL: test_igeus_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, 1
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_igeus_sext_z(i16 zeroext %a) {
+define dso_local signext i32 @test_igeus_sext_z(i16 zeroext %a) {
; CHECK-LABEL: test_igeus_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r3, 1
}
; Function Attrs: norecurse nounwind
-define void @test_igeus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_igeus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_igeus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_igeus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_igeus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_igeus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_igeus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
%conv3 = sext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_igeus_z_store(i16 zeroext %a) {
-; BE-LABEL: test_igeus_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: sth r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeus_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: sth r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeus_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_igeus_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: sth r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, 0
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_igeus_sext_z_store(i16 zeroext %a) {
-; BE-LABEL: test_igeus_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: sth r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_igeus_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: sth r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_igeus_sext_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_igeus_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: sth r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, 0
%conv3 = sext i1 %cmp to i16
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
-define signext i32 @test_ilesc(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_ilesc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ilesc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %conv2
}
-define signext i32 @test_ilesc_sext(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_ilesc_sext(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ilesc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %sub
}
-define void @test_ilesc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_ilesc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ilesc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesc_store:
ret void
}
-define void @test_ilesc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_ilesc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_ilesc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesc_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
-define signext i32 @test_ilesi(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_ilesi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ilesi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %conv
}
-define signext i32 @test_ilesi_sext(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_ilesi_sext(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ilesi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %sub
}
-define void @test_ilesi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_ilesi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ilesi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesi_store:
ret void
}
-define void @test_ilesi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_ilesi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_ilesi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesi_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
-define signext i32 @test_ilesll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ilesll(i64 %a, i64 %b) {
; CHECK-LABEL: test_ilesll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r4, 63
ret i32 %conv
}
-define signext i32 @test_ilesll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ilesll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_ilesll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r4, 63
ret i32 %sub
}
-define signext i32 @test_ilesll_z(i64 %a) {
+define dso_local signext i32 @test_ilesll_z(i64 %a) {
; CHECK-LABEL: test_ilesll_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r4, r3, -1
ret i32 %conv
}
-define signext i32 @test_ilesll_sext_z(i64 %a) {
+define dso_local signext i32 @test_ilesll_sext_z(i64 %a) {
; CHECK-LABEL: test_ilesll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r4, r3, -1
ret i32 %sub
}
-define void @test_ilesll_store(i64 %a, i64 %b) {
+define dso_local void @test_ilesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ilesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r4, 63
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sradi r6, r4, 63
-; CHECK-BE-NEXT: ld r5, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r4, r4, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: adde r3, r6, r3
-; CHECK-BE-NEXT: std r3, 0(r5)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesll_store:
ret void
}
-define void @test_ilesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_ilesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ilesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r4, 63
; CHECK-BE-LABEL: test_ilesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: sradi r6, r4, 63
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r4, r4, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: adde r3, r6, r3
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesll_sext_store:
ret void
}
-define void @test_ilesll_z_store(i64 %a) {
+define dso_local void @test_ilesll_z_store(i64 %a) {
; CHECK-LABEL: test_ilesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addi r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: or r3, r5, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesll_z_store:
ret void
}
-define void @test_ilesll_sext_z_store(i64 %a) {
+define dso_local void @test_ilesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_ilesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ilesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addi r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: or r3, r5, r3
; CHECK-BE-NEXT: sradi r3, r3, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ilesll_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @test_iless(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iless(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iless:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %conv2
}
-define signext i32 @test_iless_sext(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iless_sext(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iless_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
ret i32 %sub
}
-define void @test_iless_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_iless_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iless_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iless_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iless_store:
ret void
}
-define void @test_iless_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_iless_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iless_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iless_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iless_sext_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileuc(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_ileuc(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ileuc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileuc_sext(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_ileuc_sext(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ileuc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileuc_z(i8 zeroext %a) {
+define dso_local signext i32 @test_ileuc_z(i8 zeroext %a) {
; CHECK-LABEL: test_ileuc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileuc_sext_z(i8 zeroext %a) {
+define dso_local signext i32 @test_ileuc_sext_z(i8 zeroext %a) {
; CHECK-LABEL: test_ileuc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ileuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_ileuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_ileuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_ileuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_ileuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_ileuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
%conv3 = sext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_ileuc_z_store(i8 zeroext %a) {
-; BE-LABEL: test_ileuc_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileuc_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: stb r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileuc_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_ileuc_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: stb r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp eq i8 %a, 0
%conv2 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_ileuc_sext_z_store(i8 zeroext %a) {
-; BE-LABEL: test_ileuc_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileuc_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: stb r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileuc_sext_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_ileuc_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: stb r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp eq i8 %a, 0
%conv2 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileui(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_ileui(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ileui:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileui_sext(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_ileui_sext(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ileui_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileui_z(i32 zeroext %a) {
+define dso_local signext i32 @test_ileui_z(i32 zeroext %a) {
; CHECK-LABEL: test_ileui_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileui_sext_z(i32 zeroext %a) {
+define dso_local signext i32 @test_ileui_sext_z(i32 zeroext %a) {
; CHECK-LABEL: test_ileui_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ileui_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_ileui_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileui_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileui_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_ileui_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
%sub = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_ileui_sext_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_ileui_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileui_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_ileui_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
%sub = sext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_ileui_z_store(i32 zeroext %a) {
-; BE-LABEL: test_ileui_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileui_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: stw r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileui_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_ileui_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: stw r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp eq i32 %a, 0
%sub = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_ileui_sext_z_store(i32 zeroext %a) {
-; BE-LABEL: test_ileui_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileui_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: stw r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileui_sext_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_ileui_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: stw r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp eq i32 %a, 0
%sub = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileull(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ileull(i64 %a, i64 %b) {
; CHECK-LABEL: test_ileull:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subc r4, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileull_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ileull_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_ileull_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subc r4, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileull_z(i64 %a) {
+define dso_local signext i32 @test_ileull_z(i64 %a) {
; CHECK-LABEL: test_ileull_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileull_sext_z(i64 %a) {
+define dso_local signext i32 @test_ileull_sext_z(i64 %a) {
; CHECK-LABEL: test_ileull_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
}
; Function Attrs: norecurse nounwind
-define void @test_ileull_store(i64 %a, i64 %b) {
-; BE-LABEL: test_ileull_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r4, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: addi r3, r3, 1
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileull_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r4, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: addi r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileull_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_ileull_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r4, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: addi r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_ileull_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_ileull_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r4, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: not r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileull_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r4, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: not r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileull_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_ileull_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r4, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
%conv1 = sext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_ileull_z_store(i64 %a) {
-; BE-LABEL: test_ileull_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzd r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: rldicl r3, r3, 58, 63
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileull_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzd r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 58, 63
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileull_z_store(i64 %a) {
+; CHECK-LABEL: test_ileull_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzd r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 58, 63
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, 0
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_ileull_sext_z_store(i64 %a) {
-; BE-LABEL: test_ileull_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: addic r3, r3, -1
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileull_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addic r3, r3, -1
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileull_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_ileull_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addic r3, r3, -1
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, 0
%conv1 = sext i1 %cmp to i64
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileus(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_ileus(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ileus:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileus_sext(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_ileus_sext(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ileus_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileus_z(i16 zeroext %a) {
+define dso_local signext i32 @test_ileus_z(i16 zeroext %a) {
; CHECK-LABEL: test_ileus_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_ileus_sext_z(i16 zeroext %a) {
+define dso_local signext i32 @test_ileus_sext_z(i16 zeroext %a) {
; CHECK-LABEL: test_ileus_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
}
; Function Attrs: norecurse nounwind
-define void @test_ileus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_ileus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_ileus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_ileus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_ileus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_ileus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_ileus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
%conv3 = sext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_ileus_z_store(i16 zeroext %a) {
-; BE-LABEL: test_ileus_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileus_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: sth r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileus_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_ileus_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: sth r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, 0
%conv2 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_ileus_sext_z_store(i16 zeroext %a) {
-; BE-LABEL: test_ileus_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_ileus_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: sth r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_ileus_sext_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_ileus_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: sth r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, 0
%conv2 = sext i1 %cmp to i16
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsc(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_iltsc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_iltsc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsc_sext(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_iltsc_sext(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_iltsc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsc_sext_z(i8 signext %a) {
+define dso_local signext i32 @test_iltsc_sext_z(i8 signext %a) {
; CHECK-LABEL: test_iltsc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: srawi r3, r3, 31
}
; Function Attrs: norecurse nounwind
-define void @test_iltsc_store(i8 signext %a, i8 signext %b) {
-; BE-LABEL: test_iltsc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsc_store(i8 signext %a, i8 signext %b) {
+; CHECK-LABEL: test_iltsc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_iltsc_sext_store(i8 signext %a, i8 signext %b) {
-; BE-LABEL: test_iltsc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsc_sext_store(i8 signext %a, i8 signext %b) {
+; CHECK-LABEL: test_iltsc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i8 %a, %b
%conv3 = sext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_iltsc_sext_z_store(i8 signext %a) {
-; BE-LABEL: test_iltsc_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: srwi r3, r3, 7
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsc_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 7
-; LE-NEXT: stb r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_iltsc_sext_z_store(i8 signext %a) {
+; CHECK-LABEL: test_iltsc_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 7
+; CHECK-NEXT: stb r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i8 %a, 0
%conv2 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsi(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_iltsi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_iltsi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsi_sext(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_iltsi_sext(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_iltsi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsi_sext_z(i32 signext %a) {
+define dso_local signext i32 @test_iltsi_sext_z(i32 signext %a) {
; CHECK-LABEL: test_iltsi_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: srawi r3, r3, 31
}
; Function Attrs: norecurse nounwind
-define void @test_iltsi_store(i32 signext %a, i32 signext %b) {
-; BE-LABEL: test_iltsi_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsi_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsi_store(i32 signext %a, i32 signext %b) {
+; CHECK-LABEL: test_iltsi_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i32 %a, %b
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_iltsi_sext_store(i32 signext %a, i32 signext %b) {
-; BE-LABEL: test_iltsi_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: stw r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsi_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsi_sext_store(i32 signext %a, i32 signext %b) {
+; CHECK-LABEL: test_iltsi_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i32 %a, %b
%sub = sext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_iltsi_sext_z_store(i32 signext %a) {
-; BE-LABEL: test_iltsi_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: srawi r3, r3, 31
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsi_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srawi r3, r3, 31
-; LE-NEXT: stw r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_iltsi_sext_z_store(i32 signext %a) {
+; CHECK-LABEL: test_iltsi_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srawi r3, r3, 31
+; CHECK-NEXT: stw r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i32 %a, 0
%sub = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_iltsll(i64 %a, i64 %b) {
; CHECK-LABEL: test_iltsll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r3, 63
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_iltsll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_iltsll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r5, r3, 63
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltsll_sext_z(i64 %a) {
+define dso_local signext i32 @test_iltsll_sext_z(i64 %a) {
; CHECK-LABEL: test_iltsll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r3, r3, 63
}
; Function Attrs: norecurse nounwind
-define void @test_iltsll_store(i64 %a, i64 %b) {
-; BE-LABEL: test_iltsll_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: sradi r6, r3, 63
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: rldicl r3, r4, 1, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: adde r3, r3, r6
-; BE-NEXT: xori r3, r3, 1
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsll_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sradi r6, r3, 63
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: rldicl r3, r4, 1, 63
-; LE-NEXT: adde r3, r3, r6
-; LE-NEXT: xori r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsll_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_iltsll_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sradi r6, r3, 63
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: rldicl r3, r4, 1, 63
+; CHECK-NEXT: adde r3, r3, r6
+; CHECK-NEXT: xori r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
; CHECK-DIAG: subfc [[REG3:r[0-9]+]], r4, r3
entry:
%cmp = icmp slt i64 %a, %b
}
; Function Attrs: norecurse nounwind
-define void @test_iltsll_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_iltsll_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: sradi r6, r3, 63
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: rldicl r3, r4, 1, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: adde r3, r3, r6
-; BE-NEXT: xori r3, r3, 1
-; BE-NEXT: neg r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsll_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sradi r6, r3, 63
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: rldicl r3, r4, 1, 63
-; LE-NEXT: adde r3, r3, r6
-; LE-NEXT: xori r3, r3, 1
-; LE-NEXT: neg r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltsll_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_iltsll_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sradi r6, r3, 63
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: rldicl r3, r4, 1, 63
+; CHECK-NEXT: adde r3, r3, r6
+; CHECK-NEXT: xori r3, r3, 1
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
; CHECK-DIAG: subfc [[REG3:r[0-9]+]], r4, r3
entry:
%cmp = icmp slt i64 %a, %b
}
; Function Attrs: norecurse nounwind
-define void @test_iltsll_sext_z_store(i64 %a) {
-; BE-LABEL: test_iltsll_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltsll_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_iltsll_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_iltsll_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i64 %a, 0
%conv2 = sext i1 %cmp to i64
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltss(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iltss(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iltss:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltss_sext(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iltss_sext(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iltss_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltss_sext_z(i16 signext %a) {
+define dso_local signext i32 @test_iltss_sext_z(i16 signext %a) {
; CHECK-LABEL: test_iltss_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: srawi r3, r3, 31
}
; Function Attrs: norecurse nounwind
-define void @test_iltss_store(i16 signext %a, i16 signext %b) {
-; BE-LABEL: test_iltss_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltss_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltss_store(i16 signext %a, i16 signext %b) {
+; CHECK-LABEL: test_iltss_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_iltss_sext_store(i16 signext %a, i16 signext %b) {
-; BE-LABEL: test_iltss_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltss_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltss_sext_store(i16 signext %a, i16 signext %b) {
+; CHECK-LABEL: test_iltss_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i16 %a, %b
%conv3 = sext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_iltss_sext_z_store(i16 signext %a) {
-; BE-LABEL: test_iltss_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: srwi r3, r3, 15
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltss_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 15
-; LE-NEXT: sth r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_iltss_sext_z_store(i16 signext %a) {
+; CHECK-LABEL: test_iltss_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 15
+; CHECK-NEXT: sth r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i16 %a, 0
%sub = sext i1 %cmp to i16
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltuc(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_iltuc(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iltuc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltuc_sext(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_iltuc_sext(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_iltuc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind
-define void @test_iltuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_iltuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_iltuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_iltuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_iltuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_iltuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
%conv3 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltui(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_iltui(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iltui:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltui_sext(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_iltui_sext(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_iltui_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind
-define void @test_iltui_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_iltui_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltui_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltui_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_iltui_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i32 %a, %b
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_iltui_sext_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_iltui_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: stw r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltui_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_iltui_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i32 %a, %b
%sub = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltus(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_iltus(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iltus:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind readnone
-define signext i32 @test_iltus_sext(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_iltus_sext(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_iltus_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
}
; Function Attrs: norecurse nounwind
-define void @test_iltus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_iltus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_iltus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_iltus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_iltus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_iltus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_iltus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_iltus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
%conv3 = sext i1 %cmp to i16
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
-define signext i32 @test_inesc(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_inesc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_inesc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_inesc_sext(i8 signext %a, i8 signext %b) {
+define dso_local signext i32 @test_inesc_sext(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_inesc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_inesc_z(i8 signext %a) {
+define dso_local signext i32 @test_inesc_z(i8 signext %a) {
; CHECK-LABEL: test_inesc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv1
}
-define signext i32 @test_inesc_sext_z(i8 signext %a) {
+define dso_local signext i32 @test_inesc_sext_z(i8 signext %a) {
; CHECK-LABEL: test_inesc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_inesc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_inesc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_inesc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesc_store:
ret void
}
-define void @test_inesc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_inesc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_inesc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_inesc_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesc_sext_store:
ret void
}
-define void @test_inesc_z_store(i8 signext %a) {
+define dso_local void @test_inesc_z_store(i8 signext %a) {
; CHECK-LABEL: test_inesc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesc_z_store:
ret void
}
-define void @test_inesc_sext_z_store(i8 signext %a) {
+define dso_local void @test_inesc_sext_z_store(i8 signext %a) {
; CHECK-LABEL: test_inesc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesc_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
-define signext i32 @test_inesi(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_inesi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_inesi:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv
}
-define signext i32 @test_inesi_sext(i32 signext %a, i32 signext %b) {
+define dso_local signext i32 @test_inesi_sext(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_inesi_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_inesi_z(i32 signext %a) {
+define dso_local signext i32 @test_inesi_z(i32 signext %a) {
; CHECK-LABEL: test_inesi_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv
}
-define signext i32 @test_inesi_sext_z(i32 signext %a) {
+define dso_local signext i32 @test_inesi_sext_z(i32 signext %a) {
; CHECK-LABEL: test_inesi_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_inesi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_inesi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_inesi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesi_store:
ret void
}
-define void @test_inesi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_inesi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_inesi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_inesi_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesi_sext_store:
ret void
}
-define void @test_inesi_z_store(i32 signext %a) {
+define dso_local void @test_inesi_z_store(i32 signext %a) {
; CHECK-LABEL: test_inesi_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesi_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesi_z_store:
ret void
}
-define void @test_inesi_sext_z_store(i32 signext %a) {
+define dso_local void @test_inesi_sext_z_store(i32 signext %a) {
; CHECK-LABEL: test_inesi_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesi_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesi_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
-define signext i32 @test_inesll(i64 %a, i64 %b) {
+define dso_local signext i32 @test_inesll(i64 %a, i64 %b) {
; CHECK-LABEL: test_inesll:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv
}
-define signext i32 @test_inesll_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_inesll_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_inesll_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_inesll_z(i64 %a) {
+define dso_local signext i32 @test_inesll_z(i64 %a) {
; CHECK-LABEL: test_inesll_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r4, r3, -1
ret i32 %conv
}
-define signext i32 @test_inesll_sext_z(i64 %a) {
+define dso_local signext i32 @test_inesll_sext_z(i64 %a) {
; CHECK-LABEL: test_inesll_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
ret i32 %sub
}
-define void @test_inesll_store(i64 %a, i64 %b) {
+define dso_local void @test_inesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_inesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
-; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-BE-NEXT: addic r4, r3, -1
+; CHECK-BE-NEXT: subfe r3, r4, r3
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesll_store:
ret void
}
-define void @test_inesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_inesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_inesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesll_sext_store:
ret void
}
-define void @test_inesll_z_store(i64 %a) {
+define dso_local void @test_inesll_z_store(i64 %a) {
; CHECK-LABEL: test_inesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesll_z_store:
ret void
}
-define void @test_inesll_sext_z_store(i64 %a) {
+define dso_local void @test_inesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_inesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_inesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_inesll_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @test_iness(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iness(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iness:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_iness_sext(i16 signext %a, i16 signext %b) {
+define dso_local signext i32 @test_iness_sext(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iness_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_iness_z(i16 signext %a) {
+define dso_local signext i32 @test_iness_z(i16 signext %a) {
; CHECK-LABEL: test_iness_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv1
}
-define signext i32 @test_iness_sext_z(i16 signext %a) {
+define dso_local signext i32 @test_iness_sext_z(i16 signext %a) {
; CHECK-LABEL: test_iness_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_iness_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_iness_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iness_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iness_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iness_store:
ret void
}
-define void @test_iness_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_iness_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_iness_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_iness_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iness_sext_store:
ret void
}
-define void @test_iness_z_store(i16 signext %a) {
+define dso_local void @test_iness_z_store(i16 signext %a) {
; CHECK-LABEL: test_iness_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iness_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iness_z_store:
ret void
}
-define void @test_iness_sext_z_store(i16 signext %a) {
+define dso_local void @test_iness_sext_z_store(i16 signext %a) {
; CHECK-LABEL: test_iness_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_iness_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_iness_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
-define signext i32 @test_ineuc(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_ineuc(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ineuc:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_ineuc_sext(i8 zeroext %a, i8 zeroext %b) {
+define dso_local signext i32 @test_ineuc_sext(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ineuc_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_ineuc_z(i8 zeroext %a) {
+define dso_local signext i32 @test_ineuc_z(i8 zeroext %a) {
; CHECK-LABEL: test_ineuc_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv1
}
-define signext i32 @test_ineuc_sext_z(i8 zeroext %a) {
+define dso_local signext i32 @test_ineuc_sext_z(i8 zeroext %a) {
; CHECK-LABEL: test_ineuc_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_ineuc_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_ineuc_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ineuc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineuc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineuc_store:
ret void
}
-define void @test_ineuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_ineuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_ineuc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_ineuc_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineuc_sext_store:
ret void
}
-define void @test_ineuc_z_store(i8 zeroext %a) {
+define dso_local void @test_ineuc_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_ineuc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineuc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineuc_z_store:
ret void
}
-define void @test_ineuc_sext_z_store(i8 zeroext %a) {
+define dso_local void @test_ineuc_sext_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_ineuc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineuc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineuc_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
-define signext i32 @test_ineui(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_ineui(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ineui:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv
}
-define signext i32 @test_ineui_sext(i32 zeroext %a, i32 zeroext %b) {
+define dso_local signext i32 @test_ineui_sext(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ineui_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_ineui_z(i32 zeroext %a) {
+define dso_local signext i32 @test_ineui_z(i32 zeroext %a) {
; CHECK-LABEL: test_ineui_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv
}
-define signext i32 @test_ineui_sext_z(i32 zeroext %a) {
+define dso_local signext i32 @test_ineui_sext_z(i32 zeroext %a) {
; CHECK-LABEL: test_ineui_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_ineui_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_ineui_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ineui_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineui_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineui_store:
ret void
}
-define void @test_ineui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_ineui_sext_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_ineui_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_ineui_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineui_sext_store:
ret void
}
-define void @test_ineui_z_store(i32 zeroext %a) {
+define dso_local void @test_ineui_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_ineui_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineui_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineui_z_store:
ret void
}
-define void @test_ineui_sext_z_store(i32 zeroext %a) {
+define dso_local void @test_ineui_sext_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_ineui_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineui_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineui_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
-define signext i32 @test_ineull(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ineull(i64 %a, i64 %b) {
; CHECK-LABEL: test_ineull:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv
}
-define signext i32 @test_ineull_sext(i64 %a, i64 %b) {
+define dso_local signext i32 @test_ineull_sext(i64 %a, i64 %b) {
; CHECK-LABEL: test_ineull_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_ineull_z(i64 %a) {
+define dso_local signext i32 @test_ineull_z(i64 %a) {
; CHECK-LABEL: test_ineull_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r4, r3, -1
ret i32 %conv
}
-define signext i32 @test_ineull_sext_z(i64 %a) {
+define dso_local signext i32 @test_ineull_sext_z(i64 %a) {
; CHECK-LABEL: test_ineull_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
ret i32 %sub
}
-define void @test_ineull_store(i64 %a, i64 %b) {
+define dso_local void @test_ineull_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ineull_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineull_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
-; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-BE-NEXT: addic r4, r3, -1
+; CHECK-BE-NEXT: subfe r3, r4, r3
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineull_store:
ret void
}
-define void @test_ineull_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_ineull_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_ineull_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineull_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineull_sext_store:
ret void
}
-define void @test_ineull_z_store(i64 %a) {
+define dso_local void @test_ineull_z_store(i64 %a) {
; CHECK-LABEL: test_ineull_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineull_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineull_z_store:
ret void
}
-define void @test_ineull_sext_z_store(i64 %a) {
+define dso_local void @test_ineull_sext_z_store(i64 %a) {
; CHECK-LABEL: test_ineull_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineull_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineull_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
-define signext i32 @test_ineus(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_ineus(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ineus:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %conv2
}
-define signext i32 @test_ineus_sext(i16 zeroext %a, i16 zeroext %b) {
+define dso_local signext i32 @test_ineus_sext(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ineus_sext:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
ret i32 %sub
}
-define signext i32 @test_ineus_z(i16 zeroext %a) {
+define dso_local signext i32 @test_ineus_z(i16 zeroext %a) {
; CHECK-LABEL: test_ineus_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %conv1
}
-define signext i32 @test_ineus_sext_z(i16 zeroext %a) {
+define dso_local signext i32 @test_ineus_sext_z(i16 zeroext %a) {
; CHECK-LABEL: test_ineus_sext_z:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
ret i32 %sub
}
-define void @test_ineus_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_ineus_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ineus_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineus_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineus_store:
ret void
}
-define void @test_ineus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_ineus_sext_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_ineus_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-BE-LABEL: test_ineus_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineus_sext_store:
ret void
}
-define void @test_ineus_z_store(i16 zeroext %a) {
+define dso_local void @test_ineus_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_ineus_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineus_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineus_z_store:
ret void
}
-define void @test_ineus_sext_z_store(i16 zeroext %a) {
+define dso_local void @test_ineus_sext_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_ineus_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_ineus_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-BE-NEXT: xori r3, r3, 1
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_ineus_sext_z_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
; ModuleID = 'ComparisonTestCases/testCompareslleqsc.c'
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
define i64 @test_lleqsc(i8 signext %a, i8 signext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_lleqsc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_lleqsc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsc_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_lleqsc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_lleqsc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsc_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsc_z_store(i8 signext %a) {
+define dso_local void @test_lleqsc_z_store(i8 signext %a) {
; CHECK-LABEL: test_lleqsc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsc_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsc_sext_z_store(i8 signext %a) {
+define dso_local void @test_lleqsc_sext_z_store(i8 signext %a) {
; CHECK-LABEL: test_lleqsc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsc_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
define i64 @test_lleqsi(i32 signext %a, i32 signext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_lleqsi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_lleqsi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsi_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_lleqsi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_lleqsi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsi_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsi_z_store(i32 signext %a) {
+define dso_local void @test_lleqsi_z_store(i32 signext %a) {
; CHECK-LABEL: test_lleqsi_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsi_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsi_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsi_sext_z_store(i32 signext %a) {
+define dso_local void @test_lleqsi_sext_z_store(i32 signext %a) {
; CHECK-LABEL: test_lleqsi_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsi_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsi_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_lleqsll(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsll_store(i64 %a, i64 %b) {
+define dso_local void @test_lleqsll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_lleqsll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsll_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_lleqsll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_lleqsll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsll_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsll_z_store(i64 %a) {
+define dso_local void @test_lleqsll_z_store(i64 %a) {
; CHECK-LABEL: test_lleqsll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsll_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqsll_sext_z_store(i64 %a) {
+define dso_local void @test_lleqsll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_lleqsll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqsll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqsll_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
define i64 @test_lleqss(i16 signext %a, i16 signext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_lleqss_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_lleqss_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_lleqss_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqss_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqss_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqss_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_lleqss_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_lleqss_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqss_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqss_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqss_z_store(i16 signext %a) {
+define dso_local void @test_lleqss_z_store(i16 signext %a) {
; CHECK-LABEL: test_lleqss_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqss_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqss_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lleqss_sext_z_store(i16 signext %a) {
+define dso_local void @test_lleqss_sext_z_store(i16 signext %a) {
; CHECK-LABEL: test_lleqss_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lleqss_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lleqss_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
define i64 @test_llequc(i8 zeroext %a, i8 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llequc_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_llequc_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_llequc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequc_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+define dso_local void @test_llequc_sext_store(i8 zeroext %a, i8 zeroext %b) {
; CHECK-LABEL: test_llequc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequc_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequc_z_store(i8 zeroext %a) {
+define dso_local void @test_llequc_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_llequc_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequc_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequc_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequc_sext_z_store(i8 zeroext %a) {
+define dso_local void @test_llequc_sext_z_store(i8 zeroext %a) {
; CHECK-LABEL: test_llequc_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequc_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequc_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
define i64 @test_llequi(i32 zeroext %a, i32 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llequi_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_llequi_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_llequi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequi_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequi_sext_store(i32 zeroext %a, i32 zeroext %b) {
+define dso_local void @test_llequi_sext_store(i32 zeroext %a, i32 zeroext %b) {
; CHECK-LABEL: test_llequi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequi_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequi_z_store(i32 zeroext %a) {
+define dso_local void @test_llequi_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_llequi_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequi_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequi_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequi_sext_z_store(i32 zeroext %a) {
+define dso_local void @test_llequi_sext_z_store(i32 zeroext %a) {
; CHECK-LABEL: test_llequi_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequi_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequi_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_llequll(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llequll_store(i64 %a, i64 %b) {
+define dso_local void @test_llequll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llequll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequll_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_llequll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llequll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequll_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequll_z_store(i64 %a) {
+define dso_local void @test_llequll_z_store(i64 %a) {
; CHECK-LABEL: test_llequll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzd r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzd r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 58, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequll_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequll_sext_z_store(i64 %a) {
+define dso_local void @test_llequll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_llequll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r3, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r3, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequll_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
define i64 @test_llequs(i16 zeroext %a, i16 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llequs_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_llequs_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_llequs_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequs_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequs_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequs_sext_store(i16 zeroext %a, i16 zeroext %b) {
+define dso_local void @test_llequs_sext_store(i16 zeroext %a, i16 zeroext %b) {
; CHECK-LABEL: test_llequs_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequs_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequs_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequs_z_store(i16 zeroext %a) {
+define dso_local void @test_llequs_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_llequs_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequs_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequs_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_llequs_sext_z_store(i16 zeroext %a) {
+define dso_local void @test_llequs_sext_z_store(i16 zeroext %a) {
; CHECK-LABEL: test_llequs_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cntlzw r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llequs_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: cntlzw r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: srwi r3, r3, 5
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llequs_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
define i64 @test_llgesc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_llgesc:
ret i64 %conv3
}
-define void @test_llgesc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_llgesc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_llgesc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesc_store:
ret void
}
-define void @test_llgesc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_llgesc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_llgesc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesc_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
define i64 @test_llgesi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_llgesi:
ret i64 %conv1
}
-define void @test_llgesi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_llgesi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_llgesi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesi_store:
ret void
}
-define void @test_llgesi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_llgesi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_llgesi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesi_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
define i64 @test_llgesll(i64 %a, i64 %b) {
; CHECK-LABEL: test_llgesll:
ret i64 %conv1
}
-define void @test_llgesll_store(i64 %a, i64 %b) {
+define dso_local void @test_llgesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llgesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r3, 63
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sradi r6, r3, 63
-; CHECK-BE-NEXT: ld r5, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r3, r3, r4
; CHECK-BE-NEXT: rldicl r3, r4, 1, 63
; CHECK-BE-NEXT: adde r3, r6, r3
-; CHECK-BE-NEXT: std r3, 0(r5)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesll_store:
ret void
}
-define void @test_llgesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_llgesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llgesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r3, 63
; CHECK-BE-LABEL: test_llgesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: sradi r6, r3, 63
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r3, r3, r4
; CHECK-BE-NEXT: rldicl r3, r4, 1, 63
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: adde r3, r6, r3
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesll_sext_store:
ret void
}
-define void @test_llgesll_z_store(i64 %a) {
+define dso_local void @test_llgesll_z_store(i64 %a) {
; CHECK-LABEL: test_llgesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: not r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: not r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesll_z_store:
ret void
}
-define void @test_llgesll_sext_z_store(i64 %a) {
+define dso_local void @test_llgesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_llgesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: not r3, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: not r3, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: sradi r3, r3, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgesll_sext_z_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
define i64 @test_llgess(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llgess:
ret i64 %conv3
}
-define void @test_llgess_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_llgess_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llgess_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgess_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgess_store:
ret void
}
-define void @test_llgess_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_llgess_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llgess_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llgess_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llgess_sext_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
define i64 @test_llgeuc(i8 zeroext %a, i8 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llgeuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llgeuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llgeuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llgeuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llgeuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llgeuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, %b
%conv3 = sext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llgeuc_z_store(i8 zeroext %a) {
-; BE-LABEL: test_llgeuc_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stb r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeuc_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: stb r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeuc_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_llgeuc_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: stb r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, 0
%conv1 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llgeuc_sext_z_store(i8 zeroext %a) {
-; BE-LABEL: test_llgeuc_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stb r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeuc_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: stb r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeuc_sext_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_llgeuc_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: stb r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i8 %a, 0
%conv1 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
define i64 @test_llgeui(i32 zeroext %a, i32 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llgeui_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_llgeui_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeui_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeui_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_llgeui_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llgeui_sext_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_llgeui_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeui_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_llgeui_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, %b
%sub = sext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llgeui_z_store(i32 zeroext %a) {
-; BE-LABEL: test_llgeui_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stw r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeui_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: stw r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeui_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_llgeui_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: stw r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, 0
%sub = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llgeui_sext_z_store(i32 zeroext %a) {
-; BE-LABEL: test_llgeui_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: stw r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeui_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: stw r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeui_sext_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_llgeui_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: stw r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i32 %a, 0
%sub = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_llgeull(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llgeull_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llgeull_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: ld r3, .LC0@toc@l(r5)
-; BE-NEXT: subfe r4, r4, r4
-; BE-NEXT: addi r4, r4, 1
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeull_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r4, r4
-; LE-NEXT: addi r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeull_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llgeull_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r4, r4
+; CHECK-NEXT: addi r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llgeull_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llgeull_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: ld r3, .LC0@toc@l(r5)
-; BE-NEXT: subfe r4, r4, r4
-; BE-NEXT: not r4, r4
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeull_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r4, r4
-; LE-NEXT: not r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeull_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llgeull_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r4, r4
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, %b
%conv1 = sext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llgeull_z_store(i64 %a) {
-; BE-LABEL: test_llgeull_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeull_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: std r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeull_z_store(i64 %a) {
+; CHECK-LABEL: test_llgeull_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: std r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i64 %a, 0
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llgeull_sext_z_store(i64 %a) {
-; BE-LABEL: test_llgeull_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: std r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeull_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: std r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeull_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_llgeull_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: std r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
store i64 -1, i64* @glob
ret void
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
define i64 @test_llgeus(i16 zeroext %a, i16 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llgeus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llgeus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llgeus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llgeus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llgeus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llgeus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llgeus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, %b
%conv3 = sext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llgeus_z_store(i16 zeroext %a) {
-; BE-LABEL: test_llgeus_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, 1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: sth r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeus_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, 1
-; LE-NEXT: sth r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeus_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_llgeus_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, 1
+; CHECK-NEXT: sth r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, 0
%conv1 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llgeus_sext_z_store(i16 zeroext %a) {
-; BE-LABEL: test_llgeus_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r3, r2, .LC0@toc@ha
-; BE-NEXT: li r4, -1
-; BE-NEXT: ld r3, .LC0@toc@l(r3)
-; BE-NEXT: sth r4, 0(r3)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llgeus_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r3, r2, glob@toc@ha
-; LE-NEXT: li r4, -1
-; LE-NEXT: sth r4, glob@toc@l(r3)
-; LE-NEXT: blr
+define dso_local void @test_llgeus_sext_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_llgeus_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r3, r2, glob@toc@ha
+; CHECK-NEXT: li r4, -1
+; CHECK-NEXT: sth r4, glob@toc@l(r3)
+; CHECK-NEXT: blr
entry:
%cmp = icmp uge i16 %a, 0
%conv1 = sext i1 %cmp to i16
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
define i64 @test_lllesc(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_lllesc:
ret i64 %conv3
}
-define void @test_lllesc_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_lllesc_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_lllesc_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesc_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesc_store:
ret void
}
-define void @test_lllesc_sext_store(i8 signext %a, i8 signext %b) {
+define dso_local void @test_lllesc_sext_store(i8 signext %a, i8 signext %b) {
; CHECK-LABEL: test_lllesc_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesc_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stb r3, 0(r4)
+; CHECK-BE-NEXT: stb r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesc_sext_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
define i64 @test_lllesi(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_lllesi:
ret i64 %conv1
}
-define void @test_lllesi_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_lllesi_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_lllesi_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesi_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesi_store:
ret void
}
-define void @test_lllesi_sext_store(i32 signext %a, i32 signext %b) {
+define dso_local void @test_lllesi_sext_store(i32 signext %a, i32 signext %b) {
; CHECK-LABEL: test_lllesi_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesi_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: stw r3, 0(r4)
+; CHECK-BE-NEXT: stw r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesi_sext_store:
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_lllesll(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_lllesll_store(i64 %a, i64 %b) {
+define dso_local void @test_lllesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_lllesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r4, 63
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sradi r6, r4, 63
-; CHECK-BE-NEXT: ld r5, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r4, r4, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: adde r3, r6, r3
-; CHECK-BE-NEXT: std r3, 0(r5)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesll_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lllesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_lllesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_lllesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sradi r6, r4, 63
; CHECK-BE-LABEL: test_lllesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
; CHECK-BE-NEXT: sradi r6, r4, 63
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subc r4, r4, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
; CHECK-BE-NEXT: adde r3, r6, r3
; CHECK-BE-NEXT: neg r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesll_sext_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lllesll_z_store(i64 %a) {
+define dso_local void @test_lllesll_z_store(i64 %a) {
; CHECK-LABEL: test_lllesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addi r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: or r3, r5, r3
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesll_z_store:
}
; Function Attrs: norecurse nounwind
-define void @test_lllesll_sext_z_store(i64 %a) {
+define dso_local void @test_lllesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_lllesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addi r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_lllesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addi r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: or r3, r5, r3
; CHECK-BE-NEXT: sradi r3, r3, 63
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_lllesll_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
define i64 @test_llless(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llless:
ret i64 %conv3
}
-define void @test_llless_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_llless_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llless_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llless_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: xori r3, r3, 1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llless_store:
ret void
}
-define void @test_llless_sext_store(i16 signext %a, i16 signext %b) {
+define dso_local void @test_llless_sext_store(i16 signext %a, i16 signext %b) {
; CHECK-LABEL: test_llless_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: sub r3, r4, r3
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llless_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: sub r3, r4, r3
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: rldicl r3, r3, 1, 63
; CHECK-BE-NEXT: addi r3, r3, -1
-; CHECK-BE-NEXT: sth r3, 0(r4)
+; CHECK-BE-NEXT: sth r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llless_sext_store:
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
define i64 @test_llleuc(i8 zeroext %a, i8 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llleuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llleuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llleuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llleuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llleuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llleuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, %b
%conv3 = sext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llleuc_z_store(i8 zeroext %a) {
-; BE-LABEL: test_llleuc_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleuc_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: stb r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleuc_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_llleuc_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: stb r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, 0
%conv2 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llleuc_sext_z_store(i8 zeroext %a) {
-; BE-LABEL: test_llleuc_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: stb r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleuc_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: stb r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleuc_sext_z_store(i8 zeroext %a) {
+; CHECK-LABEL: test_llleuc_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: stb r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i8 %a, 0
%conv2 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i32 0, align 4
+@glob = dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: norecurse nounwind readnone
define i64 @test_llleui(i32 zeroext %a, i32 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llleui_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_llleui_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleui_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleui_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_llleui_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llleui_sext_store(i32 zeroext %a, i32 zeroext %b) {
-; BE-LABEL: test_llleui_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleui_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: stw r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleui_sext_store(i32 zeroext %a, i32 zeroext %b) {
+; CHECK-LABEL: test_llleui_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: stw r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, %b
%sub = sext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llleui_z_store(i32 zeroext %a) {
-; BE-LABEL: test_llleui_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleui_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: stw r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleui_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_llleui_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: stw r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, 0
%conv = zext i1 %cmp to i32
}
; Function Attrs: norecurse nounwind
-define void @test_llleui_sext_z_store(i32 zeroext %a) {
-; BE-LABEL: test_llleui_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: stw r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleui_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: stw r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleui_sext_z_store(i32 zeroext %a) {
+; CHECK-LABEL: test_llleui_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: stw r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i32 %a, 0
%sub = sext i1 %cmp to i32
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_llleull(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llleull_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llleull_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r4, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: addi r3, r3, 1
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleull_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r4, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: addi r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleull_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llleull_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r4, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: addi r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llleull_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llleull_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r4, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: not r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleull_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: subc r4, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: not r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleull_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llleull_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subc r4, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, %b
%conv1 = sext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llleull_z_store(i64 %a) {
-; BE-LABEL: test_llleull_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzd r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: rldicl r3, r3, 58, 63
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleull_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzd r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 58, 63
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleull_z_store(i64 %a) {
+; CHECK-LABEL: test_llleull_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzd r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 58, 63
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, 0
%conv1 = zext i1 %cmp to i64
}
; Function Attrs: norecurse nounwind
-define void @test_llleull_sext_z_store(i64 %a) {
-; BE-LABEL: test_llleull_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: addic r3, r3, -1
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: subfe r3, r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleull_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addic r3, r3, -1
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: subfe r3, r3, r3
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleull_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_llleull_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addic r3, r3, -1
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: subfe r3, r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i64 %a, 0
%conv1 = sext i1 %cmp to i64
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
define i64 @test_llleus(i16 zeroext %a, i16 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llleus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llleus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: not r3, r3
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: not r3, r3
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llleus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: not r3, r3
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llleus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llleus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r4, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: addi r3, r3, -1
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r4, r3
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: addi r3, r3, -1
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llleus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llleus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r4, r3
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: addi r3, r3, -1
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, %b
%conv3 = sext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llleus_z_store(i16 zeroext %a) {
-; BE-LABEL: test_llleus_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleus_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: sth r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleus_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_llleus_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: sth r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, 0
%conv2 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llleus_sext_z_store(i16 zeroext %a) {
-; BE-LABEL: test_llleus_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: cntlzw r3, r3
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: srwi r3, r3, 5
-; BE-NEXT: neg r3, r3
-; BE-NEXT: sth r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llleus_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: cntlzw r3, r3
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: srwi r3, r3, 5
-; LE-NEXT: neg r3, r3
-; LE-NEXT: sth r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llleus_sext_z_store(i16 zeroext %a) {
+; CHECK-LABEL: test_llleus_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: cntlzw r3, r3
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: srwi r3, r3, 5
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: sth r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ule i16 %a, 0
%conv2 = sext i1 %cmp to i16
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
; Function Attrs: norecurse nounwind readnone
define i64 @test_llltsll(i64 %a, i64 %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llltsll_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llltsll_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: sradi r6, r3, 63
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: rldicl r3, r4, 1, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: adde r3, r3, r6
-; BE-NEXT: xori r3, r3, 1
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltsll_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sradi r6, r3, 63
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: rldicl r3, r4, 1, 63
-; LE-NEXT: adde r3, r3, r6
-; LE-NEXT: xori r3, r3, 1
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltsll_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llltsll_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sradi r6, r3, 63
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: rldicl r3, r4, 1, 63
+; CHECK-NEXT: adde r3, r3, r6
+; CHECK-NEXT: xori r3, r3, 1
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
; CHECK-DIAG: subfc [[REG3:r[0-9]+]], r4, r3
entry:
%cmp = icmp slt i64 %a, %b
}
; Function Attrs: norecurse nounwind
-define void @test_llltsll_sext_store(i64 %a, i64 %b) {
-; BE-LABEL: test_llltsll_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: sradi r6, r3, 63
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: subc r3, r3, r4
-; BE-NEXT: rldicl r3, r4, 1, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r5)
-; BE-NEXT: adde r3, r3, r6
-; BE-NEXT: xori r3, r3, 1
-; BE-NEXT: neg r3, r3
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltsll_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sradi r6, r3, 63
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: subc r3, r3, r4
-; LE-NEXT: rldicl r3, r4, 1, 63
-; LE-NEXT: adde r3, r3, r6
-; LE-NEXT: xori r3, r3, 1
-; LE-NEXT: neg r3, r3
-; LE-NEXT: std r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltsll_sext_store(i64 %a, i64 %b) {
+; CHECK-LABEL: test_llltsll_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sradi r6, r3, 63
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: subc r3, r3, r4
+; CHECK-NEXT: rldicl r3, r4, 1, 63
+; CHECK-NEXT: adde r3, r3, r6
+; CHECK-NEXT: xori r3, r3, 1
+; CHECK-NEXT: neg r3, r3
+; CHECK-NEXT: std r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
; CHECK-DIAG: subfc [[REG3:r[0-9]+]], r4, r3
entry:
%cmp = icmp slt i64 %a, %b
}
; Function Attrs: norecurse nounwind
-define void @test_llltsll_sext_z_store(i64 %a) {
-; BE-LABEL: test_llltsll_sext_z_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r4, r2, .LC0@toc@ha
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: ld r4, .LC0@toc@l(r4)
-; BE-NEXT: std r3, 0(r4)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltsll_sext_z_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: addis r4, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: std r3, glob@toc@l(r4)
-; LE-NEXT: blr
+define dso_local void @test_llltsll_sext_z_store(i64 %a) {
+; CHECK-LABEL: test_llltsll_sext_z_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: addis r4, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: std r3, glob@toc@l(r4)
+; CHECK-NEXT: blr
entry:
%cmp = icmp slt i64 %a, 0
%sub = sext i1 %cmp to i64
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i8 0, align 1
+@glob = dso_local local_unnamed_addr global i8 0, align 1
; Function Attrs: norecurse nounwind readnone
define i64 @test_llltuc(i8 zeroext %a, i8 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llltuc_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llltuc_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltuc_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltuc_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llltuc_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
%conv3 = zext i1 %cmp to i8
}
; Function Attrs: norecurse nounwind
-define void @test_llltuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
-; BE-LABEL: test_llltuc_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: stb r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltuc_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: stb r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltuc_sext_store(i8 zeroext %a, i8 zeroext %b) {
+; CHECK-LABEL: test_llltuc_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: stb r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i8 %a, %b
%conv3 = sext i1 %cmp to i8
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \
; RUN: --check-prefixes=CHECK,LE
-@glob = local_unnamed_addr global i16 0, align 2
+@glob = dso_local local_unnamed_addr global i16 0, align 2
; Function Attrs: norecurse nounwind readnone
define i64 @test_llltus(i16 zeroext %a, i16 zeroext %b) {
}
; Function Attrs: norecurse nounwind
-define void @test_llltus_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llltus_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: rldicl r3, r3, 1, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltus_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: rldicl r3, r3, 1, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltus_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llltus_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: rldicl r3, r3, 1, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
%conv3 = zext i1 %cmp to i16
}
; Function Attrs: norecurse nounwind
-define void @test_llltus_sext_store(i16 zeroext %a, i16 zeroext %b) {
-; BE-LABEL: test_llltus_sext_store:
-; BE: # %bb.0: # %entry
-; BE-NEXT: addis r5, r2, .LC0@toc@ha
-; BE-NEXT: sub r3, r3, r4
-; BE-NEXT: ld r5, .LC0@toc@l(r5)
-; BE-NEXT: sradi r3, r3, 63
-; BE-NEXT: sth r3, 0(r5)
-; BE-NEXT: blr
-;
-; LE-LABEL: test_llltus_sext_store:
-; LE: # %bb.0: # %entry
-; LE-NEXT: sub r3, r3, r4
-; LE-NEXT: addis r5, r2, glob@toc@ha
-; LE-NEXT: sradi r3, r3, 63
-; LE-NEXT: sth r3, glob@toc@l(r5)
-; LE-NEXT: blr
+define dso_local void @test_llltus_sext_store(i16 zeroext %a, i16 zeroext %b) {
+; CHECK-LABEL: test_llltus_sext_store:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: sub r3, r3, r4
+; CHECK-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-NEXT: sradi r3, r3, 63
+; CHECK-NEXT: sth r3, glob@toc@l(r5)
+; CHECK-NEXT: blr
entry:
%cmp = icmp ult i16 %a, %b
%conv3 = sext i1 %cmp to i16
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
define i64 @test_llnesll(i64 %a, i64 %b) {
; CHECK-LABEL: test_llnesll:
ret i64 %conv1
}
-define void @test_llnesll_store(i64 %a, i64 %b) {
+define dso_local void @test_llnesll_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llnesll_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llnesll_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
-; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-BE-NEXT: addic r4, r3, -1
+; CHECK-BE-NEXT: subfe r3, r4, r3
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llnesll_store:
ret void
}
-define void @test_llnesll_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_llnesll_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llnesll_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llnesll_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llnesll_sext_store:
ret void
}
-define void @test_llnesll_z_store(i64 %a) {
+define dso_local void @test_llnesll_z_store(i64 %a) {
; CHECK-LABEL: test_llnesll_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llnesll_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llnesll_z_store:
ret void
}
-define void @test_llnesll_sext_z_store(i64 %a) {
+define dso_local void @test_llnesll_sext_z_store(i64 %a) {
; CHECK-LABEL: test_llnesll_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llnesll_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llnesll_sext_z_store:
; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \
; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
-@glob = local_unnamed_addr global i64 0, align 8
+@glob = dso_local local_unnamed_addr global i64 0, align 8
define i64 @test_llneull(i64 %a, i64 %b) {
; CHECK-LABEL: test_llneull:
ret i64 %conv1
}
-define void @test_llneull_store(i64 %a, i64 %b) {
+define dso_local void @test_llneull_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llneull_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llneull_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
-; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
+; CHECK-BE-NEXT: addic r4, r3, -1
+; CHECK-BE-NEXT: subfe r3, r4, r3
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llneull_store:
ret void
}
-define void @test_llneull_sext_store(i64 %a, i64 %b) {
+define dso_local void @test_llneull_sext_store(i64 %a, i64 %b) {
; CHECK-LABEL: test_llneull_sext_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xor r3, r3, r4
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llneull_sext_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r5, r2, .LC0@toc@ha
; CHECK-BE-NEXT: xor r3, r3, r4
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r5)
+; CHECK-BE-NEXT: addis r5, r2, glob@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r5)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llneull_sext_store:
ret void
}
-define void @test_llneull_z_store(i64 %a) {
+define dso_local void @test_llneull_z_store(i64 %a) {
; CHECK-LABEL: test_llneull_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: addic r5, r3, -1
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llneull_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: addic r5, r3, -1
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r5, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llneull_z_store:
ret void
}
-define void @test_llneull_sext_z_store(i64 %a) {
+define dso_local void @test_llneull_sext_z_store(i64 %a) {
; CHECK-LABEL: test_llneull_sext_z_store:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: subfic r3, r3, 0
; CHECK-NEXT: blr
; CHECK-BE-LABEL: test_llneull_sext_z_store:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-BE-NEXT: subfic r3, r3, 0
-; CHECK-BE-NEXT: ld r4, .LC0@toc@l(r4)
+; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha
; CHECK-BE-NEXT: subfe r3, r3, r3
-; CHECK-BE-NEXT: std r3, 0(r4)
+; CHECK-BE-NEXT: std r3, glob@toc@l(r4)
; CHECK-BE-NEXT: blr
;
; CHECK-LE-LABEL: test_llneull_sext_z_store:
; RUN: llc -verify-machineinstrs -O0 < %s -mtriple=ppc32-- -mcpu=ppc | FileCheck -check-prefix=OPT0-PPC32 %s
; RUN: llc -relocation-model=pic -verify-machineinstrs -O0 < %s -mtriple=ppc32-- -mcpu=ppc | FileCheck -check-prefix=OPT0-PPC32-PIC %s
-@a = thread_local global i32 0, align 4
+@a = dso_local thread_local global i32 0, align 4
;OPT0-LABEL: localexec:
;OPT1-LABEL: localexec:
-define i32 @localexec() nounwind {
+define dso_local i32 @localexec() nounwind {
entry:
;OPT0: addis [[REG1:[1-9][0-9]*]], 13, a@tprel@ha
;OPT0-NEXT: addi [[REG2:[1-9][0-9]*]], [[REG1]], a@tprel@l
@a2 = external thread_local(initialexec) global i32
-define signext i32 @main2() nounwind {
+define dso_local signext i32 @main2() nounwind {
entry:
%retval = alloca i32, align 4
store i32 0, i32* %retval