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