49 lines · plain
1! Tests for 2.9.3.1 Simd and target dependent defult alignment for x862! REQUIRES: x86-registered-target3! RUN: %flang_fc1 -triple x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -target-cpu x86-64 %s -o - | FileCheck --check-prefixes=DEFAULT %s4! 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 %s5! 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 %s6!DEFAULT: func.func @_QPsimdloop_aligned_cptr(%[[ARG_A:.*]]: !fir.ref7!DEFAULT-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr8!DEFAULT-SAME: {__address:i64}>> {fir.bindc_name = "a"}) {9!DEFAULT: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %010!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.ref15!AVX-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr16!AVX-SAME: {__address:i64}>> {fir.bindc_name = "a"}) {17!AVX: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %018!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.ref23!AVX512F-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr24!AVX512F-SAME: {__address:i64}>> {fir.bindc_name = "a"}) {25!AVX512F: %[[A_DECL:.*]]:2 = hlfir.declare %[[ARG_A]] dummy_scope %026!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_binding32 integer :: i33 type (c_ptr) :: A34 !DEFAULT: omp.simd aligned(%[[A_DECL]]#0 : !fir.ref35 !DEFAULT-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>36 !DEFAULT-SAME: -> 128 : i64)37 !AVX: omp.simd aligned(%[[A_DECL]]#0 : !fir.ref38 !AVX-SAME: <!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>39 !AVX-SAME: -> 256 : i64)40 !AVX512F: omp.simd aligned(%[[A_DECL]]#0 : !fir.ref41 !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, 1045 call c_test_call(A)46 end do47 !$OMP END SIMD48end subroutine49