brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 135084d Raw
86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -O3 -S < %s                    | FileCheck %s3; RUN: opt -passes="default<O3>" -S < %s  | FileCheck %s4 5define void @foo(i1 %which, i32 %a, i32 %b, ptr %result) {6; CHECK-LABEL: @foo(7; CHECK-NEXT:  entry:8; CHECK-NEXT:    [[TMP0:%.*]] = sub i32 0, [[B:%.*]]9; CHECK-NEXT:    [[Z_V_P:%.*]] = select i1 [[WHICH:%.*]], i32 [[B]], i32 [[TMP0]]10; CHECK-NEXT:    [[Z_V:%.*]] = add i32 [[Z_V_P]], [[A:%.*]]11; CHECK-NEXT:    [[Z:%.*]] = zext i32 [[Z_V]] to i6412; CHECK-NEXT:    [[C:%.*]] = load i64, ptr [[RESULT:%.*]], align 413; CHECK-NEXT:    [[VALUE:%.*]] = add i64 [[C]], [[Z]]14; CHECK-NEXT:    store i64 [[VALUE]], ptr [[RESULT]], align 415; CHECK-NEXT:    ret void16;17entry:18  %x = add i32 %a, %b19  %x2 = zext i32 %x to i6420  br i1 %which, label %final, label %delay21 22delay:23  %y = sub i32 %a, %b24  %y2 = zext i32 %y to i6425  br label %final26 27final:28  %z = phi i64 [ %x2, %entry ], [ %y2, %delay ]29  %c = load i64, ptr %result30  %value = add i64 %z, %c31  store i64 %value, ptr %result32  ret void33}34 35define void @bar(i1 %which, i32 %a, i32 %b, ptr %result) {36; CHECK-LABEL: @bar(37; CHECK-NEXT:  entry:38; CHECK-NEXT:    [[TMP0:%.*]] = sub i32 0, [[B:%.*]]39; CHECK-NEXT:    [[SPEC_SELECT_P:%.*]] = select i1 [[WHICH:%.*]], i32 [[B]], i32 [[TMP0]]40; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = add i32 [[SPEC_SELECT_P]], [[A:%.*]]41; CHECK-NEXT:    [[Z2:%.*]] = zext i32 [[SPEC_SELECT]] to i6442; CHECK-NEXT:    [[C:%.*]] = load i64, ptr [[RESULT:%.*]], align 443; CHECK-NEXT:    [[VALUE:%.*]] = add i64 [[C]], [[Z2]]44; CHECK-NEXT:    store i64 [[VALUE]], ptr [[RESULT]], align 445; CHECK-NEXT:    ret void46;47entry:48  %x = add i32 %a, %b49  br i1 %which, label %final, label %delay50 51delay:52  %y = sub i32 %a, %b53  br label %final54 55final:56  %z = phi i32 [ %x, %entry ], [ %y, %delay ]57  %z2 = zext i32 %z to i6458  %c = load i64, ptr %result59  %value = add i64 %z2, %c60  store i64 %value, ptr %result61  ret void62}63 64define void @foo_opt(i1 %which, i32 %a, i32 %b, ptr nocapture %result) {65; CHECK-LABEL: @foo_opt(66; CHECK-NEXT:  entry:67; CHECK-NEXT:    [[TMP0:%.*]] = sub i32 0, [[B:%.*]]68; CHECK-NEXT:    [[Z_V_P:%.*]] = select i1 [[WHICH:%.*]], i32 [[B]], i32 [[TMP0]]69; CHECK-NEXT:    [[Z_V:%.*]] = add i32 [[Z_V_P]], [[A:%.*]]70; CHECK-NEXT:    [[Z:%.*]] = zext i32 [[Z_V]] to i6471; CHECK-NEXT:    [[C:%.*]] = load i64, ptr [[RESULT:%.*]], align 472; CHECK-NEXT:    [[VALUE:%.*]] = add i64 [[C]], [[Z]]73; CHECK-NEXT:    store i64 [[VALUE]], ptr [[RESULT]], align 474; CHECK-NEXT:    ret void75;76entry:77  %0 = sub i32 0, %b78  %z.v.p = select i1 %which, i32 %b, i32 %079  %z.v = add i32 %z.v.p, %a80  %z = zext i32 %z.v to i6481  %c = load i64, ptr %result, align 482  %value = add i64 %c, %z83  store i64 %value, ptr %result, align 484  ret void85}86