https://github.com/nicebert created https://github.com/llvm/llvm-project/pull/205775
Enable -fopenmp-assume-teams-oversubscription and -fopenmp-assume-threads-oversubscription by default under -fopenmp-target-fast. Adds driver test coverage for both. Split out of #205325 as a standalone change. >From 2800c1d986a4fc13a890a1954e13d3e2f3e85cc7 Mon Sep 17 00:00:00 2001 From: Nicole Aschenbrenner <[email protected]> Date: Tue, 9 Jun 2026 10:06:13 -0500 Subject: [PATCH] [OpenMP] target-fast implies teams/threads oversubscription Enable -fopenmp-assume-teams-oversubscription and -fopenmp-assume-threads-oversubscription by default under -fopenmp-target-fast. This is groundwork for the upcoming no-loop support, which depends on these assumptions being in effect. Adds driver test coverage for both. --- clang/lib/Driver/ToolChains/Clang.cpp | 4 ++-- clang/test/Driver/openmp-target-fast-flag.c | 22 ++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 418d540895681..61eb5a0bd93ce 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6983,11 +6983,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // thread and team counts in the device. if (Args.hasFlag(options::OPT_fopenmp_assume_teams_oversubscription, options::OPT_fno_openmp_assume_teams_oversubscription, - /*Default=*/false)) + /*Default=*/TargetFastUsed)) CmdArgs.push_back("-fopenmp-assume-teams-oversubscription"); if (Args.hasFlag(options::OPT_fopenmp_assume_threads_oversubscription, options::OPT_fno_openmp_assume_threads_oversubscription, - /*Default=*/false)) + /*Default=*/TargetFastUsed)) CmdArgs.push_back("-fopenmp-assume-threads-oversubscription"); // Handle -fopenmp-assume-no-thread-state (implied by target-fast) diff --git a/clang/test/Driver/openmp-target-fast-flag.c b/clang/test/Driver/openmp-target-fast-flag.c index 0390790b3f533..d6b0c262f8431 100644 --- a/clang/test/Driver/openmp-target-fast-flag.c +++ b/clang/test/Driver/openmp-target-fast-flag.c @@ -1,25 +1,25 @@ // REQUIRES: x86-registered-target, amdgpu-registered-target // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib %s -O0 2>&1 \ -// RUN: | FileCheck -check-prefixes=DefaultTFast,DefaultTState,DefaultNoNestParallel %s +// RUN: | FileCheck -check-prefixes=DefaultTFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O0 -fopenmp-target-fast %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=TState,NestParallel %s +// RUN: | FileCheck -check-prefixes=TState,NestParallel,TeamsOver,ThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O3 %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=O3,DefaultTFast,DefaultTState,DefaultNoNestParallel %s +// RUN: | FileCheck -check-prefixes=O3,DefaultTFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O3 -fno-openmp-target-fast %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=O3,DefaultTState,DefaultNoNestParallel %s +// RUN: | FileCheck -check-prefixes=O3,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -Ofast %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=OFast,TState,NestParallel %s +// RUN: | FileCheck -check-prefixes=OFast,TState,NestParallel,TeamsOver,ThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -Ofast -fno-openmp-target-fast %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=OFast,DefaultTState,DefaultNoNestParallel %s +// RUN: | FileCheck -check-prefixes=OFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver %s // RUN: %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O0 -fno-openmp-target-fast -fopenmp-target-fast %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=TState,NestParallel %s +// RUN: | FileCheck -check-prefixes=TState,NestParallel,TeamsOver,ThreadsOver %s // O3: -O3 // OFast: -Ofast @@ -33,3 +33,11 @@ // NestParallel: "-fopenmp-assume-no-nested-parallelism" // NestParallel-NOT: "-fno-openmp-assume-no-nested-parallelism" // DefaultNoNestParallel-NOT: {{"-f(-no-)?openmp-assume-no-nested-parallelism"}} + +// TeamsOver: "-fopenmp-assume-teams-oversubscription" +// TeamsOver-NOT: "-fno-openmp-assume-teams-oversubscription" +// DefaultTeamsOver-NOT: {{"-f(no-)?openmp-assume-teams-oversubscription"}} + +// ThreadsOver: "-fopenmp-assume-threads-oversubscription" +// ThreadsOver-NOT: "-fno-openmp-assume-threads-oversubscription" +// DefaultThreadsOver-NOT: {{"-f(no-)?openmp-assume-threads-oversubscription"}} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
