|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
2 | 2 | ; RUN: opt < %s -passes=instcombine -S | FileCheck %s |
3 | 3 |
|
4 | | -define i8 @src(i8 %arg0) { |
5 | | -; CHECK-LABEL: @src( |
6 | | -; CHECK-NEXT: [[TMP1:%.*]] = shl nuw i8 [[ARG0:%.*]], 1 |
7 | | -; CHECK-NEXT: [[TMP2:%.*]] = call i8 @llvm.umax.i8(i8 [[TMP1]], i8 16) |
8 | | -; CHECK-NEXT: ret i8 [[TMP2]] |
| 4 | +define i8 @src1(i8 %arg0) { |
| 5 | +; CHECK-LABEL: @src1( |
| 6 | +; CHECK-NEXT: [[SHL:%.*]] = shl nuw i8 [[ARG0:%.*]], 1 |
| 7 | +; CHECK-NEXT: [[OUTMAX:%.*]] = call i8 @llvm.umax.i8(i8 [[SHL]], i8 16) |
| 8 | +; CHECK-NEXT: ret i8 [[OUTMAX]] |
9 | 9 | ; |
10 | 10 | %1 = call i8 @llvm.umax.i8(i8 %arg0, i8 1) |
11 | 11 | %2 = shl nuw i8 %1, 1 |
12 | 12 | %3 = call i8 @llvm.umax.i8(i8 %2, i8 16) |
13 | 13 | ret i8 %3 |
14 | 14 | } |
15 | 15 |
|
16 | | -define i8 @tgt(i8 %arg0) { |
17 | | -; CHECK-LABEL: @tgt( |
18 | | -; CHECK-NEXT: [[TMP1:%.*]] = shl nuw i8 [[ARG0:%.*]], 1 |
19 | | -; CHECK-NEXT: [[TMP2:%.*]] = call i8 @llvm.umax.i8(i8 [[TMP1]], i8 16) |
20 | | -; CHECK-NEXT: ret i8 [[TMP2]] |
| 16 | +define i8 @src2(i8 %arg0) { |
| 17 | +; CHECK-LABEL: @src2( |
| 18 | +; CHECK-NEXT: [[INMAX:%.*]] = call i8 @llvm.umax.i8(i8 [[ARG0:%.*]], i8 4) |
| 19 | +; CHECK-NEXT: [[SHL:%.*]] = shl nuw i8 [[INMAX:%.*]], 1 |
| 20 | +; CHECK-NEXT: [[OUTMAX:%.*]] = call i8 @llvm.umax.i8(i8 [[SHL]], i8 10) |
| 21 | +; CHECK-NEXT: ret i8 [[OUTMAX]] |
21 | 22 | ; |
22 | | - %1 = shl nuw i8 %arg0, 1 |
23 | | - %2 = call i8 @llvm.umax.i8(i8 %1, i8 16) |
24 | | - ret i8 %2 |
| 23 | + %1 = call i8 @llvm.umax.i8(i8 %arg0, i8 4) |
| 24 | + %2 = shl nuw i8 %1, 1 |
| 25 | + %3 = call i8 @llvm.umax.i8(i8 %2, i8 10) |
| 26 | + ret i8 %3 |
25 | 27 | } |
26 | 28 |
|
27 | 29 | declare i8 @llvm.umax.i8(i8, i8) |
0 commit comments