1! Tests for 2.9.3.1 Simd and target dependent defult alignment for x86 2! REQUIRES: x86-registered-target 3! RUN: %flang_fc1 -triple x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -target-cpu x86-64 %s -o - | FileCheck --check-prefixes=DEFAULT %s 4! 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 5! 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 6!DEFAULT: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref 7!DEFAULT-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr 8!DEFAULT-SAME: {__address:i64}>> {fir.bindc_name = "a"}) { 9!DEFAULT: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 10!DEFAULT-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : 11!DEFAULT-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.dscope) -> 12!DEFAULT-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, 13!DEFAULT-SAME: !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) 14!AVX: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref 15!AVX-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr 16!AVX-SAME: {__address:i64}>> {fir.bindc_name = "a"}) { 17!AVX: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 18!AVX-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : 19!AVX-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.dscope) -> 20!AVX-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, 21!AVX-SAME: !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) 22!AVX512F: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref 23!AVX512F-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr 24!AVX512F-SAME: {__address:i64}>> {fir.bindc_name = "a"}) { 25!AVX512F: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %0 26!AVX512F-SAME: {uniq_name = "_QFsimdloop_aligned_cptrEa"} : 27!AVX512F-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.dscope) -> 28!AVX512F-SAME: (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, 29!AVX512F-SAME: !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) 30subroutine simdloop_aligned_cptr(A) 31 use iso_c_binding 32 integer :: i 33 type (c_ptr) :: A 34 !DEFAULT: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref 35 !DEFAULT-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> 36 !DEFAULT-SAME: -> 128 : i64) 37 !AVX: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref 38 !AVX-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> 39 !AVX-SAME: -> 256 : i64) 40 !AVX512F: omp.simd aligned(%[[A_DECL]]#1 : !fir.ref 41 !AVX512F-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> 42 !AVX512F-SAME: -> 512 : i64) 43 !$OMP SIMD ALIGNED(A) 44 do i = 1, 10 45 call c_test_call(A) 46 end do 47 !$OMP END SIMD 48end subroutine 49