xref: /llvm-project/llvm/test/Transforms/SeparateConstOffsetFromGEP/pr45371-find-either-reset.ll (revision 0dd180a5e374d807be88e189844cebadcdcf3d86)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=separate-const-offset-from-gep < %s | FileCheck %s
3
4@e = external global [4000 x i8], align 1
5
6define void @find_either_reset() {
7; CHECK-LABEL: @find_either_reset(
8; CHECK-NEXT:  entry:
9; CHECK-NEXT:    [[SUB:%.*]] = sub nsw i32 65536, undef
10; CHECK-NEXT:    [[TMP0:%.*]] = trunc i32 [[SUB]] to i8
11; CHECK-NEXT:    [[TMP1:%.*]] = add i8 [[TMP0]], 96
12; CHECK-NEXT:    [[IDXPROM:%.*]] = sext i8 0 to i64
13; CHECK-NEXT:    [[IDXPROM1:%.*]] = sext i8 [[TMP1]] to i64
14; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4000 x i8], ptr @e, i64 [[IDXPROM]], i64 [[IDXPROM1]]
15; CHECK-NEXT:    ret void
16;
17entry:
18  %sub = sub nsw i32 65536, undef
19  %0 = trunc i32 %sub to i8
20  %1 = add i8 %0, -4000
21  %arrayidx = getelementptr inbounds [4000 x i8], ptr @e, i8 0, i8 %1
22  ret void
23}
24