[AMDGPU] Add True16 register classes.
[llvm-project.git] / llvm / test / Transforms / GlobalOpt / globalsra-opaque-ptr.ll
blob0591a14c10a24ebac9b72a0a5a773d10d8658715
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
2 ; RUN: opt -S -passes=globalopt < %s | FileCheck %s
4 ; Global SRA should not be performed here (or at least not naively), as
5 ; offset 4 is accessed as both i32 and i64.
7 %T = type { i32, i32, i32, i32 }
8 @g = internal global %T zeroinitializer
11 ; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = internal unnamed_addr global [[T:%.*]] zeroinitializer
13 define void @test1() {
14 ; CHECK-LABEL: @test1(
15 ; CHECK-NEXT:    store i32 1, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 1), align 4
16 ; CHECK-NEXT:    store i32 2, ptr getelementptr inbounds ([[T]], ptr @g, i64 0, i32 2), align 4
17 ; CHECK-NEXT:    ret void
19   store i32 1, ptr getelementptr (%T, ptr @g, i64 0, i32 1)
20   store i32 2, ptr getelementptr (%T, ptr @g, i64 0, i32 2)
21   ret void
24 define i32 @load1() {
25 ; CHECK-LABEL: @load1(
26 ; CHECK-NEXT:    [[V:%.*]] = load i32, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 1), align 4
27 ; CHECK-NEXT:    ret i32 [[V]]
29   %v = load i32, ptr getelementptr (%T, ptr @g, i64 0, i32 1)
30   ret i32 %v
33 define i64 @load2() {
34 ; CHECK-LABEL: @load2(
35 ; CHECK-NEXT:    [[V:%.*]] = load i64, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 2), align 4
36 ; CHECK-NEXT:    ret i64 [[V]]
38   %v = load i64, ptr getelementptr (%T, ptr @g, i64 0, i32 2)
39   ret i64 %v