1e8f4e41bSAndrew Litteken; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs 29dd9575cSRoman Lebedev; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 3e8f4e41bSAndrew Litteken 4e8f4e41bSAndrew Litteken; Show that we do extract phi nodes from the regions. 5e8f4e41bSAndrew Litteken 6*f4b925eeSMatt Arsenaultdefine void @function1(ptr %a, ptr %b) { 7e8f4e41bSAndrew Littekenentry: 8e8f4e41bSAndrew Litteken %0 = alloca i32, align 4 9*f4b925eeSMatt Arsenault %c = load i32, ptr %0, align 4 10e8f4e41bSAndrew Litteken br label %test1 11e8f4e41bSAndrew Littekentest1: 12*f4b925eeSMatt Arsenault %e = load i32, ptr %0, align 4 13e8f4e41bSAndrew Litteken br label %first 14e8f4e41bSAndrew Littekentest: 15*f4b925eeSMatt Arsenault %d = load i32, ptr %0, align 4 16e8f4e41bSAndrew Litteken br label %first 17e8f4e41bSAndrew Littekenfirst: 18e8f4e41bSAndrew Litteken %1 = phi i32 [ %c, %test ], [ %e, %test1 ] 19*f4b925eeSMatt Arsenault store i32 2, ptr %a, align 4 20*f4b925eeSMatt Arsenault store i32 3, ptr %b, align 4 21e8f4e41bSAndrew Litteken ret void 22e8f4e41bSAndrew Litteken} 23e8f4e41bSAndrew Litteken 24*f4b925eeSMatt Arsenaultdefine void @function2(ptr %a, ptr %b) { 25e8f4e41bSAndrew Littekenentry: 26e8f4e41bSAndrew Litteken %0 = alloca i32, align 4 27*f4b925eeSMatt Arsenault %c = load i32, ptr %0, align 4 28e8f4e41bSAndrew Litteken br label %test1 29e8f4e41bSAndrew Littekentest1: 30*f4b925eeSMatt Arsenault %e = load i32, ptr %0, align 4 31e8f4e41bSAndrew Litteken br label %first 32e8f4e41bSAndrew Littekentest: 33*f4b925eeSMatt Arsenault %d = load i32, ptr %0, align 4 34e8f4e41bSAndrew Litteken br label %first 35e8f4e41bSAndrew Littekenfirst: 36e8f4e41bSAndrew Litteken %1 = phi i32 [ %c, %test ], [ %e, %test1 ] 37*f4b925eeSMatt Arsenault store i32 2, ptr %a, align 4 38*f4b925eeSMatt Arsenault store i32 3, ptr %b, align 4 39e8f4e41bSAndrew Litteken ret void 40e8f4e41bSAndrew Litteken} 41e8f4e41bSAndrew Litteken; CHECK-LABEL: @function1( 42e8f4e41bSAndrew Litteken; CHECK-NEXT: entry: 43e8f4e41bSAndrew Litteken; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 44*f4b925eeSMatt Arsenault; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[A:%.*]], ptr [[B:%.*]]) 45e8f4e41bSAndrew Litteken; CHECK-NEXT: ret void 46e8f4e41bSAndrew Litteken; 47e8f4e41bSAndrew Litteken; 48e8f4e41bSAndrew Litteken; CHECK-LABEL: @function2( 49e8f4e41bSAndrew Litteken; CHECK-NEXT: entry: 50e8f4e41bSAndrew Litteken; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 51*f4b925eeSMatt Arsenault; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[A:%.*]], ptr [[B:%.*]]) 52e8f4e41bSAndrew Litteken; CHECK-NEXT: ret void 53e8f4e41bSAndrew Litteken; 54e8f4e41bSAndrew Litteken; 55e8f4e41bSAndrew Litteken; CHECK: define internal void @outlined_ir_func_0( 56e8f4e41bSAndrew Litteken; CHECK-NEXT: newFuncRoot: 57e8f4e41bSAndrew Litteken; CHECK-NEXT: br label [[ENTRY_TO_OUTLINE:%.*]] 58e8f4e41bSAndrew Litteken; CHECK: entry_to_outline: 59*f4b925eeSMatt Arsenault; CHECK-NEXT: [[C:%.*]] = load i32, ptr [[TMP0:%.*]], align 4 60e8f4e41bSAndrew Litteken; CHECK-NEXT: br label [[TEST1:%.*]] 61e8f4e41bSAndrew Litteken; CHECK: test1: 62*f4b925eeSMatt Arsenault; CHECK-NEXT: [[E:%.*]] = load i32, ptr [[TMP0]], align 4 63e8f4e41bSAndrew Litteken; CHECK-NEXT: br label [[FIRST:%.*]] 64e8f4e41bSAndrew Litteken; CHECK: test: 65*f4b925eeSMatt Arsenault; CHECK-NEXT: [[D:%.*]] = load i32, ptr [[TMP0]], align 4 66e8f4e41bSAndrew Litteken; CHECK-NEXT: br label [[FIRST]] 67e8f4e41bSAndrew Litteken; CHECK: first: 68e8f4e41bSAndrew Litteken; CHECK-NEXT: [[TMP3:%.*]] = phi i32 [ [[C]], [[TEST:%.*]] ], [ [[E]], [[TEST1]] ] 69*f4b925eeSMatt Arsenault; CHECK-NEXT: store i32 2, ptr [[TMP1:%.*]], align 4 70*f4b925eeSMatt Arsenault; CHECK-NEXT: store i32 3, ptr [[TMP2:%.*]], align 4 71e8f4e41bSAndrew Litteken; CHECK-NEXT: br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]] 72e8f4e41bSAndrew Litteken; CHECK: entry_after_outline.exitStub: 73e8f4e41bSAndrew Litteken; CHECK-NEXT: ret void 74e8f4e41bSAndrew Litteken; 75