1c09fbbdcSJohannes Doerfert; RUN: opt -passes=globalopt < %s -S | FileCheck %s 2c09fbbdcSJohannes Doerfert; RUN: opt -passes=globalopt --mtriple=nvptx64 < %s -S | FileCheck %s --check-prefix=GPU 3c09fbbdcSJohannes Doerfert; RUN: opt -passes=globalopt --mtriple=amdgcn < %s -S | FileCheck %s --check-prefix=GPU 4c09fbbdcSJohannes Doerfert; REQUIRES: amdgpu-registered-target, nvptx-registered-target 5c09fbbdcSJohannes Doerfert 6c09fbbdcSJohannes Doerfert; Check that we don't try to set a global initializer for non AS(0) globals. 7c09fbbdcSJohannes Doerfert 8c09fbbdcSJohannes Doerfert@g0 = internal global i16 undef 9c09fbbdcSJohannes Doerfert@g1 = internal addrspace(3) global i16 undef 10c09fbbdcSJohannes Doerfert@g2 = internal addrspace(1) global i16 undef 118d1759c4SNikita Popov; CHECK-NOT: @g0 = 12c09fbbdcSJohannes Doerfert; CHECK: internal unnamed_addr addrspace(3) global i16 undef 13c09fbbdcSJohannes Doerfert; CHECK: internal unnamed_addr addrspace(1) global i16 undef 148d1759c4SNikita Popov; GPU-NOT: @g0 = 15c09fbbdcSJohannes Doerfert; GPU: internal unnamed_addr addrspace(3) global i16 undef 168d1759c4SNikita Popov; GPU-NOT: @g2 = 17c09fbbdcSJohannes Doerfert 18c09fbbdcSJohannes Doerfertdefine void @a() { 19*d586bd5cSNikita Popov store i16 3, ptr @g0, align 8 20*d586bd5cSNikita Popov store i16 5, ptr addrspacecast (ptr addrspace(3) @g1 to ptr), align 8 21*d586bd5cSNikita Popov store i16 7, ptr addrspacecast (ptr addrspace(1) @g2 to ptr), align 8 22c09fbbdcSJohannes Doerfert ret void 23c09fbbdcSJohannes Doerfert} 24c09fbbdcSJohannes Doerfert 25c09fbbdcSJohannes Doerfertdefine i8 @get0() { 26*d586bd5cSNikita Popov %gep = getelementptr i8, ptr @g0, i64 1 27*d586bd5cSNikita Popov %r = load i8, ptr %gep 28c09fbbdcSJohannes Doerfert ret i8 %r 29c09fbbdcSJohannes Doerfert} 30c09fbbdcSJohannes Doerfertdefine i8 @get1() { 31*d586bd5cSNikita Popov %ac = addrspacecast ptr addrspace(3) @g1 to ptr 32*d586bd5cSNikita Popov %gep = getelementptr i8, ptr %ac, i64 1 33*d586bd5cSNikita Popov %r = load i8, ptr %gep 34c09fbbdcSJohannes Doerfert ret i8 %r 35c09fbbdcSJohannes Doerfert} 36c09fbbdcSJohannes Doerfertdefine i8 @get2() { 37*d586bd5cSNikita Popov %ac = addrspacecast ptr addrspace(1) @g2 to ptr 38*d586bd5cSNikita Popov %gep = getelementptr i8, ptr %ac, i64 1 39*d586bd5cSNikita Popov %r = load i8, ptr %gep 40c09fbbdcSJohannes Doerfert ret i8 %r 41c09fbbdcSJohannes Doerfert} 42