brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · a6909d1 Raw
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