! Tests for 2.9.3.1 Simd and target dependent defult alignment for x86 ! REQUIRES: x86-registered-target ! RUN: %flang_fc1 -triple x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -target-cpu x86-64 %s -o - | FileCheck --check-prefixes=DEFAULT %s ! RUN: %flang_fc1 -triple x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -target-cpu x86-64 -target-feature +avx %s -o - | FileCheck --check-prefixes=AVX %s ! RUN: %flang_fc1 -triple x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -target-cpu x86-64 -target-feature +avx512f %s -o - | FileCheck --check-prefixes=AVX512F %s !DEFAULT: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref !DEFAULT-SAME: > {fir.bindc_name = "a"}) { !DEFAULT: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 !DEFAULT-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : !DEFAULT-SAME: (!fir.ref>, !fir.dscope) -> !DEFAULT-SAME: (!fir.ref>, !DEFAULT-SAME: !fir.ref>) !AVX: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref !AVX-SAME: > {fir.bindc_name = "a"}) { !AVX: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 !AVX-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : !AVX-SAME: (!fir.ref>, !fir.dscope) -> !AVX-SAME: (!fir.ref>, !AVX-SAME: !fir.ref>) !AVX512F: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref !AVX512F-SAME: > {fir.bindc_name = "a"}) { !AVX512F: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 !AVX512F-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : !AVX512F-SAME: (!fir.ref>, !fir.dscope) -> !AVX512F-SAME: (!fir.ref>, !AVX512F-SAME: !fir.ref>) subroutine simdloop_aligned_cptr(A) use iso_c_binding integer :: i type (c_ptr) :: A !DEFAULT: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref !DEFAULT-SAME: > !DEFAULT-SAME: -> 128 : i64) !AVX: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref !AVX-SAME: > !AVX-SAME: -> 256 : i64) !AVX512F: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref !AVX512F-SAME: > !AVX512F-SAME: -> 512 : i64) !$OMP SIMD ALIGNED(A) do i = 1, 10 call c_test_call(A) end do !$OMP END SIMD end subroutine