xref: /llvm-project/llvm/test/Transforms/IROutliner/outlining-different-globals.ll (revision f4b925ee7078f058602fd323e25f45f1ae91ca34)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
3
4; This test looks at the globals in the regions, and makes sure they are not
5; outlined if they are different values.
6
7@global1 = global i32 1, align 4
8@global2 = global i32 2, align 4
9@global3 = global i32 3, align 4
10@global4 = global i32 4, align 4
11
12define void @outline_globals1() {
13; CHECK-LABEL: @outline_globals1(
14; CHECK-NEXT:  entry:
15; CHECK-NEXT:    call void @outlined_ir_func_0(ptr @global1, ptr @global2)
16; CHECK-NEXT:    ret void
17;
18entry:
19  %0 = load i32, ptr @global1
20  %1 = load i32, ptr @global2
21  %2 = add i32 %0, %1
22  ret void
23}
24
25define void @outline_globals2() {
26; CHECK-LABEL: @outline_globals2(
27; CHECK-NEXT:  entry:
28; CHECK-NEXT:    call void @outlined_ir_func_0(ptr @global3, ptr @global4)
29; CHECK-NEXT:    ret void
30;
31entry:
32  %0 = load i32, ptr @global3
33  %1 = load i32, ptr @global4
34  %2 = add i32 %0, %1
35  ret void
36}
37
38; CHECK: define internal void @outlined_ir_func_0(ptr [[ARG0:%.*]], ptr [[ARG1:%.*]])
39; CHECK: entry_to_outline:
40; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[ARG0]]
41; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[ARG1]]
42; CHECK-NEXT:    [[TMP2:%.*]] = add i32 [[TMP0]], [[TMP1]]
43