brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 8594bb6 Raw
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