brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · d402df3 Raw
105 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=amdgcn-- -S -amdgpu-rewrite-undef-for-phi %s | FileCheck -check-prefix=OPT %s3; RUN: opt -mtriple=amdgcn-- -S -passes=amdgpu-rewrite-undef-for-phi %s | FileCheck -check-prefix=OPT %s4 5define amdgpu_ps float @basic(float inreg %c, i32 %x) #0 {6; OPT-LABEL: @basic(7; OPT-NEXT:  entry:8; OPT-NEXT:    [[CC:%.*]] = icmp slt i32 [[X:%.*]], 09; OPT-NEXT:    br i1 [[CC]], label [[IF:%.*]], label [[END:%.*]]10; OPT:       if:11; OPT-NEXT:    br label [[END]]12; OPT:       end:13; OPT-NEXT:    ret float [[C:%.*]]14;15entry:16  %cc = icmp slt i32 %x, 017  br i1 %cc, label %if, label %end18 19if:20  br label %end21 22end:23  %c2 = phi float [ poison, %if ], [ %c, %entry ]24  ret float %c225}26 27define amdgpu_ps float @with_uniform_region_inside(float inreg %c, i32 inreg %d, i32 %x) #0 {28; OPT-LABEL: @with_uniform_region_inside(29; OPT-NEXT:  entry:30; OPT-NEXT:    [[CC:%.*]] = icmp slt i32 [[X:%.*]], 031; OPT-NEXT:    br i1 [[CC]], label [[IF:%.*]], label [[END:%.*]]32; OPT:       if:33; OPT-NEXT:    [[CC2:%.*]] = icmp slt i32 [[D:%.*]], 034; OPT-NEXT:    br i1 [[CC2]], label [[BB2:%.*]], label [[BB3:%.*]]35; OPT:       bb2:36; OPT-NEXT:    br label [[END]]37; OPT:       bb3:38; OPT-NEXT:    [[CC3:%.*]] = icmp slt i32 [[D]], 239; OPT-NEXT:    br i1 [[CC3]], label [[BB4:%.*]], label [[END]]40; OPT:       bb4:41; OPT-NEXT:    br label [[END]]42; OPT:       end:43; OPT-NEXT:    ret float [[C:%.*]]44;45entry:46  %cc = icmp slt i32 %x, 047  br i1 %cc, label %if, label %end48 49if:50  %cc2 = icmp slt i32 %d, 051  br i1 %cc2, label %bb2, label %bb352 53bb2:54  br label %end55 56bb3:57  %cc3 = icmp slt i32 %d, 258  br i1 %cc3, label %bb4, label %end59 60bb4:61  br label %end62 63end:64  %c2 = phi float [ poison, %bb2 ], [ %c, %bb3 ], [ poison, %bb4 ], [ %c, %entry ]65  ret float %c266}67 68define amdgpu_ps float @exclude_backedge(float inreg %c, i32 %x) #0 {69; OPT-LABEL: @exclude_backedge(70; OPT-NEXT:  entry:71; OPT-NEXT:    [[CC:%.*]] = icmp slt i32 [[X:%.*]], 072; OPT-NEXT:    br i1 [[CC]], label [[END:%.*]], label [[LOOP:%.*]]73; OPT:       loop:74; OPT-NEXT:    [[IND:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[LOOP]] ]75; OPT-NEXT:    [[C2:%.*]] = phi float [ [[C:%.*]], [[ENTRY]] ], [ poison, [[LOOP]] ]76; OPT-NEXT:    [[INC]] = add i32 [[IND]], 177; OPT-NEXT:    [[LOOP_CC:%.*]] = icmp slt i32 [[INC]], 578; OPT-NEXT:    br i1 [[LOOP_CC]], label [[LOOP]], label [[LOOP_END:%.*]]79; OPT:       loop_end:80; OPT-NEXT:    br label [[END]]81; OPT:       end:82; OPT-NEXT:    [[R:%.*]] = phi float [ [[C2]], [[LOOP_END]] ], [ [[C]], [[ENTRY]] ]83; OPT-NEXT:    ret float [[R]]84;85entry:86  %cc = icmp slt i32 %x, 087  br i1 %cc, label %end, label %loop88 89loop:90  %ind = phi i32 [ 0, %entry ], [ %inc, %loop ]91  %c2 = phi float [ %c, %entry ], [ poison, %loop ]92  %inc = add i32 %ind, 193  %loop_cc = icmp slt i32 %inc, 594  br i1 %loop_cc, label %loop, label %loop_end95 96loop_end:97  br label %end98 99end:100  %r = phi float [ %c2, %loop_end ], [ %c, %entry ]101  ret float %r102}103 104attributes #0 = { nounwind noinline }105