brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · 8c025ab Raw
269 lines · plain
1! This test checks lowering of OpenMP compound (combined and composite) loop2! constructs.3 4! RUN: bbc -fopenmp -emit-hlfir %s -o - | FileCheck %s5! RUN: %flang_fc1 -fopenmp -emit-hlfir %s -o - | FileCheck %s6 7program main8  integer :: i,j9 10  ! TODO When composite constructs are supported add:11  ! - TASKLOOP SIMD12 13  ! ----------------------------------------------------------------------------14  ! DISTRIBUTE PARALLEL DO15  ! ----------------------------------------------------------------------------16  !$omp teams17 18  ! CHECK: omp.parallel19  ! CHECK: omp.distribute20  ! CHECK-NEXT: omp.wsloop21  ! CHECK-NEXT: omp.loop_nest22  !$omp distribute parallel do23  do i = 1, 1024  end do25  !$omp end distribute parallel do26 27  !$omp end teams28 29  ! ----------------------------------------------------------------------------30  ! DISTRIBUTE PARALLEL DO SIMD31  ! ----------------------------------------------------------------------------32  !$omp teams33 34  ! CHECK: omp.parallel35  ! CHECK: omp.distribute36  ! CHECK-NEXT: omp.wsloop37  ! CHECK-NEXT: omp.simd38  ! CHECK-NEXT: omp.loop_nest39  !$omp distribute parallel do simd40  do i = 1, 1041  end do42  !$omp end distribute parallel do simd43 44  !$omp end teams45 46  ! ----------------------------------------------------------------------------47  ! DISTRIBUTE SIMD48  ! ----------------------------------------------------------------------------49  !$omp teams50 51  ! CHECK: omp.distribute52  ! CHECK-NEXT: omp.simd53  ! CHECK-NEXT: omp.loop_nest54  !$omp distribute simd55  do i = 1, 1056  end do57  !$omp end distribute simd58 59  !$omp end teams60 61  ! ----------------------------------------------------------------------------62  ! DO SIMD63  ! ----------------------------------------------------------------------------64  ! CHECK: omp.wsloop65  ! CHECK-NEXT: omp.simd66  ! CHECK-NEXT: omp.loop_nest67  !$omp do simd68  do i = 1, 1069  end do70  !$omp end do simd71 72  ! ----------------------------------------------------------------------------73  ! PARALLEL DO SIMD74  ! ----------------------------------------------------------------------------75  ! CHECK: omp.parallel76  ! CHECK: omp.wsloop77  ! CHECK-NEXT: omp.simd78  ! CHECK-NEXT: omp.loop_nest79  !$omp parallel do simd80  do i = 1, 1081  end do82  !$omp end parallel do simd83 84  ! ----------------------------------------------------------------------------85  ! PARALLEL DO86  ! ----------------------------------------------------------------------------87  ! CHECK: omp.parallel88  ! CHECK: omp.wsloop89  ! CHECK-NEXT: omp.loop_nest90  !$omp parallel do91  do i = 1, 1092  end do93  !$omp end parallel do94 95  ! ----------------------------------------------------------------------------96  ! TARGET PARALLEL DO SIMD97  ! ----------------------------------------------------------------------------98  ! CHECK: omp.target99  ! CHECK: omp.parallel100  ! CHECK: omp.wsloop101  ! CHECK-NEXT: omp.simd102  ! CHECK-NEXT: omp.loop_nest103  !$omp target parallel do simd104  do i = 1, 10105  end do106  !$omp end target parallel do simd107 108  ! ----------------------------------------------------------------------------109  ! TARGET PARALLEL DO110  ! ----------------------------------------------------------------------------111  ! CHECK: omp.target112  ! CHECK: omp.parallel113  ! CHECK: omp.wsloop114  ! CHECK-NEXT: omp.loop_nest115  !$omp target parallel do116  do i = 1, 10117  end do118  !$omp end target parallel do119 120  ! ----------------------------------------------------------------------------121  ! TARGET SIMD122  ! ----------------------------------------------------------------------------123  ! CHECK: omp.target124  ! CHECK: omp.simd125  ! CHECK-NEXT: omp.loop_nest126  !$omp target simd127  do i = 1, 10128  end do129  !$omp end target simd130 131  ! ----------------------------------------------------------------------------132  ! TARGET TEAMS DISTRIBUTE133  ! ----------------------------------------------------------------------------134  ! CHECK: omp.target135  ! CHECK: omp.teams136  ! CHECK: omp.distribute137  ! CHECK-NEXT: omp.loop_nest138  !$omp target teams distribute139  do i = 1, 10140  end do141  !$omp end target teams distribute142 143  ! ----------------------------------------------------------------------------144  ! TARGET TEAMS DISTRIBUTE PARALLEL DO145  ! ----------------------------------------------------------------------------146  ! CHECK: omp.target147  ! CHECK: omp.teams148  ! CHECK: omp.parallel149  ! CHECK: omp.distribute150  ! CHECK-NEXT: omp.wsloop151  ! CHECK-NEXT: omp.loop_nest152  !$omp target teams distribute parallel do153  do i = 1, 10154  end do155  !$omp end target teams distribute parallel do156 157  ! ----------------------------------------------------------------------------158  ! TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD159  ! ----------------------------------------------------------------------------160  ! CHECK: omp.target161  ! CHECK: omp.teams162  ! CHECK: omp.parallel163  ! CHECK: omp.distribute164  ! CHECK-NEXT: omp.wsloop165  ! CHECK-NEXT: omp.simd166  ! CHECK-NEXT: omp.loop_nest167  !$omp target teams distribute parallel do simd168  do i = 1, 10169  end do170  !$omp end target teams distribute parallel do simd171 172  ! ----------------------------------------------------------------------------173  ! TARGET TEAMS DISTRIBUTE SIMD174  ! ----------------------------------------------------------------------------175  ! CHECK: omp.target176  ! CHECK: omp.teams177  ! CHECK: omp.distribute178  ! CHECK-NEXT: omp.simd179  ! CHECK-NEXT: omp.loop_nest180  !$omp target teams distribute simd181  do i = 1, 10182  end do183  !$omp end target teams distribute simd184 185  ! ----------------------------------------------------------------------------186  ! TEAMS DISTRIBUTE187  ! ----------------------------------------------------------------------------188  ! CHECK: omp.teams189  ! CHECK: omp.distribute190  ! CHECK-NEXT: omp.loop_nest191  !$omp teams distribute192  do i = 1, 10193  end do194  !$omp end teams distribute195 196  ! ----------------------------------------------------------------------------197  ! TEAMS DISTRIBUTE PARALLEL DO198  ! ----------------------------------------------------------------------------199  ! CHECK: omp.teams200  ! CHECK: omp.parallel201  ! CHECK: omp.distribute202  ! CHECK-NEXT: omp.wsloop203  ! CHECK-NEXT: omp.loop_nest204  !$omp teams distribute parallel do205  do i = 1, 10206  end do207  !$omp end teams distribute parallel do208 209  ! ----------------------------------------------------------------------------210  ! TEAMS DISTRIBUTE PARALLEL DO SIMD211  ! ----------------------------------------------------------------------------212  ! CHECK: omp.teams213  ! CHECK: omp.parallel214  ! CHECK: omp.distribute215  ! CHECK-NEXT: omp.wsloop216  ! CHECK-NEXT: omp.simd217  ! CHECK-NEXT: omp.loop_nest218  !$omp teams distribute parallel do simd219  do i = 1, 10220  end do221  !$omp end teams distribute parallel do simd222 223  ! ----------------------------------------------------------------------------224  ! TEAMS DISTRIBUTE SIMD225  ! ----------------------------------------------------------------------------226  ! CHECK: omp.teams227  ! CHECK: omp.distribute228  ! CHECK-NEXT: omp.simd229  ! CHECK-NEXT: omp.loop_nest230  !$omp teams distribute simd231  do i = 1, 10232  end do233  !$omp end teams distribute simd234 235  ! ----------------------------------------------------------------------------236  ! Unstructured control-flow in loop237  ! ----------------------------------------------------------------------------238  ! CHECK:      omp.target239  ! CHECK:      omp.teams240  ! CHECK:      omp.parallel241  ! CHECK:      omp.distribute242  ! CHECK-NEXT: omp.wsloop243  ! CHECK-NEXT: omp.loop_nest244  !245  ! Verify the conrol-flow of the unstructured inner loop.246  ! CHECK:        cf.br ^[[BB1:.*]]247  ! CHECK:      ^[[BB1]]:248  ! CHECK:        cf.br ^[[BB2:.*]]249  ! CHECK:      ^[[BB2]]:250  ! CHECK:        cf.cond_br %{{.*}}, ^[[BB3:.*]], ^[[BB6:.*]]251  ! CHECK:      ^[[BB3]]:252  ! CHECK:        cf.cond_br %{{.*}}, ^[[BB4:.*]], ^[[BB5:.*]]253  ! CHECK:      ^[[BB4]]:254  ! CHECK:        cf.br ^[[BB6]]255  ! CHECK:      ^[[BB5]]:256  ! CHECK:        cf.br ^[[BB2]]257  ! CHECK:      ^[[BB6]]:258  ! CHECK-NEXT:   omp.yield259  !$omp target teams distribute parallel do260  do i = 1, 10261    outerloop: do j = i-1, i+i262      if (j == i) then263        exit outerloop264      end if265    end do outerloop266  end do267  !$omp end target teams distribute parallel do268end program main269