bsaleil updated this revision to Diff 304662. bsaleil added a comment. clang-format
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D91200/new/ https://reviews.llvm.org/D91200 Files: clang/lib/Basic/Targets/PPC.cpp clang/test/Driver/ppc-mma-support-check.c clang/test/Preprocessor/init-ppc64.c Index: clang/test/Preprocessor/init-ppc64.c =================================================================== --- clang/test/Preprocessor/init-ppc64.c +++ clang/test/Preprocessor/init-ppc64.c @@ -648,7 +648,7 @@ // PPCFUTURE:#define _ARCH_PWR_FUTURE 1 // PPCFUTURE:#define __MMA__ 1 // -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +mma -target-cpu power9 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-MMA %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +mma -target-cpu power10 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-MMA %s // PPC-MMA:#define __MMA__ 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +float128 -target-cpu power9 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-FLOAT128 %s Index: clang/test/Driver/ppc-mma-support-check.c =================================================================== --- /dev/null +++ clang/test/Driver/ppc-mma-support-check.c @@ -0,0 +1,22 @@ +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr10 -mmma %s 2>&1 | FileCheck %s --check-prefix=HASMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=power10 -mmma %s 2>&1 | FileCheck %s --check-prefix=HASMMA + +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr9 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr8 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr7 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA + +#ifdef __MMA__ +static_assert(false, "MMA enabled"); +#endif + +// HASMMA: MMA enabled +// HASMMA-NOT: option '-mmma' cannot be specified with +// NOMMA: option '-mmma' cannot be specified with + Index: clang/lib/Basic/Targets/PPC.cpp =================================================================== --- clang/lib/Basic/Targets/PPC.cpp +++ clang/lib/Basic/Targets/PPC.cpp @@ -343,6 +343,13 @@ return false; } + if (!(ArchDefs & ArchDefinePwr10) && + llvm::find(FeaturesVec, "+mma") != FeaturesVec.end()) { + // We have MMA on PPC but not power 10 and above. + Diags.Report(diag::err_opt_not_valid_with_opt) << "-mmma" << CPU; + return false; + } + return TargetInfo::initFeatureMap(Features, Diags, CPU, FeaturesVec); }
Index: clang/test/Preprocessor/init-ppc64.c =================================================================== --- clang/test/Preprocessor/init-ppc64.c +++ clang/test/Preprocessor/init-ppc64.c @@ -648,7 +648,7 @@ // PPCFUTURE:#define _ARCH_PWR_FUTURE 1 // PPCFUTURE:#define __MMA__ 1 // -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +mma -target-cpu power9 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-MMA %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +mma -target-cpu power10 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-MMA %s // PPC-MMA:#define __MMA__ 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +float128 -target-cpu power9 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-FLOAT128 %s Index: clang/test/Driver/ppc-mma-support-check.c =================================================================== --- /dev/null +++ clang/test/Driver/ppc-mma-support-check.c @@ -0,0 +1,22 @@ +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr10 -mmma %s 2>&1 | FileCheck %s --check-prefix=HASMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=power10 -mmma %s 2>&1 | FileCheck %s --check-prefix=HASMMA + +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr9 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr8 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mcpu=pwr7 -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA +// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \ +// RUN: -mmma %s 2>&1 | FileCheck %s --check-prefix=NOMMA + +#ifdef __MMA__ +static_assert(false, "MMA enabled"); +#endif + +// HASMMA: MMA enabled +// HASMMA-NOT: option '-mmma' cannot be specified with +// NOMMA: option '-mmma' cannot be specified with + Index: clang/lib/Basic/Targets/PPC.cpp =================================================================== --- clang/lib/Basic/Targets/PPC.cpp +++ clang/lib/Basic/Targets/PPC.cpp @@ -343,6 +343,13 @@ return false; } + if (!(ArchDefs & ArchDefinePwr10) && + llvm::find(FeaturesVec, "+mma") != FeaturesVec.end()) { + // We have MMA on PPC but not power 10 and above. + Diags.Report(diag::err_opt_not_valid_with_opt) << "-mmma" << CPU; + return false; + } + return TargetInfo::initFeatureMap(Features, Diags, CPU, FeaturesVec); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits