81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -codegenprepare -S -mtriple=riscv64 < %s | FileCheck %s3 4define i8 @hoist_add(i8 %x) {5; CHECK-LABEL: define i8 @hoist_add(6; CHECK-SAME: i8 [[X:%.*]]) {7; CHECK-NEXT: entry:8; CHECK-NEXT: [[INC:%.*]] = add i8 [[X]], 19; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i8 [[INC]], 010; CHECK-NEXT: br i1 [[TMP0]], label [[EXIT:%.*]], label [[IF_THEN:%.*]]11; CHECK: if.then:12; CHECK-NEXT: br label [[EXIT]]13; CHECK: exit:14; CHECK-NEXT: [[RETVAL:%.*]] = phi i8 [ [[INC]], [[IF_THEN]] ], [ -1, [[ENTRY:%.*]] ]15; CHECK-NEXT: ret i8 [[RETVAL]]16;17entry:18 %cmp = icmp eq i8 %x, -119 br i1 %cmp, label %exit, label %if.then20 21if.then:22 %inc = add nuw nsw i8 %x, 123 br label %exit24 25exit:26 %retval = phi i8 [ %inc, %if.then ], [ -1, %entry ]27 ret i8 %retval28}29 30define i8 @hoist_lshr(i8 %x) {31; CHECK-LABEL: define i8 @hoist_lshr(32; CHECK-SAME: i8 [[X:%.*]]) {33; CHECK-NEXT: entry:34; CHECK-NEXT: [[INC:%.*]] = lshr i8 [[X]], 335; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i8 [[INC]], 036; CHECK-NEXT: br i1 [[TMP0]], label [[EXIT:%.*]], label [[IF_THEN:%.*]]37; CHECK: if.then:38; CHECK-NEXT: br label [[EXIT]]39; CHECK: exit:40; CHECK-NEXT: [[RETVAL:%.*]] = phi i8 [ [[INC]], [[IF_THEN]] ], [ -1, [[ENTRY:%.*]] ]41; CHECK-NEXT: ret i8 [[RETVAL]]42;43entry:44 %cmp = icmp ult i8 %x, 845 br i1 %cmp, label %exit, label %if.then46 47if.then:48 %inc = lshr exact i8 %x, 349 br label %exit50 51exit:52 %retval = phi i8 [ %inc, %if.then ], [ -1, %entry ]53 ret i8 %retval54}55 56define i8 @nomove_add(i8 %x) {57; CHECK-LABEL: define i8 @nomove_add(58; CHECK-SAME: i8 [[X:%.*]]) {59; CHECK-NEXT: entry:60; CHECK-NEXT: [[INC:%.*]] = add i8 [[X]], 161; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i8 [[INC]], 062; CHECK-NEXT: br i1 [[TMP0]], label [[EXIT:%.*]], label [[IF_THEN:%.*]]63; CHECK: if.then:64; CHECK-NEXT: br label [[EXIT]]65; CHECK: exit:66; CHECK-NEXT: [[RETVAL:%.*]] = phi i8 [ [[INC]], [[IF_THEN]] ], [ -1, [[ENTRY:%.*]] ]67; CHECK-NEXT: ret i8 [[RETVAL]]68;69entry:70 %inc = add nuw nsw i8 %x, 171 %cmp = icmp eq i8 %x, -172 br i1 %cmp, label %exit, label %if.then73 74if.then:75 br label %exit76 77exit:78 %retval = phi i8 [ %inc, %if.then ], [ -1, %entry ]79 ret i8 %retval80}81