https://github.com/lenary updated https://github.com/llvm/llvm-project/pull/102452
>From b125071eeb35ee4a76e126967b7c29d86a1fae56 Mon Sep 17 00:00:00 2001 From: Sam Elliott <quic_aelli...@quicinc.com> Date: Fri, 16 Aug 2024 07:52:53 -0700 Subject: [PATCH 1/2] [clang][test] Split invalid-cpu-note tests This change does two kinds of splits: - Splits each target into a different file. Some targets are left in the same files, such as riscv32/64 and x86/_64 as these tests and lists are very similar. - Splits up the very long 'note:' lines which contain a list of CPUs, using `CHECK-SAME`. There was a note about this not being possible before, but with `--implicit-check-not`, this is now possible -- I have verified that this does the right thing if a single CPU anywhere in the list is left out. These tests had become quite annoying to change when adding a CPU, and I believe this change makes these easier to maintain, and should cut down on conflicts in these files (or at least makes conflicts easier to resolve). I apologise in advance for downstream conflicts, but hopefully that's a small amount of short term pain, in return for fewer conflicts in future. --- clang/test/Misc/target-invalid-cpu-note.c | 96 ----- .../Misc/target-invalid-cpu-note/aarch64.c | 92 +++++ .../Misc/target-invalid-cpu-note/amdgcn.c | 76 ++++ clang/test/Misc/target-invalid-cpu-note/arm.c | 100 +++++ clang/test/Misc/target-invalid-cpu-note/avr.c | 322 +++++++++++++++ clang/test/Misc/target-invalid-cpu-note/bpf.c | 15 + .../Misc/target-invalid-cpu-note/hexagon.c | 21 + .../test/Misc/target-invalid-cpu-note/lanai.c | 9 + .../test/Misc/target-invalid-cpu-note/mips.c | 26 ++ .../test/Misc/target-invalid-cpu-note/nvptx.c | 80 ++++ .../Misc/target-invalid-cpu-note/powerpc.c | 73 ++++ .../test/Misc/target-invalid-cpu-note/r600.c | 34 ++ .../test/Misc/target-invalid-cpu-note/riscv.c | 91 +++++ .../test/Misc/target-invalid-cpu-note/sparc.c | 54 +++ .../Misc/target-invalid-cpu-note/systemz.c | 22 + .../test/Misc/target-invalid-cpu-note/wasm.c | 11 + clang/test/Misc/target-invalid-cpu-note/x86.c | 384 ++++++++++++++++++ 17 files changed, 1410 insertions(+), 96 deletions(-) delete mode 100644 clang/test/Misc/target-invalid-cpu-note.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/aarch64.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/amdgcn.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/arm.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/avr.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/bpf.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/hexagon.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/lanai.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/mips.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/nvptx.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/powerpc.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/r600.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/riscv.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/sparc.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/systemz.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/wasm.c create mode 100644 clang/test/Misc/target-invalid-cpu-note/x86.c diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c deleted file mode 100644 index b1783f3917a350..00000000000000 --- a/clang/test/Misc/target-invalid-cpu-note.c +++ /dev/null @@ -1,96 +0,0 @@ -// Use CHECK-NEXT instead of multiple CHECK-SAME to ensure we will fail if there is anything extra in the output. -// RUN: not %clang_cc1 -triple armv5--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix ARM -// ARM: error: unknown target CPU 'not-a-cpu' -// ARM-NEXT: note: valid target CPU values are: arm8, arm810, strongarm, strongarm110, strongarm1100, strongarm1110, arm7tdmi, arm7tdmi-s, arm710t, arm720t, arm9, arm9tdmi, arm920, arm920t, arm922t, arm940t, ep9312, arm10tdmi, arm1020t, arm9e, arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e, arm926ej-s, arm1136j-s, arm1136jf-s, mpcore, mpcorenovfp, arm1176jz-s, arm1176jzf-s, arm1156t2-s, arm1156t2f-s, cortex-m0, cortex-m0plus, cortex-m1, sc000, cortex-a5, cortex-a7, cortex-a8, cortex-a9, cortex-a12, cortex-a15, cortex-a17, krait, cortex-r4, cortex-r4f, cortex-r5, cortex-r7, cortex-r8, cortex-r52, cortex-r52plus, sc300, cortex-m3, cortex-m4, cortex-m7, cortex-m23, cortex-m33, cortex-m35p, cortex-m55, cortex-m85, cortex-m52, cortex-a32, cortex-a35, cortex-a53, cortex-a55, cortex-a57, cortex-a72, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78ae, cortex-a78c, cortex-a710, cortex-x1, cortex-x1c, neoverse-n1, neoverse-n2, neoverse-v1, cyclone, exynos-m3, exynos-m4, exynos-m5, kryo, iwmmxt, xscale, swift{{$}} - -// RUN: not %clang_cc1 -triple arm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AARCH64 -// AARCH64: error: unknown target CPU 'not-a-cpu' -// AARCH64-NEXT: note: valid target CPU values are: a64fx, ampere1, ampere1a, ampere1b, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-a17, apple-a7, apple-a8, apple-a9, apple-m1, apple-m2, apple-m3, apple-m4, apple-s4, apple-s5, carmel, cobalt-100, cortex-a34, cortex-a35, cortex-a510, cortex-a520, cortex-a520ae, cortex-a53, cortex-a55, cortex-a57, cortex-a65, cortex-a65ae, cortex-a710, cortex-a715, cortex-a72, cortex-a720, cortex-a720ae, cortex-a725, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78ae, cortex-a78c, cortex-r82, cortex-r82ae, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, cortex-x4, cortex-x925, cyclone, exynos-m3, exynos-m4, exynos-m5, falkor, generic, grace, kryo, neoverse-512tvb, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-n3, neoverse-v1, neoverse-v2, neoverse-v3, neoverse-v3ae, oryon-1, saphira, thunderx, thunderx2t99, thunderx3t110, thunderxt81, thunderxt83, thunderxt88, tsv110{{$}} - -// RUN: not %clang_cc1 -triple arm64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_AARCH64 -// TUNE_AARCH64: error: unknown target CPU 'not-a-cpu' -// TUNE_AARCH64-NEXT: note: valid target CPU values are: a64fx, ampere1, ampere1a, ampere1b, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14, apple-a15, apple-a16, apple-a17, apple-a7, apple-a8, apple-a9, apple-m1, apple-m2, apple-m3, apple-m4, apple-s4, apple-s5, carmel, cobalt-100, cortex-a34, cortex-a35, cortex-a510, cortex-a520, cortex-a520ae, cortex-a53, cortex-a55, cortex-a57, cortex-a65, cortex-a65ae, cortex-a710, cortex-a715, cortex-a72, cortex-a720, cortex-a720ae, cortex-a725, cortex-a73, cortex-a75, cortex-a76, cortex-a76ae, cortex-a77, cortex-a78, cortex-a78ae, cortex-a78c, cortex-r82, cortex-r82ae, cortex-x1, cortex-x1c, cortex-x2, cortex-x3, cortex-x4, cortex-x925, cyclone, exynos-m3, exynos-m4, exynos-m5, falkor, generic, grace, kryo, neoverse-512tvb, neoverse-e1, neoverse-n1, neoverse-n2, neoverse-n3, neoverse-v1, neoverse-v2, neoverse-v3, neoverse-v3ae, oryon-1, saphira, thunderx, thunderx2t99, thunderx3t110, thunderxt81, thunderxt83, thunderxt88, tsv110{{$}} - -// RUN: not %clang_cc1 -triple i386--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix X86 -// X86: error: unknown target CPU 'not-a-cpu' -// X86-NEXT: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3, i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3, pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott, nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, raptorlake, meteorlake, arrowlake, arrowlake-s, lunarlake, gracemont, pantherlake, sierraforest, grandridge, graniterapids, graniterapids-d, emeraldrapids, clearwaterforest, knl, knm, lakemont, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, x86-64, x86-64-v2, x86-64-v3, x86-64-v4, geode{{$}} - -// RUN: not %clang_cc1 -triple x86_64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix X86_64 -// X86_64: error: unknown target CPU 'not-a-cpu' -// X86_64-NEXT: note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, raptorlake, meteorlake, arrowlake, arrowlake-s, lunarlake, gracemont, pantherlake, sierraforest, grandridge, graniterapids, graniterapids-d, emeraldrapids, clearwaterforest, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, x86-64, x86-64-v2, x86-64-v3, x86-64-v4{{$}} - -// RUN: not %clang_cc1 -triple i386--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86 -// TUNE_X86: error: unknown target CPU 'not-a-cpu' -// TUNE_X86-NEXT: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3, i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3, pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott, nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, raptorlake, meteorlake, arrowlake, arrowlake-s, lunarlake, gracemont, pantherlake, sierraforest, grandridge, graniterapids, graniterapids-d, emeraldrapids, clearwaterforest, knl, knm, lakemont, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, x86-64, geode{{$}} - -// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86_64 -// TUNE_X86_64: error: unknown target CPU 'not-a-cpu' -// TUNE_X86_64-NEXT: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3, i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3, pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott, nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, raptorlake, meteorlake, arrowlake, arrowlake-s, lunarlake, gracemont, pantherlake, sierraforest, grandridge, graniterapids, graniterapids-d, emeraldrapids, clearwaterforest, knl, knm, lakemont, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, x86-64, geode{{$}} - -// RUN: not %clang_cc1 -triple nvptx--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix NVPTX -// NVPTX: error: unknown target CPU 'not-a-cpu' -// NVPTX-NEXT: note: valid target CPU values are: sm_20, sm_21, sm_30, sm_32, sm_35, sm_37, sm_50, sm_52, sm_53, sm_60, sm_61, sm_62, sm_70, sm_72, sm_75, sm_80, sm_86, sm_87, sm_89, sm_90, sm_90a, gfx600, gfx601, gfx602, gfx700, gfx701, gfx702, gfx703, gfx704, gfx705, gfx801, gfx802, gfx803, gfx805, gfx810, gfx9-generic, gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a, gfx90c, gfx940, gfx941, gfx942, gfx10-1-generic, gfx1010, gfx1011, gfx1012, gfx1013, gfx10-3-generic, gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, gfx1036, gfx11-generic, gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, gfx12-generic, gfx1200, gfx1201, amdgcnspirv{{$}} - -// RUN: not %clang_cc1 -triple r600--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix R600 -// R600: error: unknown target CPU 'not-a-cpu' -// R600-NEXT: note: valid target CPU values are: r600, rv630, rv635, r630, rs780, rs880, rv610, rv620, rv670, rv710, rv730, rv740, rv770, cedar, palm, cypress, hemlock, juniper, redwood, sumo, sumo2, barts, caicos, aruba, cayman, turks{{$}} - -// RUN: not %clang_cc1 -triple amdgcn--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AMDGCN -// AMDGCN: error: unknown target CPU 'not-a-cpu' -// AMDGCN-NEXT: note: valid target CPU values are: gfx600, tahiti, gfx601, pitcairn, verde, gfx602, hainan, oland, gfx700, kaveri, gfx701, hawaii, gfx702, gfx703, kabini, mullins, gfx704, bonaire, gfx705, gfx801, carrizo, gfx802, iceland, tonga, gfx803, fiji, polaris10, polaris11, gfx805, tongapro, gfx810, stoney, gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a, gfx90c, gfx940, gfx941, gfx942, gfx1010, gfx1011, gfx1012, gfx1013, gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, gfx1036, gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, gfx1200, gfx1201, gfx9-generic, gfx10-1-generic, gfx10-3-generic, gfx11-generic, gfx12-generic{{$}} - -// RUN: not %clang_cc1 -triple wasm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix WEBASM -// WEBASM: error: unknown target CPU 'not-a-cpu' -// WEBASM-NEXT: note: valid target CPU values are: mvp, bleeding-edge, generic{{$}} - -// RUN: not %clang_cc1 -triple systemz--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SYSTEMZ -// SYSTEMZ: error: unknown target CPU 'not-a-cpu' -// SYSTEMZ-NEXT: note: valid target CPU values are: arch8, z10, arch9, z196, arch10, zEC12, arch11, z13, arch12, z14, arch13, z15, arch14, z16{{$}} - -// RUN: not %clang_cc1 -triple sparc--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SPARC -// SPARC: error: unknown target CPU 'not-a-cpu' -// SPARC-NEXT: note: valid target CPU values are: v8, supersparc, sparclite, f934, hypersparc, sparclite86x, sparclet, tsc701, v9, ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4, ma2100, ma2150, ma2155, ma2450, ma2455, ma2x5x, ma2080, ma2085, ma2480, ma2485, ma2x8x, leon2, at697e, at697f, leon3, ut699, gr712rc, leon4, gr740{{$}} - -// RUN: not %clang_cc1 -triple sparcv9--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SPARCV9 -// SPARCV9: error: unknown target CPU 'not-a-cpu' -// SPARCV9-NEXT: note: valid target CPU values are: v9, ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4{{$}} - -// RUN: not %clang_cc1 -triple powerpc--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix PPC -// PPC: error: unknown target CPU 'not-a-cpu' -// PPC-NEXT: note: valid target CPU values are: generic, 440, 440fp, ppc440, 450, 601, 602, 603, 603e, 603ev, 604, 604e, 620, 630, g3, 7400, g4, 7450, g4+, 750, 8548, ppc405, ppc464, ppc476, 970, ppc970, g5, a2, ppca2, ppc-cell-be, e500, e500mc, e5500, power3, pwr3, pwr4, power4, pwr5, power5, pwr5+, power5+, pwr5x, power5x, pwr6, power6, pwr6x, power6x, pwr7, power7, pwr8, power8, pwr9, power9, pwr10, power10, pwr11, power11, powerpc, ppc, ppc32, powerpc64, ppc64, powerpc64le, ppc64le, future{{$}} - -// RUN: not %clang_cc1 -triple mips--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix MIPS -// MIPS: error: unknown target CPU 'not-a-cpu' -// MIPS-NEXT: note: valid target CPU values are: mips1, mips2, mips3, mips4, mips5, mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, mips64r3, mips64r5, mips64r6, octeon, octeon+, p5600{{$}} - -// RUN: not %clang_cc1 -triple lanai--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix LANAI -// LANAI: error: unknown target CPU 'not-a-cpu' -// LANAI-NEXT: note: valid target CPU values are: v11{{$}} - -// RUN: not %clang_cc1 -triple hexagon--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix HEXAGON -// HEXAGON: error: unknown target CPU 'not-a-cpu' -// HEXAGON-NEXT: note: valid target CPU values are: hexagonv5, hexagonv55, hexagonv60, hexagonv62, hexagonv65, hexagonv66, hexagonv67, hexagonv67t, hexagonv68, hexagonv69, hexagonv71, hexagonv71t, hexagonv73{{$}} - -// RUN: not %clang_cc1 -triple bpf--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix BPF -// BPF: error: unknown target CPU 'not-a-cpu' -// BPF-NEXT: note: valid target CPU values are: generic, v1, v2, v3, v4, probe{{$}} - -// RUN: not %clang_cc1 -triple avr--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AVR -// AVR: error: unknown target CPU 'not-a-cpu' -// AVR-NEXT: note: valid target CPU values are: avr1, at90s1200, attiny11, attiny12, attiny15, attiny28, avr2, at90s2313, at90s2323, at90s2333, at90s2343, attiny22, attiny26, at86rf401, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534, at90s8535, avr25, ata5272, ata6616c, attiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny441, attiny461, attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88, attiny828, avr3, at43usb355, at76c711, avr31, atmega103, at43usb320, avr35, attiny167, at90usb82, at90usb162, ata5505, ata6617c, ata664251, atmega8u2, atmega16u2, atmega32u2, attiny1634, avr4, atmega8, ata6289, atmega8a, ata6285, ata6286, ata6612c, atmega48, atmega48a, atmega48pa, atmega48pb, atmega48p, atmega88, atmega88a, atmega88p, atmega88pa, atmega88pb, atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, avr5, ata5702m322, ata5782, ata5790, ata5790n, ata5791, ata5795, ata5831, ata6613c, ata6614q, ata8210, ata8510, atmega16, atmega16a, atmega161, atmega162, atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, atmega168pb, atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega324pb, atmega325, atmega325a, atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p, atmega328pb, atmega329, atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega649, atmega649a, atmega649p, atmega6450, atmega6450a, atmega6450p, atmega6490, atmega6490a, atmega6490p, atmega64rfr2, atmega644rfr2, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve, atmega64hve2, at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at90scr100, at94k, m3000, avr51, atmega128, atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, at90usb1287, avr6, atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, avrxmega2, atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c3, atxmega32c4, atxmega32d3, atxmega32d4, atxmega32e5, atxmega16e5, atxmega8e5, avrxmega4, atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4, avrxmega5, atxmega64a1, atxmega64a1u, avrxmega6, atxmega128a3, atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3, atxmega384d3, avrxmega7, atxmega128a1, atxmega128a1u, atxmega128a4u, avrtiny, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, attiny102, attiny104, avrxmega3, attiny202, attiny402, attiny204, attiny404, attiny804, attiny1604, attiny406, attiny806, attiny1606, attiny807, attiny1607, attiny212, attiny412, attiny214, attiny414, attiny814, attiny1614, attiny416, attiny816, attiny1616, attiny3216, attiny417, attiny817, attiny1617, attiny3217, attiny1624, attiny1626, attiny1627, atmega808, atmega809, atmega1608, atmega1609, atmega3208, atmega3209, atmega4808, atmega4809 - -// RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32 -// RISCV32: error: unknown target CPU 'not-a-cpu' -// RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, syntacore-scr3-rv32, syntacore-scr4-rv32, syntacore-scr5-rv32{{$}} - -// RUN: not %clang_cc1 -triple riscv64 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV64 -// RISCV64: error: unknown target CPU 'not-a-cpu' -// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p470, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, spacemit-x60, syntacore-scr3-rv64, syntacore-scr4-rv64, syntacore-scr5-rv64, veyron-v1, xiangshan-nanhu{{$}} - -// RUN: not %clang_cc1 -triple riscv32 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV32 -// TUNE-RISCV32: error: unknown target CPU 'not-a-cpu' -// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, syntacore-scr3-rv32, syntacore-scr4-rv32, syntacore-scr5-rv32, generic, rocket, sifive-7-series{{$}} - -// RUN: not %clang_cc1 -triple riscv64 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV64 -// TUNE-RISCV64: error: unknown target CPU 'not-a-cpu' -// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p470, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, spacemit-x60, syntacore-scr3-rv64, syntacore-scr4-rv64, syntacore-scr5-rv64, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/aarch64.c b/clang/test/Misc/target-invalid-cpu-note/aarch64.c new file mode 100644 index 00000000000000..ab83f299ac5997 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/aarch64.c @@ -0,0 +1,92 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple arm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// RUN: not %clang_cc1 -triple arm64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s + +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} a64fx +// CHECK-SAME: {{^}}, ampere1 +// CHECK-SAME: {{^}}, ampere1a +// CHECK-SAME: {{^}}, ampere1b +// CHECK-SAME: {{^}}, apple-a10 +// CHECK-SAME: {{^}}, apple-a11 +// CHECK-SAME: {{^}}, apple-a12 +// CHECK-SAME: {{^}}, apple-a13 +// CHECK-SAME: {{^}}, apple-a14 +// CHECK-SAME: {{^}}, apple-a15 +// CHECK-SAME: {{^}}, apple-a16 +// CHECK-SAME: {{^}}, apple-a17 +// CHECK-SAME: {{^}}, apple-a7 +// CHECK-SAME: {{^}}, apple-a8 +// CHECK-SAME: {{^}}, apple-a9 +// CHECK-SAME: {{^}}, apple-m1 +// CHECK-SAME: {{^}}, apple-m2 +// CHECK-SAME: {{^}}, apple-m3 +// CHECK-SAME: {{^}}, apple-m4 +// CHECK-SAME: {{^}}, apple-s4 +// CHECK-SAME: {{^}}, apple-s5 +// CHECK-SAME: {{^}}, carmel +// CHECK-SAME: {{^}}, cobalt-100 +// CHECK-SAME: {{^}}, cortex-a34 +// CHECK-SAME: {{^}}, cortex-a35 +// CHECK-SAME: {{^}}, cortex-a510 +// CHECK-SAME: {{^}}, cortex-a520 +// CHECK-SAME: {{^}}, cortex-a520ae +// CHECK-SAME: {{^}}, cortex-a53 +// CHECK-SAME: {{^}}, cortex-a55 +// CHECK-SAME: {{^}}, cortex-a57 +// CHECK-SAME: {{^}}, cortex-a65 +// CHECK-SAME: {{^}}, cortex-a65ae +// CHECK-SAME: {{^}}, cortex-a710 +// CHECK-SAME: {{^}}, cortex-a715 +// CHECK-SAME: {{^}}, cortex-a72 +// CHECK-SAME: {{^}}, cortex-a720 +// CHECK-SAME: {{^}}, cortex-a720ae +// CHECK-SAME: {{^}}, cortex-a725 +// CHECK-SAME: {{^}}, cortex-a73 +// CHECK-SAME: {{^}}, cortex-a75 +// CHECK-SAME: {{^}}, cortex-a76 +// CHECK-SAME: {{^}}, cortex-a76ae +// CHECK-SAME: {{^}}, cortex-a77 +// CHECK-SAME: {{^}}, cortex-a78 +// CHECK-SAME: {{^}}, cortex-a78ae +// CHECK-SAME: {{^}}, cortex-a78c +// CHECK-SAME: {{^}}, cortex-r82 +// CHECK-SAME: {{^}}, cortex-r82ae +// CHECK-SAME: {{^}}, cortex-x1 +// CHECK-SAME: {{^}}, cortex-x1c +// CHECK-SAME: {{^}}, cortex-x2 +// CHECK-SAME: {{^}}, cortex-x3 +// CHECK-SAME: {{^}}, cortex-x4 +// CHECK-SAME: {{^}}, cortex-x925 +// CHECK-SAME: {{^}}, cyclone +// CHECK-SAME: {{^}}, exynos-m3 +// CHECK-SAME: {{^}}, exynos-m4 +// CHECK-SAME: {{^}}, exynos-m5 +// CHECK-SAME: {{^}}, falkor +// CHECK-SAME: {{^}}, generic +// CHECK-SAME: {{^}}, grace +// CHECK-SAME: {{^}}, kryo +// CHECK-SAME: {{^}}, neoverse-512tvb +// CHECK-SAME: {{^}}, neoverse-e1 +// CHECK-SAME: {{^}}, neoverse-n1 +// CHECK-SAME: {{^}}, neoverse-n2 +// CHECK-SAME: {{^}}, neoverse-n3 +// CHECK-SAME: {{^}}, neoverse-v1 +// CHECK-SAME: {{^}}, neoverse-v2 +// CHECK-SAME: {{^}}, neoverse-v3 +// CHECK-SAME: {{^}}, neoverse-v3ae +// CHECK-SAME: {{^}}, oryon-1 +// CHECK-SAME: {{^}}, saphira +// CHECK-SAME: {{^}}, thunderx +// CHECK-SAME: {{^}}, thunderx2t99 +// CHECK-SAME: {{^}}, thunderx3t110 +// CHECK-SAME: {{^}}, thunderxt81 +// CHECK-SAME: {{^}}, thunderxt83 +// CHECK-SAME: {{^}}, thunderxt88 +// CHECK-SAME: {{^}}, tsv110 +// CHECK-SAME: {{$}} + diff --git a/clang/test/Misc/target-invalid-cpu-note/amdgcn.c b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c new file mode 100644 index 00000000000000..0f01ff35035bd2 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/amdgcn.c @@ -0,0 +1,76 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple amdgcn--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} gfx600 +// CHECK-SAME: {{^}}, tahiti +// CHECK-SAME: {{^}}, gfx601 +// CHECK-SAME: {{^}}, pitcairn +// CHECK-SAME: {{^}}, verde +// CHECK-SAME: {{^}}, gfx602 +// CHECK-SAME: {{^}}, hainan +// CHECK-SAME: {{^}}, oland +// CHECK-SAME: {{^}}, gfx700 +// CHECK-SAME: {{^}}, kaveri +// CHECK-SAME: {{^}}, gfx701 +// CHECK-SAME: {{^}}, hawaii +// CHECK-SAME: {{^}}, gfx702 +// CHECK-SAME: {{^}}, gfx703 +// CHECK-SAME: {{^}}, kabini +// CHECK-SAME: {{^}}, mullins +// CHECK-SAME: {{^}}, gfx704 +// CHECK-SAME: {{^}}, bonaire +// CHECK-SAME: {{^}}, gfx705 +// CHECK-SAME: {{^}}, gfx801 +// CHECK-SAME: {{^}}, carrizo +// CHECK-SAME: {{^}}, gfx802 +// CHECK-SAME: {{^}}, iceland +// CHECK-SAME: {{^}}, tonga +// CHECK-SAME: {{^}}, gfx803 +// CHECK-SAME: {{^}}, fiji +// CHECK-SAME: {{^}}, polaris10 +// CHECK-SAME: {{^}}, polaris11 +// CHECK-SAME: {{^}}, gfx805 +// CHECK-SAME: {{^}}, tongapro +// CHECK-SAME: {{^}}, gfx810 +// CHECK-SAME: {{^}}, stoney +// CHECK-SAME: {{^}}, gfx900 +// CHECK-SAME: {{^}}, gfx902 +// CHECK-SAME: {{^}}, gfx904 +// CHECK-SAME: {{^}}, gfx906 +// CHECK-SAME: {{^}}, gfx908 +// CHECK-SAME: {{^}}, gfx909 +// CHECK-SAME: {{^}}, gfx90a +// CHECK-SAME: {{^}}, gfx90c +// CHECK-SAME: {{^}}, gfx940 +// CHECK-SAME: {{^}}, gfx941 +// CHECK-SAME: {{^}}, gfx942 +// CHECK-SAME: {{^}}, gfx1010 +// CHECK-SAME: {{^}}, gfx1011 +// CHECK-SAME: {{^}}, gfx1012 +// CHECK-SAME: {{^}}, gfx1013 +// CHECK-SAME: {{^}}, gfx1030 +// CHECK-SAME: {{^}}, gfx1031 +// CHECK-SAME: {{^}}, gfx1032 +// CHECK-SAME: {{^}}, gfx1033 +// CHECK-SAME: {{^}}, gfx1034 +// CHECK-SAME: {{^}}, gfx1035 +// CHECK-SAME: {{^}}, gfx1036 +// CHECK-SAME: {{^}}, gfx1100 +// CHECK-SAME: {{^}}, gfx1101 +// CHECK-SAME: {{^}}, gfx1102 +// CHECK-SAME: {{^}}, gfx1103 +// CHECK-SAME: {{^}}, gfx1150 +// CHECK-SAME: {{^}}, gfx1151 +// CHECK-SAME: {{^}}, gfx1152 +// CHECK-SAME: {{^}}, gfx1200 +// CHECK-SAME: {{^}}, gfx1201 +// CHECK-SAME: {{^}}, gfx9-generic +// CHECK-SAME: {{^}}, gfx10-1-generic +// CHECK-SAME: {{^}}, gfx10-3-generic +// CHECK-SAME: {{^}}, gfx11-generic +// CHECK-SAME: {{^}}, gfx12-generic +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/arm.c b/clang/test/Misc/target-invalid-cpu-note/arm.c new file mode 100644 index 00000000000000..27608cc6eb29fc --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/arm.c @@ -0,0 +1,100 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple armv5--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} arm8 +// CHECK-SAME: {{^}}, arm810 +// CHECK-SAME: {{^}}, strongarm +// CHECK-SAME: {{^}}, strongarm110 +// CHECK-SAME: {{^}}, strongarm1100 +// CHECK-SAME: {{^}}, strongarm1110 +// CHECK-SAME: {{^}}, arm7tdmi +// CHECK-SAME: {{^}}, arm7tdmi-s +// CHECK-SAME: {{^}}, arm710t +// CHECK-SAME: {{^}}, arm720t +// CHECK-SAME: {{^}}, arm9 +// CHECK-SAME: {{^}}, arm9tdmi +// CHECK-SAME: {{^}}, arm920 +// CHECK-SAME: {{^}}, arm920t +// CHECK-SAME: {{^}}, arm922t +// CHECK-SAME: {{^}}, arm940t +// CHECK-SAME: {{^}}, ep9312 +// CHECK-SAME: {{^}}, arm10tdmi +// CHECK-SAME: {{^}}, arm1020t +// CHECK-SAME: {{^}}, arm9e +// CHECK-SAME: {{^}}, arm946e-s +// CHECK-SAME: {{^}}, arm966e-s +// CHECK-SAME: {{^}}, arm968e-s +// CHECK-SAME: {{^}}, arm10e +// CHECK-SAME: {{^}}, arm1020e +// CHECK-SAME: {{^}}, arm1022e +// CHECK-SAME: {{^}}, arm926ej-s +// CHECK-SAME: {{^}}, arm1136j-s +// CHECK-SAME: {{^}}, arm1136jf-s +// CHECK-SAME: {{^}}, mpcore +// CHECK-SAME: {{^}}, mpcorenovfp +// CHECK-SAME: {{^}}, arm1176jz-s +// CHECK-SAME: {{^}}, arm1176jzf-s +// CHECK-SAME: {{^}}, arm1156t2-s +// CHECK-SAME: {{^}}, arm1156t2f-s +// CHECK-SAME: {{^}}, cortex-m0 +// CHECK-SAME: {{^}}, cortex-m0plus +// CHECK-SAME: {{^}}, cortex-m1 +// CHECK-SAME: {{^}}, sc000 +// CHECK-SAME: {{^}}, cortex-a5 +// CHECK-SAME: {{^}}, cortex-a7 +// CHECK-SAME: {{^}}, cortex-a8 +// CHECK-SAME: {{^}}, cortex-a9 +// CHECK-SAME: {{^}}, cortex-a12 +// CHECK-SAME: {{^}}, cortex-a15 +// CHECK-SAME: {{^}}, cortex-a17 +// CHECK-SAME: {{^}}, krait +// CHECK-SAME: {{^}}, cortex-r4 +// CHECK-SAME: {{^}}, cortex-r4f +// CHECK-SAME: {{^}}, cortex-r5 +// CHECK-SAME: {{^}}, cortex-r7 +// CHECK-SAME: {{^}}, cortex-r8 +// CHECK-SAME: {{^}}, cortex-r52 +// CHECK-SAME: {{^}}, cortex-r52plus +// CHECK-SAME: {{^}}, sc300 +// CHECK-SAME: {{^}}, cortex-m3 +// CHECK-SAME: {{^}}, cortex-m4 +// CHECK-SAME: {{^}}, cortex-m7 +// CHECK-SAME: {{^}}, cortex-m23 +// CHECK-SAME: {{^}}, cortex-m33 +// CHECK-SAME: {{^}}, cortex-m35p +// CHECK-SAME: {{^}}, cortex-m55 +// CHECK-SAME: {{^}}, cortex-m85 +// CHECK-SAME: {{^}}, cortex-m52 +// CHECK-SAME: {{^}}, cortex-a32 +// CHECK-SAME: {{^}}, cortex-a35 +// CHECK-SAME: {{^}}, cortex-a53 +// CHECK-SAME: {{^}}, cortex-a55 +// CHECK-SAME: {{^}}, cortex-a57 +// CHECK-SAME: {{^}}, cortex-a72 +// CHECK-SAME: {{^}}, cortex-a73 +// CHECK-SAME: {{^}}, cortex-a75 +// CHECK-SAME: {{^}}, cortex-a76 +// CHECK-SAME: {{^}}, cortex-a76ae +// CHECK-SAME: {{^}}, cortex-a77 +// CHECK-SAME: {{^}}, cortex-a78 +// CHECK-SAME: {{^}}, cortex-a78ae +// CHECK-SAME: {{^}}, cortex-a78c +// CHECK-SAME: {{^}}, cortex-a710 +// CHECK-SAME: {{^}}, cortex-x1 +// CHECK-SAME: {{^}}, cortex-x1c +// CHECK-SAME: {{^}}, neoverse-n1 +// CHECK-SAME: {{^}}, neoverse-n2 +// CHECK-SAME: {{^}}, neoverse-v1 +// CHECK-SAME: {{^}}, cyclone +// CHECK-SAME: {{^}}, exynos-m3 +// CHECK-SAME: {{^}}, exynos-m4 +// CHECK-SAME: {{^}}, exynos-m5 +// CHECK-SAME: {{^}}, kryo +// CHECK-SAME: {{^}}, iwmmxt +// CHECK-SAME: {{^}}, xscale +// CHECK-SAME: {{^}}, swift +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/avr.c b/clang/test/Misc/target-invalid-cpu-note/avr.c new file mode 100644 index 00000000000000..86ffbb68385822 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/avr.c @@ -0,0 +1,322 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple avr--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} avr1 +// CHECK-SAME: {{^}}, at90s1200 +// CHECK-SAME: {{^}}, attiny11 +// CHECK-SAME: {{^}}, attiny12 +// CHECK-SAME: {{^}}, attiny15 +// CHECK-SAME: {{^}}, attiny28 +// CHECK-SAME: {{^}}, avr2 +// CHECK-SAME: {{^}}, at90s2313 +// CHECK-SAME: {{^}}, at90s2323 +// CHECK-SAME: {{^}}, at90s2333 +// CHECK-SAME: {{^}}, at90s2343 +// CHECK-SAME: {{^}}, attiny22 +// CHECK-SAME: {{^}}, attiny26 +// CHECK-SAME: {{^}}, at86rf401 +// CHECK-SAME: {{^}}, at90s4414 +// CHECK-SAME: {{^}}, at90s4433 +// CHECK-SAME: {{^}}, at90s4434 +// CHECK-SAME: {{^}}, at90s8515 +// CHECK-SAME: {{^}}, at90c8534 +// CHECK-SAME: {{^}}, at90s8535 +// CHECK-SAME: {{^}}, avr25 +// CHECK-SAME: {{^}}, ata5272 +// CHECK-SAME: {{^}}, ata6616c +// CHECK-SAME: {{^}}, attiny13 +// CHECK-SAME: {{^}}, attiny13a +// CHECK-SAME: {{^}}, attiny2313 +// CHECK-SAME: {{^}}, attiny2313a +// CHECK-SAME: {{^}}, attiny24 +// CHECK-SAME: {{^}}, attiny24a +// CHECK-SAME: {{^}}, attiny4313 +// CHECK-SAME: {{^}}, attiny44 +// CHECK-SAME: {{^}}, attiny44a +// CHECK-SAME: {{^}}, attiny84 +// CHECK-SAME: {{^}}, attiny84a +// CHECK-SAME: {{^}}, attiny25 +// CHECK-SAME: {{^}}, attiny45 +// CHECK-SAME: {{^}}, attiny85 +// CHECK-SAME: {{^}}, attiny261 +// CHECK-SAME: {{^}}, attiny261a +// CHECK-SAME: {{^}}, attiny441 +// CHECK-SAME: {{^}}, attiny461 +// CHECK-SAME: {{^}}, attiny461a +// CHECK-SAME: {{^}}, attiny841 +// CHECK-SAME: {{^}}, attiny861 +// CHECK-SAME: {{^}}, attiny861a +// CHECK-SAME: {{^}}, attiny87 +// CHECK-SAME: {{^}}, attiny43u +// CHECK-SAME: {{^}}, attiny48 +// CHECK-SAME: {{^}}, attiny88 +// CHECK-SAME: {{^}}, attiny828 +// CHECK-SAME: {{^}}, avr3 +// CHECK-SAME: {{^}}, at43usb355 +// CHECK-SAME: {{^}}, at76c711 +// CHECK-SAME: {{^}}, avr31 +// CHECK-SAME: {{^}}, atmega103 +// CHECK-SAME: {{^}}, at43usb320 +// CHECK-SAME: {{^}}, avr35 +// CHECK-SAME: {{^}}, attiny167 +// CHECK-SAME: {{^}}, at90usb82 +// CHECK-SAME: {{^}}, at90usb162 +// CHECK-SAME: {{^}}, ata5505 +// CHECK-SAME: {{^}}, ata6617c +// CHECK-SAME: {{^}}, ata664251 +// CHECK-SAME: {{^}}, atmega8u2 +// CHECK-SAME: {{^}}, atmega16u2 +// CHECK-SAME: {{^}}, atmega32u2 +// CHECK-SAME: {{^}}, attiny1634 +// CHECK-SAME: {{^}}, avr4 +// CHECK-SAME: {{^}}, atmega8 +// CHECK-SAME: {{^}}, ata6289 +// CHECK-SAME: {{^}}, atmega8a +// CHECK-SAME: {{^}}, ata6285 +// CHECK-SAME: {{^}}, ata6286 +// CHECK-SAME: {{^}}, ata6612c +// CHECK-SAME: {{^}}, atmega48 +// CHECK-SAME: {{^}}, atmega48a +// CHECK-SAME: {{^}}, atmega48pa +// CHECK-SAME: {{^}}, atmega48pb +// CHECK-SAME: {{^}}, atmega48p +// CHECK-SAME: {{^}}, atmega88 +// CHECK-SAME: {{^}}, atmega88a +// CHECK-SAME: {{^}}, atmega88p +// CHECK-SAME: {{^}}, atmega88pa +// CHECK-SAME: {{^}}, atmega88pb +// CHECK-SAME: {{^}}, atmega8515 +// CHECK-SAME: {{^}}, atmega8535 +// CHECK-SAME: {{^}}, atmega8hva +// CHECK-SAME: {{^}}, at90pwm1 +// CHECK-SAME: {{^}}, at90pwm2 +// CHECK-SAME: {{^}}, at90pwm2b +// CHECK-SAME: {{^}}, at90pwm3 +// CHECK-SAME: {{^}}, at90pwm3b +// CHECK-SAME: {{^}}, at90pwm81 +// CHECK-SAME: {{^}}, avr5 +// CHECK-SAME: {{^}}, ata5702m322 +// CHECK-SAME: {{^}}, ata5782 +// CHECK-SAME: {{^}}, ata5790 +// CHECK-SAME: {{^}}, ata5790n +// CHECK-SAME: {{^}}, ata5791 +// CHECK-SAME: {{^}}, ata5795 +// CHECK-SAME: {{^}}, ata5831 +// CHECK-SAME: {{^}}, ata6613c +// CHECK-SAME: {{^}}, ata6614q +// CHECK-SAME: {{^}}, ata8210 +// CHECK-SAME: {{^}}, ata8510 +// CHECK-SAME: {{^}}, atmega16 +// CHECK-SAME: {{^}}, atmega16a +// CHECK-SAME: {{^}}, atmega161 +// CHECK-SAME: {{^}}, atmega162 +// CHECK-SAME: {{^}}, atmega163 +// CHECK-SAME: {{^}}, atmega164a +// CHECK-SAME: {{^}}, atmega164p +// CHECK-SAME: {{^}}, atmega164pa +// CHECK-SAME: {{^}}, atmega165 +// CHECK-SAME: {{^}}, atmega165a +// CHECK-SAME: {{^}}, atmega165p +// CHECK-SAME: {{^}}, atmega165pa +// CHECK-SAME: {{^}}, atmega168 +// CHECK-SAME: {{^}}, atmega168a +// CHECK-SAME: {{^}}, atmega168p +// CHECK-SAME: {{^}}, atmega168pa +// CHECK-SAME: {{^}}, atmega168pb +// CHECK-SAME: {{^}}, atmega169 +// CHECK-SAME: {{^}}, atmega169a +// CHECK-SAME: {{^}}, atmega169p +// CHECK-SAME: {{^}}, atmega169pa +// CHECK-SAME: {{^}}, atmega32 +// CHECK-SAME: {{^}}, atmega32a +// CHECK-SAME: {{^}}, atmega323 +// CHECK-SAME: {{^}}, atmega324a +// CHECK-SAME: {{^}}, atmega324p +// CHECK-SAME: {{^}}, atmega324pa +// CHECK-SAME: {{^}}, atmega324pb +// CHECK-SAME: {{^}}, atmega325 +// CHECK-SAME: {{^}}, atmega325a +// CHECK-SAME: {{^}}, atmega325p +// CHECK-SAME: {{^}}, atmega325pa +// CHECK-SAME: {{^}}, atmega3250 +// CHECK-SAME: {{^}}, atmega3250a +// CHECK-SAME: {{^}}, atmega3250p +// CHECK-SAME: {{^}}, atmega3250pa +// CHECK-SAME: {{^}}, atmega328 +// CHECK-SAME: {{^}}, atmega328p +// CHECK-SAME: {{^}}, atmega328pb +// CHECK-SAME: {{^}}, atmega329 +// CHECK-SAME: {{^}}, atmega329a +// CHECK-SAME: {{^}}, atmega329p +// CHECK-SAME: {{^}}, atmega329pa +// CHECK-SAME: {{^}}, atmega3290 +// CHECK-SAME: {{^}}, atmega3290a +// CHECK-SAME: {{^}}, atmega3290p +// CHECK-SAME: {{^}}, atmega3290pa +// CHECK-SAME: {{^}}, atmega406 +// CHECK-SAME: {{^}}, atmega64 +// CHECK-SAME: {{^}}, atmega64a +// CHECK-SAME: {{^}}, atmega640 +// CHECK-SAME: {{^}}, atmega644 +// CHECK-SAME: {{^}}, atmega644a +// CHECK-SAME: {{^}}, atmega644p +// CHECK-SAME: {{^}}, atmega644pa +// CHECK-SAME: {{^}}, atmega645 +// CHECK-SAME: {{^}}, atmega645a +// CHECK-SAME: {{^}}, atmega645p +// CHECK-SAME: {{^}}, atmega649 +// CHECK-SAME: {{^}}, atmega649a +// CHECK-SAME: {{^}}, atmega649p +// CHECK-SAME: {{^}}, atmega6450 +// CHECK-SAME: {{^}}, atmega6450a +// CHECK-SAME: {{^}}, atmega6450p +// CHECK-SAME: {{^}}, atmega6490 +// CHECK-SAME: {{^}}, atmega6490a +// CHECK-SAME: {{^}}, atmega6490p +// CHECK-SAME: {{^}}, atmega64rfr2 +// CHECK-SAME: {{^}}, atmega644rfr2 +// CHECK-SAME: {{^}}, atmega16hva +// CHECK-SAME: {{^}}, atmega16hva2 +// CHECK-SAME: {{^}}, atmega16hvb +// CHECK-SAME: {{^}}, atmega16hvbrevb +// CHECK-SAME: {{^}}, atmega32hvb +// CHECK-SAME: {{^}}, atmega32hvbrevb +// CHECK-SAME: {{^}}, atmega64hve +// CHECK-SAME: {{^}}, atmega64hve2 +// CHECK-SAME: {{^}}, at90can32 +// CHECK-SAME: {{^}}, at90can64 +// CHECK-SAME: {{^}}, at90pwm161 +// CHECK-SAME: {{^}}, at90pwm216 +// CHECK-SAME: {{^}}, at90pwm316 +// CHECK-SAME: {{^}}, atmega32c1 +// CHECK-SAME: {{^}}, atmega64c1 +// CHECK-SAME: {{^}}, atmega16m1 +// CHECK-SAME: {{^}}, atmega32m1 +// CHECK-SAME: {{^}}, atmega64m1 +// CHECK-SAME: {{^}}, atmega16u4 +// CHECK-SAME: {{^}}, atmega32u4 +// CHECK-SAME: {{^}}, atmega32u6 +// CHECK-SAME: {{^}}, at90usb646 +// CHECK-SAME: {{^}}, at90usb647 +// CHECK-SAME: {{^}}, at90scr100 +// CHECK-SAME: {{^}}, at94k +// CHECK-SAME: {{^}}, m3000 +// CHECK-SAME: {{^}}, avr51 +// CHECK-SAME: {{^}}, atmega128 +// CHECK-SAME: {{^}}, atmega128a +// CHECK-SAME: {{^}}, atmega1280 +// CHECK-SAME: {{^}}, atmega1281 +// CHECK-SAME: {{^}}, atmega1284 +// CHECK-SAME: {{^}}, atmega1284p +// CHECK-SAME: {{^}}, atmega128rfa1 +// CHECK-SAME: {{^}}, atmega128rfr2 +// CHECK-SAME: {{^}}, atmega1284rfr2 +// CHECK-SAME: {{^}}, at90can128 +// CHECK-SAME: {{^}}, at90usb1286 +// CHECK-SAME: {{^}}, at90usb1287 +// CHECK-SAME: {{^}}, avr6 +// CHECK-SAME: {{^}}, atmega2560 +// CHECK-SAME: {{^}}, atmega2561 +// CHECK-SAME: {{^}}, atmega256rfr2 +// CHECK-SAME: {{^}}, atmega2564rfr2 +// CHECK-SAME: {{^}}, avrxmega2 +// CHECK-SAME: {{^}}, atxmega16a4 +// CHECK-SAME: {{^}}, atxmega16a4u +// CHECK-SAME: {{^}}, atxmega16c4 +// CHECK-SAME: {{^}}, atxmega16d4 +// CHECK-SAME: {{^}}, atxmega32a4 +// CHECK-SAME: {{^}}, atxmega32a4u +// CHECK-SAME: {{^}}, atxmega32c3 +// CHECK-SAME: {{^}}, atxmega32c4 +// CHECK-SAME: {{^}}, atxmega32d3 +// CHECK-SAME: {{^}}, atxmega32d4 +// CHECK-SAME: {{^}}, atxmega32e5 +// CHECK-SAME: {{^}}, atxmega16e5 +// CHECK-SAME: {{^}}, atxmega8e5 +// CHECK-SAME: {{^}}, avrxmega4 +// CHECK-SAME: {{^}}, atxmega64a3 +// CHECK-SAME: {{^}}, atxmega64a3u +// CHECK-SAME: {{^}}, atxmega64a4u +// CHECK-SAME: {{^}}, atxmega64b1 +// CHECK-SAME: {{^}}, atxmega64b3 +// CHECK-SAME: {{^}}, atxmega64c3 +// CHECK-SAME: {{^}}, atxmega64d3 +// CHECK-SAME: {{^}}, atxmega64d4 +// CHECK-SAME: {{^}}, avrxmega5 +// CHECK-SAME: {{^}}, atxmega64a1 +// CHECK-SAME: {{^}}, atxmega64a1u +// CHECK-SAME: {{^}}, avrxmega6 +// CHECK-SAME: {{^}}, atxmega128a3 +// CHECK-SAME: {{^}}, atxmega128a3u +// CHECK-SAME: {{^}}, atxmega128b1 +// CHECK-SAME: {{^}}, atxmega128b3 +// CHECK-SAME: {{^}}, atxmega128c3 +// CHECK-SAME: {{^}}, atxmega128d3 +// CHECK-SAME: {{^}}, atxmega128d4 +// CHECK-SAME: {{^}}, atxmega192a3 +// CHECK-SAME: {{^}}, atxmega192a3u +// CHECK-SAME: {{^}}, atxmega192c3 +// CHECK-SAME: {{^}}, atxmega192d3 +// CHECK-SAME: {{^}}, atxmega256a3 +// CHECK-SAME: {{^}}, atxmega256a3u +// CHECK-SAME: {{^}}, atxmega256a3b +// CHECK-SAME: {{^}}, atxmega256a3bu +// CHECK-SAME: {{^}}, atxmega256c3 +// CHECK-SAME: {{^}}, atxmega256d3 +// CHECK-SAME: {{^}}, atxmega384c3 +// CHECK-SAME: {{^}}, atxmega384d3 +// CHECK-SAME: {{^}}, avrxmega7 +// CHECK-SAME: {{^}}, atxmega128a1 +// CHECK-SAME: {{^}}, atxmega128a1u +// CHECK-SAME: {{^}}, atxmega128a4u +// CHECK-SAME: {{^}}, avrtiny +// CHECK-SAME: {{^}}, attiny4 +// CHECK-SAME: {{^}}, attiny5 +// CHECK-SAME: {{^}}, attiny9 +// CHECK-SAME: {{^}}, attiny10 +// CHECK-SAME: {{^}}, attiny20 +// CHECK-SAME: {{^}}, attiny40 +// CHECK-SAME: {{^}}, attiny102 +// CHECK-SAME: {{^}}, attiny104 +// CHECK-SAME: {{^}}, avrxmega3 +// CHECK-SAME: {{^}}, attiny202 +// CHECK-SAME: {{^}}, attiny402 +// CHECK-SAME: {{^}}, attiny204 +// CHECK-SAME: {{^}}, attiny404 +// CHECK-SAME: {{^}}, attiny804 +// CHECK-SAME: {{^}}, attiny1604 +// CHECK-SAME: {{^}}, attiny406 +// CHECK-SAME: {{^}}, attiny806 +// CHECK-SAME: {{^}}, attiny1606 +// CHECK-SAME: {{^}}, attiny807 +// CHECK-SAME: {{^}}, attiny1607 +// CHECK-SAME: {{^}}, attiny212 +// CHECK-SAME: {{^}}, attiny412 +// CHECK-SAME: {{^}}, attiny214 +// CHECK-SAME: {{^}}, attiny414 +// CHECK-SAME: {{^}}, attiny814 +// CHECK-SAME: {{^}}, attiny1614 +// CHECK-SAME: {{^}}, attiny416 +// CHECK-SAME: {{^}}, attiny816 +// CHECK-SAME: {{^}}, attiny1616 +// CHECK-SAME: {{^}}, attiny3216 +// CHECK-SAME: {{^}}, attiny417 +// CHECK-SAME: {{^}}, attiny817 +// CHECK-SAME: {{^}}, attiny1617 +// CHECK-SAME: {{^}}, attiny3217 +// CHECK-SAME: {{^}}, attiny1624 +// CHECK-SAME: {{^}}, attiny1626 +// CHECK-SAME: {{^}}, attiny1627 +// CHECK-SAME: {{^}}, atmega808 +// CHECK-SAME: {{^}}, atmega809 +// CHECK-SAME: {{^}}, atmega1608 +// CHECK-SAME: {{^}}, atmega1609 +// CHECK-SAME: {{^}}, atmega3208 +// CHECK-SAME: {{^}}, atmega3209 +// CHECK-SAME: {{^}}, atmega4808 +// CHECK-SAME: {{^}}, atmega4809 +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/bpf.c b/clang/test/Misc/target-invalid-cpu-note/bpf.c new file mode 100644 index 00000000000000..fe925f86cdd137 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/bpf.c @@ -0,0 +1,15 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple bpf--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} generic +// CHECK-SAME: {{^}}, v1 +// CHECK-SAME: {{^}}, v2 +// CHECK-SAME: {{^}}, v3 +// CHECK-SAME: {{^}}, v4 +// CHECK-SAME: {{^}}, probe +// CHECK-SAME: {{$}} + diff --git a/clang/test/Misc/target-invalid-cpu-note/hexagon.c b/clang/test/Misc/target-invalid-cpu-note/hexagon.c new file mode 100644 index 00000000000000..a7b73f33cccae6 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/hexagon.c @@ -0,0 +1,21 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple hexagon--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} hexagonv5 +// CHECK-SAME: {{^}}, hexagonv55 +// CHECK-SAME: {{^}}, hexagonv60 +// CHECK-SAME: {{^}}, hexagonv62 +// CHECK-SAME: {{^}}, hexagonv65 +// CHECK-SAME: {{^}}, hexagonv66 +// CHECK-SAME: {{^}}, hexagonv67 +// CHECK-SAME: {{^}}, hexagonv67t +// CHECK-SAME: {{^}}, hexagonv68 +// CHECK-SAME: {{^}}, hexagonv69 +// CHECK-SAME: {{^}}, hexagonv71 +// CHECK-SAME: {{^}}, hexagonv71t +// CHECK-SAME: {{^}}, hexagonv73 +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/lanai.c b/clang/test/Misc/target-invalid-cpu-note/lanai.c new file mode 100644 index 00000000000000..01714c4fce9402 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/lanai.c @@ -0,0 +1,9 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple lanai--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} v11 +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/mips.c b/clang/test/Misc/target-invalid-cpu-note/mips.c new file mode 100644 index 00000000000000..17b6ff9c57084d --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/mips.c @@ -0,0 +1,26 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple mips--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} mips1 +// CHECK-SAME: {{^}}, mips2 +// CHECK-SAME: {{^}}, mips3 +// CHECK-SAME: {{^}}, mips4 +// CHECK-SAME: {{^}}, mips5 +// CHECK-SAME: {{^}}, mips32 +// CHECK-SAME: {{^}}, mips32r2 +// CHECK-SAME: {{^}}, mips32r3 +// CHECK-SAME: {{^}}, mips32r5 +// CHECK-SAME: {{^}}, mips32r6 +// CHECK-SAME: {{^}}, mips64 +// CHECK-SAME: {{^}}, mips64r2 +// CHECK-SAME: {{^}}, mips64r3 +// CHECK-SAME: {{^}}, mips64r5 +// CHECK-SAME: {{^}}, mips64r6 +// CHECK-SAME: {{^}}, octeon +// CHECK-SAME: {{^}}, octeon+ +// CHECK-SAME: {{^}}, p5600 +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/nvptx.c b/clang/test/Misc/target-invalid-cpu-note/nvptx.c new file mode 100644 index 00000000000000..af4ccff6b07b6c --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/nvptx.c @@ -0,0 +1,80 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple nvptx--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --implicit-check-not={{[a-zA-Z0-9]}} +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} sm_20 +// CHECK-SAME: {{^}}, sm_21 +// CHECK-SAME: {{^}}, sm_30 +// CHECK-SAME: {{^}}, sm_32 +// CHECK-SAME: {{^}}, sm_35 +// CHECK-SAME: {{^}}, sm_37 +// CHECK-SAME: {{^}}, sm_50 +// CHECK-SAME: {{^}}, sm_52 +// CHECK-SAME: {{^}}, sm_53 +// CHECK-SAME: {{^}}, sm_60 +// CHECK-SAME: {{^}}, sm_61 +// CHECK-SAME: {{^}}, sm_62 +// CHECK-SAME: {{^}}, sm_70 +// CHECK-SAME: {{^}}, sm_72 +// CHECK-SAME: {{^}}, sm_75 +// CHECK-SAME: {{^}}, sm_80 +// CHECK-SAME: {{^}}, sm_86 +// CHECK-SAME: {{^}}, sm_87 +// CHECK-SAME: {{^}}, sm_89 +// CHECK-SAME: {{^}}, sm_90 +// CHECK-SAME: {{^}}, sm_90a +// CHECK-SAME: {{^}}, gfx600 +// CHECK-SAME: {{^}}, gfx601 +// CHECK-SAME: {{^}}, gfx602 +// CHECK-SAME: {{^}}, gfx700 +// CHECK-SAME: {{^}}, gfx701 +// CHECK-SAME: {{^}}, gfx702 +// CHECK-SAME: {{^}}, gfx703 +// CHECK-SAME: {{^}}, gfx704 +// CHECK-SAME: {{^}}, gfx705 +// CHECK-SAME: {{^}}, gfx801 +// CHECK-SAME: {{^}}, gfx802 +// CHECK-SAME: {{^}}, gfx803 +// CHECK-SAME: {{^}}, gfx805 +// CHECK-SAME: {{^}}, gfx810 +// CHECK-SAME: {{^}}, gfx9-generic +// CHECK-SAME: {{^}}, gfx900 +// CHECK-SAME: {{^}}, gfx902 +// CHECK-SAME: {{^}}, gfx904 +// CHECK-SAME: {{^}}, gfx906 +// CHECK-SAME: {{^}}, gfx908 +// CHECK-SAME: {{^}}, gfx909 +// CHECK-SAME: {{^}}, gfx90a +// CHECK-SAME: {{^}}, gfx90c +// CHECK-SAME: {{^}}, gfx940 +// CHECK-SAME: {{^}}, gfx941 +// CHECK-SAME: {{^}}, gfx942 +// CHECK-SAME: {{^}}, gfx10-1-generic +// CHECK-SAME: {{^}}, gfx1010 +// CHECK-SAME: {{^}}, gfx1011 +// CHECK-SAME: {{^}}, gfx1012 +// CHECK-SAME: {{^}}, gfx1013 +// CHECK-SAME: {{^}}, gfx10-3-generic +// CHECK-SAME: {{^}}, gfx1030 +// CHECK-SAME: {{^}}, gfx1031 +// CHECK-SAME: {{^}}, gfx1032 +// CHECK-SAME: {{^}}, gfx1033 +// CHECK-SAME: {{^}}, gfx1034 +// CHECK-SAME: {{^}}, gfx1035 +// CHECK-SAME: {{^}}, gfx1036 +// CHECK-SAME: {{^}}, gfx11-generic +// CHECK-SAME: {{^}}, gfx1100 +// CHECK-SAME: {{^}}, gfx1101 +// CHECK-SAME: {{^}}, gfx1102 +// CHECK-SAME: {{^}}, gfx1103 +// CHECK-SAME: {{^}}, gfx1150 +// CHECK-SAME: {{^}}, gfx1151 +// CHECK-SAME: {{^}}, gfx1152 +// CHECK-SAME: {{^}}, gfx12-generic +// CHECK-SAME: {{^}}, gfx1200 +// CHECK-SAME: {{^}}, gfx1201 +// CHECK-SAME: {{^}}, amdgcnspirv +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/powerpc.c b/clang/test/Misc/target-invalid-cpu-note/powerpc.c new file mode 100644 index 00000000000000..3ecc8e5c3eba03 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/powerpc.c @@ -0,0 +1,73 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple powerpc--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} generic +// CHECK-SAME: {{^}}, 440 +// CHECK-SAME: {{^}}, 440fp +// CHECK-SAME: {{^}}, ppc440 +// CHECK-SAME: {{^}}, 450 +// CHECK-SAME: {{^}}, 601 +// CHECK-SAME: {{^}}, 602 +// CHECK-SAME: {{^}}, 603 +// CHECK-SAME: {{^}}, 603e +// CHECK-SAME: {{^}}, 603ev +// CHECK-SAME: {{^}}, 604 +// CHECK-SAME: {{^}}, 604e +// CHECK-SAME: {{^}}, 620 +// CHECK-SAME: {{^}}, 630 +// CHECK-SAME: {{^}}, g3 +// CHECK-SAME: {{^}}, 7400 +// CHECK-SAME: {{^}}, g4 +// CHECK-SAME: {{^}}, 7450 +// CHECK-SAME: {{^}}, g4+ +// CHECK-SAME: {{^}}, 750 +// CHECK-SAME: {{^}}, 8548 +// CHECK-SAME: {{^}}, ppc405 +// CHECK-SAME: {{^}}, ppc464 +// CHECK-SAME: {{^}}, ppc476 +// CHECK-SAME: {{^}}, 970 +// CHECK-SAME: {{^}}, ppc970 +// CHECK-SAME: {{^}}, g5 +// CHECK-SAME: {{^}}, a2 +// CHECK-SAME: {{^}}, ppca2 +// CHECK-SAME: {{^}}, ppc-cell-be +// CHECK-SAME: {{^}}, e500 +// CHECK-SAME: {{^}}, e500mc +// CHECK-SAME: {{^}}, e5500 +// CHECK-SAME: {{^}}, power3 +// CHECK-SAME: {{^}}, pwr3 +// CHECK-SAME: {{^}}, pwr4 +// CHECK-SAME: {{^}}, power4 +// CHECK-SAME: {{^}}, pwr5 +// CHECK-SAME: {{^}}, power5 +// CHECK-SAME: {{^}}, pwr5+ +// CHECK-SAME: {{^}}, power5+ +// CHECK-SAME: {{^}}, pwr5x +// CHECK-SAME: {{^}}, power5x +// CHECK-SAME: {{^}}, pwr6 +// CHECK-SAME: {{^}}, power6 +// CHECK-SAME: {{^}}, pwr6x +// CHECK-SAME: {{^}}, power6x +// CHECK-SAME: {{^}}, pwr7 +// CHECK-SAME: {{^}}, power7 +// CHECK-SAME: {{^}}, pwr8 +// CHECK-SAME: {{^}}, power8 +// CHECK-SAME: {{^}}, pwr9 +// CHECK-SAME: {{^}}, power9 +// CHECK-SAME: {{^}}, pwr10 +// CHECK-SAME: {{^}}, power10 +// CHECK-SAME: {{^}}, pwr11 +// CHECK-SAME: {{^}}, power11 +// CHECK-SAME: {{^}}, powerpc +// CHECK-SAME: {{^}}, ppc +// CHECK-SAME: {{^}}, ppc32 +// CHECK-SAME: {{^}}, powerpc64 +// CHECK-SAME: {{^}}, ppc64 +// CHECK-SAME: {{^}}, powerpc64le +// CHECK-SAME: {{^}}, ppc64le +// CHECK-SAME: {{^}}, future +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/r600.c b/clang/test/Misc/target-invalid-cpu-note/r600.c new file mode 100644 index 00000000000000..1481d41745ea95 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/r600.c @@ -0,0 +1,34 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple r600--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} r600 +// CHECK-SAME: {{^}}, rv630 +// CHECK-SAME: {{^}}, rv635 +// CHECK-SAME: {{^}}, r630 +// CHECK-SAME: {{^}}, rs780 +// CHECK-SAME: {{^}}, rs880 +// CHECK-SAME: {{^}}, rv610 +// CHECK-SAME: {{^}}, rv620 +// CHECK-SAME: {{^}}, rv670 +// CHECK-SAME: {{^}}, rv710 +// CHECK-SAME: {{^}}, rv730 +// CHECK-SAME: {{^}}, rv740 +// CHECK-SAME: {{^}}, rv770 +// CHECK-SAME: {{^}}, cedar +// CHECK-SAME: {{^}}, palm +// CHECK-SAME: {{^}}, cypress +// CHECK-SAME: {{^}}, hemlock +// CHECK-SAME: {{^}}, juniper +// CHECK-SAME: {{^}}, redwood +// CHECK-SAME: {{^}}, sumo +// CHECK-SAME: {{^}}, sumo2 +// CHECK-SAME: {{^}}, barts +// CHECK-SAME: {{^}}, caicos +// CHECK-SAME: {{^}}, aruba +// CHECK-SAME: {{^}}, cayman +// CHECK-SAME: {{^}}, turks +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/riscv.c b/clang/test/Misc/target-invalid-cpu-note/riscv.c new file mode 100644 index 00000000000000..0a49755de7d25f --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/riscv.c @@ -0,0 +1,91 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32 +// RISCV32: error: unknown target CPU 'not-a-cpu' +// RISCV32-NEXT: note: valid target CPU values are: +// RISCV32-SAME: {{^}} generic-rv32 +// RISCV32-SAME: {{^}}, rocket-rv32 +// RISCV32-SAME: {{^}}, sifive-e20 +// RISCV32-SAME: {{^}}, sifive-e21 +// RISCV32-SAME: {{^}}, sifive-e24 +// RISCV32-SAME: {{^}}, sifive-e31 +// RISCV32-SAME: {{^}}, sifive-e34 +// RISCV32-SAME: {{^}}, sifive-e76 +// RISCV32-SAME: {{^}}, syntacore-scr1-base +// RISCV32-SAME: {{^}}, syntacore-scr1-max +// RISCV32-SAME: {{^}}, syntacore-scr3-rv32 +// RISCV32-SAME: {{^}}, syntacore-scr4-rv32 +// RISCV32-SAME: {{^}}, syntacore-scr5-rv32 +// RISCV32-SAME: {{$}} + +// RUN: not %clang_cc1 -triple riscv64 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV64 +// RISCV64: error: unknown target CPU 'not-a-cpu' +// RISCV64-NEXT: note: valid target CPU values are: +// RISCV64-SAME: {{^}} generic-rv64 +// RISCV64-SAME: {{^}}, rocket-rv64 +// RISCV64-SAME: {{^}}, sifive-p450 +// RISCV64-SAME: {{^}}, sifive-p470 +// RISCV64-SAME: {{^}}, sifive-p670 +// RISCV64-SAME: {{^}}, sifive-s21 +// RISCV64-SAME: {{^}}, sifive-s51 +// RISCV64-SAME: {{^}}, sifive-s54 +// RISCV64-SAME: {{^}}, sifive-s76 +// RISCV64-SAME: {{^}}, sifive-u54 +// RISCV64-SAME: {{^}}, sifive-u74 +// RISCV64-SAME: {{^}}, sifive-x280 +// RISCV64-SAME: {{^}}, spacemit-x60 +// RISCV64-SAME: {{^}}, syntacore-scr3-rv64 +// RISCV64-SAME: {{^}}, syntacore-scr4-rv64 +// RISCV64-SAME: {{^}}, syntacore-scr5-rv64 +// RISCV64-SAME: {{^}}, veyron-v1 +// RISCV64-SAME: {{^}}, xiangshan-nanhu +// RISCV64-SAME: {{$}} + +// RUN: not %clang_cc1 -triple riscv32 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV32 +// TUNE-RISCV32: error: unknown target CPU 'not-a-cpu' +// TUNE-RISCV32-NEXT: note: valid target CPU values are: +// TUNE-RISCV32-SAME: {{^}} generic-rv32 +// TUNE-RISCV32-SAME: {{^}}, rocket-rv32 +// TUNE-RISCV32-SAME: {{^}}, sifive-e20 +// TUNE-RISCV32-SAME: {{^}}, sifive-e21 +// TUNE-RISCV32-SAME: {{^}}, sifive-e24 +// TUNE-RISCV32-SAME: {{^}}, sifive-e31 +// TUNE-RISCV32-SAME: {{^}}, sifive-e34 +// TUNE-RISCV32-SAME: {{^}}, sifive-e76 +// TUNE-RISCV32-SAME: {{^}}, syntacore-scr1-base +// TUNE-RISCV32-SAME: {{^}}, syntacore-scr1-max +// TUNE-RISCV32-SAME: {{^}}, syntacore-scr3-rv32 +// TUNE-RISCV32-SAME: {{^}}, syntacore-scr4-rv32 +// TUNE-RISCV32-SAME: {{^}}, syntacore-scr5-rv32 +// TUNE-RISCV32-SAME: {{^}}, generic +// TUNE-RISCV32-SAME: {{^}}, rocket +// TUNE-RISCV32-SAME: {{^}}, sifive-7-series +// TUNE-RISCV32-SAME: {{$}} + +// RUN: not %clang_cc1 -triple riscv64 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV64 +// TUNE-RISCV64: error: unknown target CPU 'not-a-cpu' +// TUNE-RISCV64-NEXT: note: valid target CPU values are: +// TUNE-RISCV64-SAME: {{^}} generic-rv64 +// TUNE-RISCV64-SAME: {{^}}, rocket-rv64 +// TUNE-RISCV64-SAME: {{^}}, sifive-p450 +// TUNE-RISCV64-SAME: {{^}}, sifive-p470 +// TUNE-RISCV64-SAME: {{^}}, sifive-p670 +// TUNE-RISCV64-SAME: {{^}}, sifive-s21 +// TUNE-RISCV64-SAME: {{^}}, sifive-s51 +// TUNE-RISCV64-SAME: {{^}}, sifive-s54 +// TUNE-RISCV64-SAME: {{^}}, sifive-s76 +// TUNE-RISCV64-SAME: {{^}}, sifive-u54 +// TUNE-RISCV64-SAME: {{^}}, sifive-u74 +// TUNE-RISCV64-SAME: {{^}}, sifive-x280 +// TUNE-RISCV64-SAME: {{^}}, spacemit-x60 +// TUNE-RISCV64-SAME: {{^}}, syntacore-scr3-rv64 +// TUNE-RISCV64-SAME: {{^}}, syntacore-scr4-rv64 +// TUNE-RISCV64-SAME: {{^}}, syntacore-scr5-rv64 +// TUNE-RISCV64-SAME: {{^}}, veyron-v1 +// TUNE-RISCV64-SAME: {{^}}, xiangshan-nanhu +// TUNE-RISCV64-SAME: {{^}}, generic +// TUNE-RISCV64-SAME: {{^}}, rocket +// TUNE-RISCV64-SAME: {{^}}, sifive-7-series +// TUNE-RISCV64-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/sparc.c b/clang/test/Misc/target-invalid-cpu-note/sparc.c new file mode 100644 index 00000000000000..443c801904e60b --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/sparc.c @@ -0,0 +1,54 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple sparc--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SPARC +// SPARC: error: unknown target CPU 'not-a-cpu' +// SPARC-NEXT: note: valid target CPU values are: +// SPARC-SAME: {{^}} v8 +// SPARC-SAME: {{^}}, supersparc +// SPARC-SAME: {{^}}, sparclite +// SPARC-SAME: {{^}}, f934 +// SPARC-SAME: {{^}}, hypersparc +// SPARC-SAME: {{^}}, sparclite86x +// SPARC-SAME: {{^}}, sparclet +// SPARC-SAME: {{^}}, tsc701 +// SPARC-SAME: {{^}}, v9 +// SPARC-SAME: {{^}}, ultrasparc +// SPARC-SAME: {{^}}, ultrasparc3 +// SPARC-SAME: {{^}}, niagara +// SPARC-SAME: {{^}}, niagara2 +// SPARC-SAME: {{^}}, niagara3 +// SPARC-SAME: {{^}}, niagara4 +// SPARC-SAME: {{^}}, ma2100 +// SPARC-SAME: {{^}}, ma2150 +// SPARC-SAME: {{^}}, ma2155 +// SPARC-SAME: {{^}}, ma2450 +// SPARC-SAME: {{^}}, ma2455 +// SPARC-SAME: {{^}}, ma2x5x +// SPARC-SAME: {{^}}, ma2080 +// SPARC-SAME: {{^}}, ma2085 +// SPARC-SAME: {{^}}, ma2480 +// SPARC-SAME: {{^}}, ma2485 +// SPARC-SAME: {{^}}, ma2x8x +// SPARC-SAME: {{^}}, leon2 +// SPARC-SAME: {{^}}, at697e +// SPARC-SAME: {{^}}, at697f +// SPARC-SAME: {{^}}, leon3 +// SPARC-SAME: {{^}}, ut699 +// SPARC-SAME: {{^}}, gr712rc +// SPARC-SAME: {{^}}, leon4 +// SPARC-SAME: {{^}}, gr740 +// SPARC-SAME: {{$}} + +// RUN: not %clang_cc1 -triple sparcv9--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SPARCV9 +// SPARCV9: error: unknown target CPU 'not-a-cpu' +// SPARCV9-NEXT: note: valid target CPU values are: +// SPARCV9-SAME: {{^}} v9 +// SPARCV9-SAME: {{^}}, ultrasparc +// SPARCV9-SAME: {{^}}, ultrasparc3 +// SPARCV9-SAME: {{^}}, niagara +// SPARCV9-SAME: {{^}}, niagara2 +// SPARCV9-SAME: {{^}}, niagara3 +// SPARCV9-SAME: {{^}}, niagara4 +// SPARCV9-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/systemz.c b/clang/test/Misc/target-invalid-cpu-note/systemz.c new file mode 100644 index 00000000000000..22b0208eca902d --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/systemz.c @@ -0,0 +1,22 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple systemz--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} arch8 +// CHECK-SAME: {{^}}, z10 +// CHECK-SAME: {{^}}, arch9 +// CHECK-SAME: {{^}}, z196 +// CHECK-SAME: {{^}}, arch10 +// CHECK-SAME: {{^}}, zEC12 +// CHECK-SAME: {{^}}, arch11 +// CHECK-SAME: {{^}}, z13 +// CHECK-SAME: {{^}}, arch12 +// CHECK-SAME: {{^}}, z14 +// CHECK-SAME: {{^}}, arch13 +// CHECK-SAME: {{^}}, z15 +// CHECK-SAME: {{^}}, arch14 +// CHECK-SAME: {{^}}, z16 +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/wasm.c b/clang/test/Misc/target-invalid-cpu-note/wasm.c new file mode 100644 index 00000000000000..c90b2fe151e33f --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/wasm.c @@ -0,0 +1,11 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple wasm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s +// CHECK: error: unknown target CPU 'not-a-cpu' +// CHECK-NEXT: note: valid target CPU values are: +// CHECK-SAME: {{^}} mvp +// CHECK-SAME: {{^}}, bleeding-edge +// CHECK-SAME: {{^}}, generic +// CHECK-SAME: {{$}} diff --git a/clang/test/Misc/target-invalid-cpu-note/x86.c b/clang/test/Misc/target-invalid-cpu-note/x86.c new file mode 100644 index 00000000000000..607192a5409ba8 --- /dev/null +++ b/clang/test/Misc/target-invalid-cpu-note/x86.c @@ -0,0 +1,384 @@ +// This test uses '<prefix>-SAME: {{^}}' to start matching immediately where the +// previous check finished matching (specifically, caret is not treated as +// matching a start of line when used like this in FileCheck). + +// RUN: not %clang_cc1 -triple i386--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix X86 +// X86: error: unknown target CPU 'not-a-cpu' +// X86-NEXT: note: valid target CPU values are: +// X86-SAME: {{^}} i386 +// X86-SAME: {{^}}, i486 +// X86-SAME: {{^}}, winchip-c6 +// X86-SAME: {{^}}, winchip2 +// X86-SAME: {{^}}, c3 +// X86-SAME: {{^}}, i586 +// X86-SAME: {{^}}, pentium +// X86-SAME: {{^}}, pentium-mmx +// X86-SAME: {{^}}, pentiumpro +// X86-SAME: {{^}}, i686 +// X86-SAME: {{^}}, pentium2 +// X86-SAME: {{^}}, pentium3 +// X86-SAME: {{^}}, pentium3m +// X86-SAME: {{^}}, pentium-m +// X86-SAME: {{^}}, c3-2 +// X86-SAME: {{^}}, yonah +// X86-SAME: {{^}}, pentium4 +// X86-SAME: {{^}}, pentium4m +// X86-SAME: {{^}}, prescott +// X86-SAME: {{^}}, nocona +// X86-SAME: {{^}}, core2 +// X86-SAME: {{^}}, penryn +// X86-SAME: {{^}}, bonnell +// X86-SAME: {{^}}, atom +// X86-SAME: {{^}}, silvermont +// X86-SAME: {{^}}, slm +// X86-SAME: {{^}}, goldmont +// X86-SAME: {{^}}, goldmont-plus +// X86-SAME: {{^}}, tremont +// X86-SAME: {{^}}, nehalem +// X86-SAME: {{^}}, corei7 +// X86-SAME: {{^}}, westmere +// X86-SAME: {{^}}, sandybridge +// X86-SAME: {{^}}, corei7-avx +// X86-SAME: {{^}}, ivybridge +// X86-SAME: {{^}}, core-avx-i +// X86-SAME: {{^}}, haswell +// X86-SAME: {{^}}, core-avx2 +// X86-SAME: {{^}}, broadwell +// X86-SAME: {{^}}, skylake +// X86-SAME: {{^}}, skylake-avx512 +// X86-SAME: {{^}}, skx +// X86-SAME: {{^}}, cascadelake +// X86-SAME: {{^}}, cooperlake +// X86-SAME: {{^}}, cannonlake +// X86-SAME: {{^}}, icelake-client +// X86-SAME: {{^}}, rocketlake +// X86-SAME: {{^}}, icelake-server +// X86-SAME: {{^}}, tigerlake +// X86-SAME: {{^}}, sapphirerapids +// X86-SAME: {{^}}, alderlake +// X86-SAME: {{^}}, raptorlake +// X86-SAME: {{^}}, meteorlake +// X86-SAME: {{^}}, arrowlake +// X86-SAME: {{^}}, arrowlake-s +// X86-SAME: {{^}}, lunarlake +// X86-SAME: {{^}}, gracemont +// X86-SAME: {{^}}, pantherlake +// X86-SAME: {{^}}, sierraforest +// X86-SAME: {{^}}, grandridge +// X86-SAME: {{^}}, graniterapids +// X86-SAME: {{^}}, graniterapids-d +// X86-SAME: {{^}}, emeraldrapids +// X86-SAME: {{^}}, clearwaterforest +// X86-SAME: {{^}}, knl +// X86-SAME: {{^}}, knm +// X86-SAME: {{^}}, lakemont +// X86-SAME: {{^}}, k6 +// X86-SAME: {{^}}, k6-2 +// X86-SAME: {{^}}, k6-3 +// X86-SAME: {{^}}, athlon +// X86-SAME: {{^}}, athlon-tbird +// X86-SAME: {{^}}, athlon-xp +// X86-SAME: {{^}}, athlon-mp +// X86-SAME: {{^}}, athlon-4 +// X86-SAME: {{^}}, k8 +// X86-SAME: {{^}}, athlon64 +// X86-SAME: {{^}}, athlon-fx +// X86-SAME: {{^}}, opteron +// X86-SAME: {{^}}, k8-sse3 +// X86-SAME: {{^}}, athlon64-sse3 +// X86-SAME: {{^}}, opteron-sse3 +// X86-SAME: {{^}}, amdfam10 +// X86-SAME: {{^}}, barcelona +// X86-SAME: {{^}}, btver1 +// X86-SAME: {{^}}, btver2 +// X86-SAME: {{^}}, bdver1 +// X86-SAME: {{^}}, bdver2 +// X86-SAME: {{^}}, bdver3 +// X86-SAME: {{^}}, bdver4 +// X86-SAME: {{^}}, znver1 +// X86-SAME: {{^}}, znver2 +// X86-SAME: {{^}}, znver3 +// X86-SAME: {{^}}, znver4 +// X86-SAME: {{^}}, x86-64 +// X86-SAME: {{^}}, x86-64-v2 +// X86-SAME: {{^}}, x86-64-v3 +// X86-SAME: {{^}}, x86-64-v4 +// X86-SAME: {{^}}, geode +// X86-SAME: {{$}} + +// RUN: not %clang_cc1 -triple x86_64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix=X86_64 +// X86_64: error: unknown target CPU 'not-a-cpu' +// X86_64-NEXT: note: valid target CPU values are: +// X86_64-SAME: {{^}} nocona +// X86_64-SAME: {{^}}, core2 +// X86_64-SAME: {{^}}, penryn +// X86_64-SAME: {{^}}, bonnell +// X86_64-SAME: {{^}}, atom +// X86_64-SAME: {{^}}, silvermont +// X86_64-SAME: {{^}}, slm +// X86_64-SAME: {{^}}, goldmont +// X86_64-SAME: {{^}}, goldmont-plus +// X86_64-SAME: {{^}}, tremont +// X86_64-SAME: {{^}}, nehalem +// X86_64-SAME: {{^}}, corei7 +// X86_64-SAME: {{^}}, westmere +// X86_64-SAME: {{^}}, sandybridge +// X86_64-SAME: {{^}}, corei7-avx +// X86_64-SAME: {{^}}, ivybridge +// X86_64-SAME: {{^}}, core-avx-i +// X86_64-SAME: {{^}}, haswell +// X86_64-SAME: {{^}}, core-avx2 +// X86_64-SAME: {{^}}, broadwell +// X86_64-SAME: {{^}}, skylake +// X86_64-SAME: {{^}}, skylake-avx512 +// X86_64-SAME: {{^}}, skx +// X86_64-SAME: {{^}}, cascadelake +// X86_64-SAME: {{^}}, cooperlake +// X86_64-SAME: {{^}}, cannonlake +// X86_64-SAME: {{^}}, icelake-client +// X86_64-SAME: {{^}}, rocketlake +// X86_64-SAME: {{^}}, icelake-server +// X86_64-SAME: {{^}}, tigerlake +// X86_64-SAME: {{^}}, sapphirerapids +// X86_64-SAME: {{^}}, alderlake +// X86_64-SAME: {{^}}, raptorlake +// X86_64-SAME: {{^}}, meteorlake +// X86_64-SAME: {{^}}, arrowlake +// X86_64-SAME: {{^}}, arrowlake-s +// X86_64-SAME: {{^}}, lunarlake +// X86_64-SAME: {{^}}, gracemont +// X86_64-SAME: {{^}}, pantherlake +// X86_64-SAME: {{^}}, sierraforest +// X86_64-SAME: {{^}}, grandridge +// X86_64-SAME: {{^}}, graniterapids +// X86_64-SAME: {{^}}, graniterapids-d +// X86_64-SAME: {{^}}, emeraldrapids +// X86_64-SAME: {{^}}, clearwaterforest +// X86_64-SAME: {{^}}, knl +// X86_64-SAME: {{^}}, knm +// X86_64-SAME: {{^}}, k8 +// X86_64-SAME: {{^}}, athlon64 +// X86_64-SAME: {{^}}, athlon-fx +// X86_64-SAME: {{^}}, opteron +// X86_64-SAME: {{^}}, k8-sse3 +// X86_64-SAME: {{^}}, athlon64-sse3 +// X86_64-SAME: {{^}}, opteron-sse3 +// X86_64-SAME: {{^}}, amdfam10 +// X86_64-SAME: {{^}}, barcelona +// X86_64-SAME: {{^}}, btver1 +// X86_64-SAME: {{^}}, btver2 +// X86_64-SAME: {{^}}, bdver1 +// X86_64-SAME: {{^}}, bdver2 +// X86_64-SAME: {{^}}, bdver3 +// X86_64-SAME: {{^}}, bdver4 +// X86_64-SAME: {{^}}, znver1 +// X86_64-SAME: {{^}}, znver2 +// X86_64-SAME: {{^}}, znver3 +// X86_64-SAME: {{^}}, znver4 +// X86_64-SAME: {{^}}, x86-64 +// X86_64-SAME: {{^}}, x86-64-v2 +// X86_64-SAME: {{^}}, x86-64-v3 +// X86_64-SAME: {{^}}, x86-64-v4 +// X86_64-SAME: {{$}} + +// RUN: not %clang_cc1 -triple i386--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix=TUNE_X86 +// TUNE_X86: error: unknown target CPU 'not-a-cpu' +// TUNE_X86-NEXT: note: valid target CPU values are: +// TUNE_X86-SAME: {{^}} i386 +// TUNE_X86-SAME: {{^}}, i486 +// TUNE_X86-SAME: {{^}}, winchip-c6 +// TUNE_X86-SAME: {{^}}, winchip2 +// TUNE_X86-SAME: {{^}}, c3 +// TUNE_X86-SAME: {{^}}, i586 +// TUNE_X86-SAME: {{^}}, pentium +// TUNE_X86-SAME: {{^}}, pentium-mmx +// TUNE_X86-SAME: {{^}}, pentiumpro +// TUNE_X86-SAME: {{^}}, i686 +// TUNE_X86-SAME: {{^}}, pentium2 +// TUNE_X86-SAME: {{^}}, pentium3 +// TUNE_X86-SAME: {{^}}, pentium3m +// TUNE_X86-SAME: {{^}}, pentium-m +// TUNE_X86-SAME: {{^}}, c3-2 +// TUNE_X86-SAME: {{^}}, yonah +// TUNE_X86-SAME: {{^}}, pentium4 +// TUNE_X86-SAME: {{^}}, pentium4m +// TUNE_X86-SAME: {{^}}, prescott +// TUNE_X86-SAME: {{^}}, nocona +// TUNE_X86-SAME: {{^}}, core2 +// TUNE_X86-SAME: {{^}}, penryn +// TUNE_X86-SAME: {{^}}, bonnell +// TUNE_X86-SAME: {{^}}, atom +// TUNE_X86-SAME: {{^}}, silvermont +// TUNE_X86-SAME: {{^}}, slm +// TUNE_X86-SAME: {{^}}, goldmont +// TUNE_X86-SAME: {{^}}, goldmont-plus +// TUNE_X86-SAME: {{^}}, tremont +// TUNE_X86-SAME: {{^}}, nehalem +// TUNE_X86-SAME: {{^}}, corei7 +// TUNE_X86-SAME: {{^}}, westmere +// TUNE_X86-SAME: {{^}}, sandybridge +// TUNE_X86-SAME: {{^}}, corei7-avx +// TUNE_X86-SAME: {{^}}, ivybridge +// TUNE_X86-SAME: {{^}}, core-avx-i +// TUNE_X86-SAME: {{^}}, haswell +// TUNE_X86-SAME: {{^}}, core-avx2 +// TUNE_X86-SAME: {{^}}, broadwell +// TUNE_X86-SAME: {{^}}, skylake +// TUNE_X86-SAME: {{^}}, skylake-avx512 +// TUNE_X86-SAME: {{^}}, skx +// TUNE_X86-SAME: {{^}}, cascadelake +// TUNE_X86-SAME: {{^}}, cooperlake +// TUNE_X86-SAME: {{^}}, cannonlake +// TUNE_X86-SAME: {{^}}, icelake-client +// TUNE_X86-SAME: {{^}}, rocketlake +// TUNE_X86-SAME: {{^}}, icelake-server +// TUNE_X86-SAME: {{^}}, tigerlake +// TUNE_X86-SAME: {{^}}, sapphirerapids +// TUNE_X86-SAME: {{^}}, alderlake +// TUNE_X86-SAME: {{^}}, raptorlake +// TUNE_X86-SAME: {{^}}, meteorlake +// TUNE_X86-SAME: {{^}}, arrowlake +// TUNE_X86-SAME: {{^}}, arrowlake-s +// TUNE_X86-SAME: {{^}}, lunarlake +// TUNE_X86-SAME: {{^}}, gracemont +// TUNE_X86-SAME: {{^}}, pantherlake +// TUNE_X86-SAME: {{^}}, sierraforest +// TUNE_X86-SAME: {{^}}, grandridge +// TUNE_X86-SAME: {{^}}, graniterapids +// TUNE_X86-SAME: {{^}}, graniterapids-d +// TUNE_X86-SAME: {{^}}, emeraldrapids +// TUNE_X86-SAME: {{^}}, clearwaterforest +// TUNE_X86-SAME: {{^}}, knl +// TUNE_X86-SAME: {{^}}, knm +// TUNE_X86-SAME: {{^}}, lakemont +// TUNE_X86-SAME: {{^}}, k6 +// TUNE_X86-SAME: {{^}}, k6-2 +// TUNE_X86-SAME: {{^}}, k6-3 +// TUNE_X86-SAME: {{^}}, athlon +// TUNE_X86-SAME: {{^}}, athlon-tbird +// TUNE_X86-SAME: {{^}}, athlon-xp +// TUNE_X86-SAME: {{^}}, athlon-mp +// TUNE_X86-SAME: {{^}}, athlon-4 +// TUNE_X86-SAME: {{^}}, k8 +// TUNE_X86-SAME: {{^}}, athlon64 +// TUNE_X86-SAME: {{^}}, athlon-fx +// TUNE_X86-SAME: {{^}}, opteron +// TUNE_X86-SAME: {{^}}, k8-sse3 +// TUNE_X86-SAME: {{^}}, athlon64-sse3 +// TUNE_X86-SAME: {{^}}, opteron-sse3 +// TUNE_X86-SAME: {{^}}, amdfam10 +// TUNE_X86-SAME: {{^}}, barcelona +// TUNE_X86-SAME: {{^}}, btver1 +// TUNE_X86-SAME: {{^}}, btver2 +// TUNE_X86-SAME: {{^}}, bdver1 +// TUNE_X86-SAME: {{^}}, bdver2 +// TUNE_X86-SAME: {{^}}, bdver3 +// TUNE_X86-SAME: {{^}}, bdver4 +// TUNE_X86-SAME: {{^}}, znver1 +// TUNE_X86-SAME: {{^}}, znver2 +// TUNE_X86-SAME: {{^}}, znver3 +// TUNE_X86-SAME: {{^}}, znver4 +// TUNE_X86-SAME: {{^}}, x86-64 +// TUNE_X86-SAME: {{^}}, geode +// TUNE_X86-SAME: {{$}} + +// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix=TUNE_X86_64 +// TUNE_X86_64: error: unknown target CPU 'not-a-cpu' +// TUNE_X86_64-NEXT: note: valid target CPU values are: +// TUNE_X86_64-SAME: {{^}} i386 +// TUNE_X86_64-SAME: {{^}}, i486 +// TUNE_X86_64-SAME: {{^}}, winchip-c6 +// TUNE_X86_64-SAME: {{^}}, winchip2 +// TUNE_X86_64-SAME: {{^}}, c3 +// TUNE_X86_64-SAME: {{^}}, i586 +// TUNE_X86_64-SAME: {{^}}, pentium +// TUNE_X86_64-SAME: {{^}}, pentium-mmx +// TUNE_X86_64-SAME: {{^}}, pentiumpro +// TUNE_X86_64-SAME: {{^}}, i686 +// TUNE_X86_64-SAME: {{^}}, pentium2 +// TUNE_X86_64-SAME: {{^}}, pentium3 +// TUNE_X86_64-SAME: {{^}}, pentium3m +// TUNE_X86_64-SAME: {{^}}, pentium-m +// TUNE_X86_64-SAME: {{^}}, c3-2 +// TUNE_X86_64-SAME: {{^}}, yonah +// TUNE_X86_64-SAME: {{^}}, pentium4 +// TUNE_X86_64-SAME: {{^}}, pentium4m +// TUNE_X86_64-SAME: {{^}}, prescott +// TUNE_X86_64-SAME: {{^}}, nocona +// TUNE_X86_64-SAME: {{^}}, core2 +// TUNE_X86_64-SAME: {{^}}, penryn +// TUNE_X86_64-SAME: {{^}}, bonnell +// TUNE_X86_64-SAME: {{^}}, atom +// TUNE_X86_64-SAME: {{^}}, silvermont +// TUNE_X86_64-SAME: {{^}}, slm +// TUNE_X86_64-SAME: {{^}}, goldmont +// TUNE_X86_64-SAME: {{^}}, goldmont-plus +// TUNE_X86_64-SAME: {{^}}, tremont +// TUNE_X86_64-SAME: {{^}}, nehalem +// TUNE_X86_64-SAME: {{^}}, corei7 +// TUNE_X86_64-SAME: {{^}}, westmere +// TUNE_X86_64-SAME: {{^}}, sandybridge +// TUNE_X86_64-SAME: {{^}}, corei7-avx +// TUNE_X86_64-SAME: {{^}}, ivybridge +// TUNE_X86_64-SAME: {{^}}, core-avx-i +// TUNE_X86_64-SAME: {{^}}, haswell +// TUNE_X86_64-SAME: {{^}}, core-avx2 +// TUNE_X86_64-SAME: {{^}}, broadwell +// TUNE_X86_64-SAME: {{^}}, skylake +// TUNE_X86_64-SAME: {{^}}, skylake-avx512 +// TUNE_X86_64-SAME: {{^}}, skx +// TUNE_X86_64-SAME: {{^}}, cascadelake +// TUNE_X86_64-SAME: {{^}}, cooperlake +// TUNE_X86_64-SAME: {{^}}, cannonlake +// TUNE_X86_64-SAME: {{^}}, icelake-client +// TUNE_X86_64-SAME: {{^}}, rocketlake +// TUNE_X86_64-SAME: {{^}}, icelake-server +// TUNE_X86_64-SAME: {{^}}, tigerlake +// TUNE_X86_64-SAME: {{^}}, sapphirerapids +// TUNE_X86_64-SAME: {{^}}, alderlake +// TUNE_X86_64-SAME: {{^}}, raptorlake +// TUNE_X86_64-SAME: {{^}}, meteorlake +// TUNE_X86_64-SAME: {{^}}, arrowlake +// TUNE_X86_64-SAME: {{^}}, arrowlake-s +// TUNE_X86_64-SAME: {{^}}, lunarlake +// TUNE_X86_64-SAME: {{^}}, gracemont +// TUNE_X86_64-SAME: {{^}}, pantherlake +// TUNE_X86_64-SAME: {{^}}, sierraforest +// TUNE_X86_64-SAME: {{^}}, grandridge +// TUNE_X86_64-SAME: {{^}}, graniterapids +// TUNE_X86_64-SAME: {{^}}, graniterapids-d +// TUNE_X86_64-SAME: {{^}}, emeraldrapids +// TUNE_X86_64-SAME: {{^}}, clearwaterforest +// TUNE_X86_64-SAME: {{^}}, knl +// TUNE_X86_64-SAME: {{^}}, knm +// TUNE_X86_64-SAME: {{^}}, lakemont +// TUNE_X86_64-SAME: {{^}}, k6 +// TUNE_X86_64-SAME: {{^}}, k6-2 +// TUNE_X86_64-SAME: {{^}}, k6-3 +// TUNE_X86_64-SAME: {{^}}, athlon +// TUNE_X86_64-SAME: {{^}}, athlon-tbird +// TUNE_X86_64-SAME: {{^}}, athlon-xp +// TUNE_X86_64-SAME: {{^}}, athlon-mp +// TUNE_X86_64-SAME: {{^}}, athlon-4 +// TUNE_X86_64-SAME: {{^}}, k8 +// TUNE_X86_64-SAME: {{^}}, athlon64 +// TUNE_X86_64-SAME: {{^}}, athlon-fx +// TUNE_X86_64-SAME: {{^}}, opteron +// TUNE_X86_64-SAME: {{^}}, k8-sse3 +// TUNE_X86_64-SAME: {{^}}, athlon64-sse3 +// TUNE_X86_64-SAME: {{^}}, opteron-sse3 +// TUNE_X86_64-SAME: {{^}}, amdfam10 +// TUNE_X86_64-SAME: {{^}}, barcelona +// TUNE_X86_64-SAME: {{^}}, btver1 +// TUNE_X86_64-SAME: {{^}}, btver2 +// TUNE_X86_64-SAME: {{^}}, bdver1 +// TUNE_X86_64-SAME: {{^}}, bdver2 +// TUNE_X86_64-SAME: {{^}}, bdver3 +// TUNE_X86_64-SAME: {{^}}, bdver4 +// TUNE_X86_64-SAME: {{^}}, znver1 +// TUNE_X86_64-SAME: {{^}}, znver2 +// TUNE_X86_64-SAME: {{^}}, znver3 +// TUNE_X86_64-SAME: {{^}}, znver4 +// TUNE_X86_64-SAME: {{^}}, x86-64 +// TUNE_X86_64-SAME: {{^}}, geode +// TUNE_X86_64-SAME: {{$}} >From 837d32fb113db58a74312ae03072af55f9ff1362 Mon Sep 17 00:00:00 2001 From: Sam Elliott <quic_aelli...@quicinc.com> Date: Thu, 8 Aug 2024 04:03:36 -0700 Subject: [PATCH 2/2] [RISCV] Add Hazard3 Core as taped out for RP2350 Luke Wren's Hazard3 is a configurable, open-source 32-bit RISC-V core. The core's source code and docs are available on github: https://github.com/wren6991/hazard3 This is the RISC-V core used in the RP2350, a recently announced SoC by Raspberry Pi (which also contains Arm cores): https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf We have agreed to name this `-mcpu` option `rp2350-hazard3`, and it reflects exactly the options configured in the RP2350 chips. Notably, the Zbc is not configured, and nor is B because the `misa.B` bit is not either. --- clang/test/Driver/riscv-cpus.c | 15 +++++++++++++++ clang/test/Misc/target-invalid-cpu-note/riscv.c | 2 ++ llvm/docs/ReleaseNotes.rst | 2 ++ llvm/lib/Target/RISCV/RISCVProcessors.td | 16 ++++++++++++++++ 4 files changed, 35 insertions(+) diff --git a/clang/test/Driver/riscv-cpus.c b/clang/test/Driver/riscv-cpus.c index 2fa5b1753745f8..481eaae9153e86 100644 --- a/clang/test/Driver/riscv-cpus.c +++ b/clang/test/Driver/riscv-cpus.c @@ -402,6 +402,21 @@ // MCPU-SIFIVE-P670-SAME: "-target-feature" "+zvkt" // MCPU-SIFIVE-P670-SAME: "-target-abi" "lp64d" +// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=rp2350-hazard3 | FileCheck -check-prefix=MCPU-HAZARD3 %s +// MCPU-HAZARD3: "-target-cpu" "rp2350-hazard3" +// MCPU-HAZARD3-SAME: "-target-feature" "+m" +// MCPU-HAZARD3-SAME: "-target-feature" "+a" +// MCPU-HAZARD3-SAME: "-target-feature" "+c" +// MCPU-HAZARD3-SAME: "-target-feature" "+zicsr" +// MCPU-HAZARD3-SAME: "-target-feature" "+zifencei" +// MCPU-HAZARD3-SAME: "-target-feature" "+zcb" +// MCPU-HAZARD3-SAME: "-target-feature" "+zcmp" +// MCPU-HAZARD3-SAME: "-target-feature" "+zba" +// MCPU-HAZARD3-SAME: "-target-feature" "+zbb" +// MCPU-HAZARD3-SAME: "-target-feature" "+zbkb" +// MCPU-HAZARD3-SAME: "-target-feature" "+zbs" +// MCPU-HAZARD3-SAME: "-target-abi" "ilp32" + // Check failed cases // RUN: not %clang --target=riscv32 -### -c %s 2>&1 -mcpu=generic-rv321 | FileCheck -check-prefix=FAIL-MCPU-NAME %s diff --git a/clang/test/Misc/target-invalid-cpu-note/riscv.c b/clang/test/Misc/target-invalid-cpu-note/riscv.c index 0a49755de7d25f..96d3cefd434d78 100644 --- a/clang/test/Misc/target-invalid-cpu-note/riscv.c +++ b/clang/test/Misc/target-invalid-cpu-note/riscv.c @@ -7,6 +7,7 @@ // RISCV32-NEXT: note: valid target CPU values are: // RISCV32-SAME: {{^}} generic-rv32 // RISCV32-SAME: {{^}}, rocket-rv32 +// RISCV32-SAME: {{^}}, rp2350-hazard3 // RISCV32-SAME: {{^}}, sifive-e20 // RISCV32-SAME: {{^}}, sifive-e21 // RISCV32-SAME: {{^}}, sifive-e24 @@ -48,6 +49,7 @@ // TUNE-RISCV32-NEXT: note: valid target CPU values are: // TUNE-RISCV32-SAME: {{^}} generic-rv32 // TUNE-RISCV32-SAME: {{^}}, rocket-rv32 +// TUNE-RISCV32-SAME: {{^}}, rp2350-hazard3 // TUNE-RISCV32-SAME: {{^}}, sifive-e20 // TUNE-RISCV32-SAME: {{^}}, sifive-e21 // TUNE-RISCV32-SAME: {{^}}, sifive-e24 diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst index 42c0ad976089f7..efecaadb55bb7c 100644 --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -108,6 +108,8 @@ Changes to the RISC-V Backend fill value) rather than NOPs. * Added Syntacore SCR4 and SCR5 CPUs: ``-mcpu=syntacore-scr4/5-rv32/64`` * ``-mcpu=sifive-p470`` was added. +* Added Hazard3 CPU as taped out for RP2350: ``-mcpu=rp2350-hazard3`` (32-bit + only). * Fixed length vector support using RVV instructions now requires VLEN>=64. This means Zve32x and Zve32f will also require Zvl64b. The prior support was largely untested. diff --git a/llvm/lib/Target/RISCV/RISCVProcessors.td b/llvm/lib/Target/RISCV/RISCVProcessors.td index 640fe9670d542b..d4ec5ecc6489c1 100644 --- a/llvm/lib/Target/RISCV/RISCVProcessors.td +++ b/llvm/lib/Target/RISCV/RISCVProcessors.td @@ -454,3 +454,19 @@ def SPACEMIT_X60 : RISCVProcessorModel<"spacemit-x60", FeatureStdExtZvkt, FeatureStdExtZvl256b]), [TuneDLenFactor2]>; + +def RP2350_HAZARD3 : RISCVProcessorModel<"rp2350-hazard3", + NoSchedModel, + [Feature32Bit, + FeatureStdExtI, + FeatureStdExtM, + FeatureStdExtA, + FeatureStdExtC, + FeatureStdExtZicsr, + FeatureStdExtZifencei, + FeatureStdExtZba, + FeatureStdExtZbb, + FeatureStdExtZbs, + FeatureStdExtZbkb, + FeatureStdExtZcb, + FeatureStdExtZcmp]>; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits