|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
2 | 2 | ; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' %s | FileCheck %s |
3 | 3 |
|
4 | | - |
5 | 4 | target triple = "x86_64-unknown-linux" |
6 | 5 |
|
7 | 6 | declare i1 @cond(float) |
8 | 7 |
|
9 | | -define void @test(ptr %src) { |
10 | | -; CHECK-LABEL: define void @test( |
| 8 | +define void @scaled_reg_does_not_dominate_insert_point(ptr %src) { |
| 9 | +; CHECK-LABEL: define void @scaled_reg_does_not_dominate_insert_point( |
11 | 10 | ; CHECK-SAME: ptr [[SRC:%.*]]) { |
12 | 11 | ; CHECK-NEXT: [[BB:.*]]: |
13 | 12 | ; CHECK-NEXT: br label %[[LOOP:.*]] |
|
46 | 45 | exit: |
47 | 46 | ret void |
48 | 47 | } |
| 48 | + |
| 49 | +define void @check_dt_after_modifying_cfg(ptr %dst, i64 %x, i8 %y, i8 %z) { |
| 50 | +; CHECK-LABEL: define void @check_dt_after_modifying_cfg( |
| 51 | +; CHECK-SAME: ptr [[DST:%.*]], i64 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) { |
| 52 | +; CHECK-NEXT: [[ENTRY:.*]]: |
| 53 | +; CHECK-NEXT: [[OFFSET:%.*]] = lshr i64 [[X]], 2 |
| 54 | +; CHECK-NEXT: [[SEL_FROZEN:%.*]] = freeze i8 [[Z]] |
| 55 | +; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[SEL_FROZEN]], 0 |
| 56 | +; CHECK-NEXT: br i1 [[CMP]], label %[[SELECT_END:.*]], label %[[SELECT_FALSE_SINK:.*]] |
| 57 | +; CHECK: [[SELECT_FALSE_SINK]]: |
| 58 | +; CHECK-NEXT: [[SMIN:%.*]] = tail call i8 @llvm.smin.i8(i8 [[Y]], i8 0) |
| 59 | +; CHECK-NEXT: br label %[[SELECT_END]] |
| 60 | +; CHECK: [[SELECT_END]]: |
| 61 | +; CHECK-NEXT: [[SEL:%.*]] = phi i8 [ 0, %[[ENTRY]] ], [ [[SMIN]], %[[SELECT_FALSE_SINK]] ] |
| 62 | +; CHECK-NEXT: [[SUNKADDR:%.*]] = getelementptr i8, ptr [[DST]], i64 [[OFFSET]] |
| 63 | +; CHECK-NEXT: store i8 [[SEL]], ptr [[SUNKADDR]], align 1 |
| 64 | +; CHECK-NEXT: ret void |
| 65 | +; |
| 66 | +entry: |
| 67 | + %offset = lshr i64 %x, 2 |
| 68 | + %gep.dst = getelementptr i8, ptr %dst, i64 %offset |
| 69 | + %smin = tail call i8 @llvm.smin.i8(i8 %y, i8 0) |
| 70 | + %cmp = icmp slt i8 %z, 0 |
| 71 | + %sel = select i1 %cmp, i8 0, i8 %smin |
| 72 | + store i8 %sel, ptr %gep.dst, align 1 |
| 73 | + ret void |
| 74 | +} |
| 75 | + |
| 76 | +declare i8 @llvm.smin.i8(i8, i8) #0 |
0 commit comments