brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.5 KiB · 84270aa Raw
228 lines · c
1// REQUIRES: x86-registered-target2 3// expected-no-diagnostics4 5// We support -m32 and -m64.  We support all x86 CPU feature flags in gcc's -m6// flag space.7// RUN: %clang_cl /Zs /WX -m32 -m64 -msse3 -msse4.1 -mavx -mno-avx \8// RUN:     --target=i386-pc-win32 -### -- 2>&1 %s | FileCheck -check-prefix=MFLAGS %s9// MFLAGS-NOT: invalid /arch: argument10//11 12// RUN: %clang_cl -m32 -arch:IA32 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_IA32 -- %s13#if defined(TEST_32_ARCH_IA32)14#if _M_IX86_FP || __AVX__ || __AVX2__ || __AVX512F__  || __AVX512BW__15#error fail16#endif17#endif18 19// arch: args are case-sensitive.20// RUN: %clang_cl -m32 -arch:ia32 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=ia32 %s21// ia32: invalid /arch: argument 'ia32'; for 32-bit expected one of AVX, AVX10.1, AVX10.2, AVX2, AVX512, AVX512F, IA32, SSE, SSE222 23// RUN: %clang_cl -m64 -arch:IA32 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=IA3264 %s24// IA3264: invalid /arch: argument 'IA32'; for 64-bit expected one of AVX, AVX10.1, AVX10.2, AVX2, AVX512, AVX512F25 26// RUN: %clang_cl -m32 -arch:SSE --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_SSE -- %s27#if defined(TEST_32_ARCH_SSE)28#if _M_IX86_FP != 1 || __AVX__ || __AVX2__ || __AVX512F__  || __AVX512BW__29#error fail30#endif31#endif32 33// RUN: %clang_cl -m32 -arch:sse --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse %s34// sse: invalid /arch: argument35 36// RUN: %clang_cl -m32 -arch:SSE2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_SSE2 -- %s37#if defined(TEST_32_ARCH_SSE2)38#if _M_IX86_FP != 2 || __AVX__ || __AVX2__ || __AVX512F__  || __AVX512BW__39#error fail40#endif41#endif42 43// RUN: %clang_cl -m32 -arch:sse2 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse %s44// sse2: invalid /arch: argument45 46// RUN: %clang_cl -m64 -arch:SSE --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=SSE64 %s47// SSE64: invalid /arch: argument 'SSE'; for 64-bit expected one of AVX, AVX10.1, AVX10.2, AVX2, AVX512, AVX512F48 49// RUN: %clang_cl -m64 -arch:SSE2 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=SSE264 %s50// SSE264: invalid /arch: argument51 52// RUN: %clang_cl -m32 -arch:AVX --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX -- %s53#if defined(TEST_32_ARCH_AVX)54#if _M_IX86_FP != 2 || !__AVX__ || __AVX2__ || __AVX512F__  || __AVX512BW__55#error fail56#endif57#endif58 59// RUN: %clang_cl -m32 -arch:avx --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx %s60// avx: invalid /arch: argument61 62// RUN: %clang_cl -m32 -arch:AVX2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX2 -- %s63#if defined(TEST_32_ARCH_AVX2)64#if _M_IX86_FP != 2 || !__AVX__ || !__AVX2__ || __AVX512F__  || __AVX512BW__65#error fail66#endif67#endif68 69// RUN: %clang_cl -m32 -arch:avx2 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx2 %s70// avx2: invalid /arch: argument71 72// RUN: %clang_cl -m32 -arch:AVX512F --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX512F -- %s73#if defined(TEST_32_ARCH_AVX512F)74#if _M_IX86_FP != 2 || !__AVX__ || !__AVX2__ || !__AVX512F__  || __AVX512BW__75#error fail76#endif77#endif78 79// RUN: %clang_cl -m32 -arch:avx512f --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx512f %s80// avx512f: invalid /arch: argument81 82// RUN: %clang_cl -m32 -arch:AVX512 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX512 -- %s83// RUN: %clang_cl -m32 -arch:AVX10.1 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX512 -- %s84// RUN: %clang_cl -m32 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX512 -- %s85#if defined(TEST_32_ARCH_AVX512)86#if _M_IX86_FP != 2 || !__AVX__ || !__AVX2__ || !__AVX512F__  || !__AVX512BW__87#error fail88#endif89#endif90 91// RUN: %clang_cl -m32 -arch:avx512 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx512 %s92// avx512: invalid /arch: argument93 94// RUN: %clang_cl -m32 -arch:AVX10.1 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX10_1_ADD -- %s95// RUN: %clang_cl -m32 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX10_1_ADD -- %s96#if defined(TEST_32_ARCH_AVX10_1_ADD)97#if !__AVX512VL__  || !__AVX512CD__ || !__AVX512DQ__ || !__AVX512VBMI__ || !__AVX512IFMA__ || !__AVX512VNNI__ ||\98    !__AVX512BF16__ || !__AVX512VPOPCNTDQ__ || !__AVX512VBMI2__ || !__AVX512VPOPCNTDQ__ || !__AVX512BITALG__ || !__AVX512FP16__99#error fail100#endif101#endif102 103// RUN: %clang_cl -m32 -arch:avx10.1 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx10_1 %s104// avx10_1: invalid /arch: argument105 106// RUN: %clang_cl -m32 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_32_ARCH_AVX10_2_ADD -- %s107#if defined(TEST_32_ARCH_AVX10_2_ADD)108#if !__AVX10_2__109#error fail110#endif111#endif112 113// RUN: %clang_cl -m32 -arch:avx10.2 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx10_2 %s114// avx10_2: invalid /arch: argument115 116// RUN: %clang_cl -m64 -arch:AVX --target=x86_64-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX -- %s117#if defined(TEST_64_ARCH_AVX)118#if _M_IX86_FP || !__AVX__ || __AVX2__ || __AVX512F__  || __AVX512BW__119#error fail120#endif121#endif122 123// RUN: %clang_cl -m64 -arch:avx --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx64 %s124// avx64: invalid /arch: argument125 126// RUN: %clang_cl -m64 -arch:AVX2 --target=x86_64-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX2 -- %s127#if defined(TEST_64_ARCH_AVX2)128#if _M_IX86_FP || !__AVX__ || !__AVX2__ || __AVX512F__  || __AVX512BW__129#error fail130#endif131#endif132 133// RUN: %clang_cl -m64 -arch:avx2 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx264 %s134// avx264: invalid /arch: argument135 136// RUN: %clang_cl -m64 -arch:AVX512F --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX512F -- %s137#if defined(TEST_64_ARCH_AVX512F)138#if _M_IX86_FP || !__AVX__ || !__AVX2__ || !__AVX512F__  || __AVX512BW__139#error fail140#endif141#endif142 143// RUN: %clang_cl -m64 -arch:avx512f --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx512f64 %s144// avx512f64: invalid /arch: argument145 146// RUN: %clang_cl -m64 -arch:AVX512 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX512 -- %s147// RUN: %clang_cl -m64 -arch:AVX10.1 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX512 -- %s148// RUN: %clang_cl -m64 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX512 -- %s149#if defined(TEST_64_ARCH_AVX512)150#if _M_IX86_FP || !__AVX__ || !__AVX2__ || !__AVX512F__  || !__AVX512BW__151#error fail152#endif153#endif154 155// RUN: %clang_cl -m64 -arch:avx512 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx51264 %s156// avx51264: invalid /arch: argument157 158// RUN: %clang_cl -m64 -arch:AVX10.1 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX10_1_ADD -- %s159// RUN: %clang_cl -m64 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX10_1_ADD -- %s160#if defined(TEST_64_ARCH_AVX10_1_ADD)161#if !__AVX512VL__  || !__AVX512CD__ || !__AVX512DQ__ || !__AVX512VBMI__ || !__AVX512IFMA__ || !__AVX512VNNI__ ||\162    !__AVX512BF16__ || !__AVX512VPOPCNTDQ__ || !__AVX512VBMI2__ || !__AVX512VPOPCNTDQ__ || !__AVX512BITALG__ || !__AVX512FP16__163#error fail164#endif165#endif166 167// RUN: %clang_cl -m64 -arch:avx10.1 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx10_1_64 %s168// avx10_1_64: invalid /arch: argument169 170// RUN: %clang_cl -m64 -arch:AVX10.2 --target=i386-pc-windows /c /Fo%t.obj -Xclang -verify -DTEST_64_ARCH_AVX10_2_ADD -- %s171#if defined(TEST_64_ARCH_AVX10_2_ADD)172#if !__AVX10_2__173#error fail174#endif175#endif176 177// RUN: %clang_cl -m64 -arch:avx10.2 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx10_2_64 %s178// avx10_2_64: invalid /arch: argument179 180// RUN: %clang_cl -m64 -arch:AVX -tune:haswell --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=tune %s181// tune: "-target-cpu" "sandybridge"182// tune-SAME: "-tune-cpu" "haswell"183 184// RUN: %clang_cl -m64 -arch:AVX512 -vlen=512 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen512 %s185// RUN: %clang_cl -m64 -arch:AVX10.1 -vlen=512 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen512 %s186// RUN: %clang_cl -m64 -arch:AVX10.2 -vlen=512 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen512 %s187// vlen512: "-mprefer-vector-width=512"188 189// RUN: %clang_cl -m64 -arch:AVX512 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s190// RUN: %clang_cl -m64 -arch:AVX10.1 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s191// RUN: %clang_cl -m64 -arch:AVX10.2 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s192// RUN: %clang_cl -m64 -arch:AVX10.1 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s193// RUN: %clang_cl -m64 -arch:AVX10.2 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s194// vlen256: "-mprefer-vector-width=256"195 196// RUN: %clang_cl -m64 -arch:AVX512 -vlen=512 -vlen --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=novlen %s197// novlen-NOT: -mprefer-vector-width198 199// RUN: %clang_cl -m64 -arch:AVX2 -vlen=512 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx2vlen512 %s200// avx2vlen512: invalid argument '/vlen=512' not allowed with '/arch:AVX2'201 202// RUN: %clang_cl -m64 -arch:AVX2 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx2vlen256 %s203// avx2vlen256-NOT: invalid argument204 205// RUN: %clang_cl -m32 -arch:SSE2 -vlen=256 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse2vlen256 %s206// RUN: %clang_cl -m64 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse2vlen256 %s207// sse2vlen256: invalid argument '/vlen=256' not allowed with '/arch:SSE2'208 209// RUN: %clang_cl -m32 -vlen=256 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=ia32vlen256 %s210// ia32vlen256: invalid argument '/vlen=256' not allowed with '/arch:IA32'211 212void f(void) {213}214 215 216// RUN: not %clang_cl -### --target=i386-pc-windows -mapx-features=ndd -- 2>&1 %s | FileCheck --check-prefix=NON-APX %s217// RUN: not %clang_cl -### --target=i386-pc-windows -mapxf -- 2>&1 %s | FileCheck --check-prefix=NON-APX %s218// RUN: %clang_cl -### --target=i386-pc-windows -mno-apxf -- 2>&1 %s > /dev/null219// NON-APX:      error: unsupported option '-mapx-features=|-mapxf' for target 'i386-pc-windows{{.*}}'220// NON-APX-NOT:  error: {{.*}} -mapx-features=221 222// RUN: %clang_cl --target=x86_64-pc-windows -mapxf -### -- 2>&1 %s | FileCheck -check-prefix=APXF %s223// RUN: %clang_cl --target=x86_64-pc-windows -mapxf -mno-apxf -### -- 2>&1 %s | FileCheck -check-prefix=NO-APXF %s224// RUN: %clang_cl --target=x86_64-pc-windows -mapx-features=egpr,push2pop2,ppx,ndd,ccmp,nf,cf,zu -### -- 2>&1 %s | FileCheck -check-prefix=APXALL %s225// APXF: "-target-feature" "+egpr" "-target-feature" "+push2pop2" "-target-feature" "+ppx" "-target-feature" "+ndd" "-target-feature" "+ccmp" "-target-feature" "+nf" "-target-feature" "+zu"226// NO-APXF: "-target-feature" "-egpr" "-target-feature" "-push2pop2" "-target-feature" "-ppx" "-target-feature" "-ndd" "-target-feature" "-ccmp" "-target-feature" "-nf" "-target-feature" "-zu"227// APXALL: "-target-feature" "+egpr" "-target-feature" "+push2pop2" "-target-feature" "+ppx" "-target-feature" "+ndd" "-target-feature" "+ccmp" "-target-feature" "+nf" "-target-feature" "+cf" "-target-feature" "+zu"228