
This gets rid of UNRESOLVEDs if nvptx offloading compilation is enabled in
addition to GCN:
PASS: libgomp.c/target-simd-clone-1.c (test for excess errors)
PASS: libgomp.c/target-simd-clone-1.c scan-amdgcn-amdhsa-offload-ipa-dump simdclone "Generated local clone _ZGV.*N.*_addit"
-UNRESOLVED: libgomp.c/target-simd-clone-1.c scan-nvptx-none-offload-ipa-dump simdclone "Generated local clone _ZGV.*N.*_addit"
PASS: libgomp.c/target-simd-clone-1.c scan-amdgcn-amdhsa-offload-ipa-dump simdclone "Generated local clone _ZGV.*M.*_addit"
-UNRESOLVED: libgomp.c/target-simd-clone-1.c scan-nvptx-none-offload-ipa-dump simdclone "Generated local clone _ZGV.*M.*_addit"
PASS: libgomp.c/target-simd-clone-2.c (test for excess errors)
PASS: libgomp.c/target-simd-clone-2.c scan-amdgcn-amdhsa-offload-ipa-dump-not simdclone "Generated .* clone"
-UNRESOLVED: libgomp.c/target-simd-clone-2.c scan-nvptx-none-offload-ipa-dump-not simdclone "Generated .* clone"
PASS: libgomp.c/target-simd-clone-3.c (test for excess errors)
PASS: libgomp.c/target-simd-clone-3.c scan-amdgcn-amdhsa-offload-ipa-dump simdclone "device doesn't match"
-UNRESOLVED: libgomp.c/target-simd-clone-3.c scan-nvptx-none-offload-ipa-dump simdclone "device doesn't match"
PASS: libgomp.c/target-simd-clone-3.c scan-amdgcn-amdhsa-offload-ipa-dump-not simdclone "Generated .* clone"
-UNRESOLVED: libgomp.c/target-simd-clone-3.c scan-nvptx-none-offload-ipa-dump-not simdclone "Generated .* clone"
Minor fix-up for commit 309e2d95e3
'OpenMP: Generate SIMD clones for functions with "declare target"'.
libgomp/
* testsuite/libgomp.c/target-simd-clone-1.c: Restrict
'scan-offload-ipa-dump's to
'only_for_offload_target amdgcn-amdhsa'.
* testsuite/libgomp.c/target-simd-clone-2.c: Likewise.
* testsuite/libgomp.c/target-simd-clone-3.c: Likewise.
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
/* { dg-do link { target { offload_target_amdgcn } } } */
|
|
/* { dg-additional-options "-O2 -foffload-options=-fdump-ipa-simdclone-details" } */
|
|
|
|
/* Test that simd clones for the offload processor are generated for
|
|
functions with "declare target" when enabled by default at -O2. */
|
|
|
|
#pragma omp declare target
|
|
__attribute__ ((__noinline__)) int addit (int a, int b)
|
|
{
|
|
return a + b;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
void callit (int *a, int *b, int *c)
|
|
{
|
|
int i;
|
|
#pragma omp for simd
|
|
for (i = 0; i < 16; i++)
|
|
c[i] = addit (a[i], b[i]);
|
|
}
|
|
#pragma omp end declare target
|
|
|
|
int main (void)
|
|
{
|
|
int aa[16], bb[16], cc[16];
|
|
int i;
|
|
for (i = 0; i < 16; i++)
|
|
{
|
|
aa[i] = i;
|
|
bb[i] = -i;
|
|
}
|
|
callit (aa, bb, cc);
|
|
for (i = 0; i < 16; i++)
|
|
if (cc[i] != 0)
|
|
return 1;
|
|
return 0;
|
|
}
|
|
|
|
/* Although addit has external linkage, we expect clones to be generated as
|
|
for a function with internal linkage. */
|
|
|
|
/* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-ipa-dump "Generated local clone _ZGV.*N.*_addit" "simdclone" } } */
|
|
/* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-ipa-dump "Generated local clone _ZGV.*M.*_addit" "simdclone" } } */
|