35 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -S -passes=instcombine < %s | FileCheck %s3 4define i64 @func(i32 %p, i1 %cmp1) {5; CHECK-LABEL: define i64 @func(6; CHECK-SAME: i32 [[P:%.*]], i1 [[CMP1:%.*]]) {7; CHECK-NEXT: entry:8; CHECK-NEXT: [[NOT:%.*]] = xor i32 [[P]], -19; CHECK-NEXT: br label [[FOR_BODY:%.*]]10; CHECK: for.body:11; CHECK-NEXT: [[P0:%.*]] = phi i32 [ [[NOT]], [[ENTRY:%.*]] ], [ [[CONV:%.*]], [[FOR_BODY]] ]12; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP1]], i32 0, i32 -123155896313; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[COND]], [[P0]]14; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i32 [[XOR]], 115; CHECK-NEXT: [[CONV]] = zext i1 [[CMP2]] to i3216; CHECK-NEXT: br i1 [[CMP2]], label [[FOR_BODY]], label [[FOR_EXIT:%.*]]17; CHECK: for.exit:18; CHECK-NEXT: ret i64 019;20entry:21 %not = xor i32 %p, -122 br label %for.body23 24for.body:25 %p0 = phi i32 [ %not, %entry ], [ %conv, %for.body ]26 %cond = select i1 %cmp1, i32 0, i32 -123155896327 %xor = xor i32 %cond, %p028 %cmp2 = icmp ne i32 %xor, 129 %conv = zext i1 %cmp2 to i3230 br i1 %cmp2, label %for.body, label %for.exit31 32for.exit:33 ret i64 034}35