r362637 - [cmake] Remove duplicate TestingSupport library for linking
Author: pzheng Date: Wed Jun 5 12:44:08 2019 New Revision: 362637 URL: http://llvm.org/viewvc/llvm-project?rev=362637&view=rev Log: [cmake] Remove duplicate TestingSupport library for linking Summary: This patch cleans up a duplicate use of TestingSupport library. Subscribers: mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D62924 Modified: cfe/trunk/unittests/Tooling/CMakeLists.txt Modified: cfe/trunk/unittests/Tooling/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/CMakeLists.txt?rev=362637&r1=362636&r2=362637&view=diff == --- cfe/trunk/unittests/Tooling/CMakeLists.txt (original) +++ cfe/trunk/unittests/Tooling/CMakeLists.txt Wed Jun 5 12:44:08 2019 @@ -1,7 +1,6 @@ set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} Support - TestingSupport ) # By default MSVC has a 2^16 limit on the number of sections in an object file, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 8a9b4fb - [COFF, ARM64] Add __break intrinsic
Author: Pengxuan Zheng Date: 2022-04-20T11:20:26-07:00 New Revision: 8a9b4fb4aa6d2dde026d9ae08459aa9e7a1edb05 URL: https://github.com/llvm/llvm-project/commit/8a9b4fb4aa6d2dde026d9ae08459aa9e7a1edb05 DIFF: https://github.com/llvm/llvm-project/commit/8a9b4fb4aa6d2dde026d9ae08459aa9e7a1edb05.diff LOG: [COFF, ARM64] Add __break intrinsic https://docs.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=msvc-170 Reviewed By: rnk, mstorsjo Differential Revision: https://reviews.llvm.org/D124032 Added: llvm/test/CodeGen/AArch64/arm64-break.ll Modified: clang/include/clang/Basic/BuiltinsAArch64.def clang/lib/CodeGen/CGBuiltin.cpp clang/lib/Headers/intrin.h clang/lib/Sema/SemaChecking.cpp clang/test/CodeGen/arm64-microsoft-intrinsics.c clang/test/Sema/builtins-microsoft-arm64.c llvm/include/llvm/IR/IntrinsicsAArch64.td llvm/lib/Target/AArch64/AArch64InstrFormats.td llvm/lib/Target/AArch64/AArch64InstrInfo.td Removed: diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def index 0869b87e32fb9..cebd1c07fbcc9 100644 --- a/clang/include/clang/Basic/BuiltinsAArch64.def +++ b/clang/include/clang/Basic/BuiltinsAArch64.def @@ -249,6 +249,8 @@ TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LA TARGET_HEADER_BUILTIN(__mulh, "SLLiSLLiSLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(__umulh, "ULLiULLiULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__break, "vi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + #undef BUILTIN #undef LANGBUILTIN #undef TARGET_HEADER_BUILTIN diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 464dcc2d8621c..fc2d32f3e26fe 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9823,6 +9823,15 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, return Builder.CreateCall(F, Metadata); } + if (BuiltinID == AArch64::BI__break) { +Expr::EvalResult Result; +if (!E->getArg(0)->EvaluateAsInt(Result, CGM.getContext())) + llvm_unreachable("Sema will ensure that the parameter is constant"); + +llvm::Function *F = CGM.getIntrinsic(llvm::Intrinsic::aarch64_break); +return Builder.CreateCall(F, {EmitScalarExpr(E->getArg(0))}); + } + if (BuiltinID == AArch64::BI__builtin_arm_clrex) { Function *F = CGM.getIntrinsic(Intrinsic::aarch64_clrex); return Builder.CreateCall(F); diff --git a/clang/lib/Headers/intrin.h b/clang/lib/Headers/intrin.h index 741b21eef32a6..07fcae36020d7 100644 --- a/clang/lib/Headers/intrin.h +++ b/clang/lib/Headers/intrin.h @@ -560,6 +560,8 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 val); __int64 __mulh(__int64 __a, __int64 __b); unsigned __int64 __umulh(unsigned __int64 __a, unsigned __int64 __b); + +void __break(int); #endif /**\ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index f575c0775e7f9..467edd3321b9d 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2948,6 +2948,9 @@ bool Sema::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI, if (BuiltinID == AArch64::BI__getReg) return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); + if (BuiltinID == AArch64::BI__break) +return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0x); + if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) return true; diff --git a/clang/test/CodeGen/arm64-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-microsoft-intrinsics.c index 2dd2f6c8f0351..044a6a1cdff58 100644 --- a/clang/test/CodeGen/arm64-microsoft-intrinsics.c +++ b/clang/test/CodeGen/arm64-microsoft-intrinsics.c @@ -103,6 +103,13 @@ unsigned long long check_umulh(unsigned long long a, unsigned long long b) { // CHECK-MSVC: %[[RES:.*]] = trunc i128 %[[HIGH]] to i64 // CHECK-LINUX: error: call to undeclared function '__umulh' +void check__break() { + __break(0); +} + +// CHECK-MSVC: call void @llvm.aarch64.break(i32 0) +// CHECK-LINUX: error: implicit declaration of function '__break' + unsigned __int64 check__getReg(void) { unsigned volatile __int64 reg; reg = __getReg(18); diff --git a/clang/test/Sema/builtins-microsoft-arm64.c b/clang/test/Sema/builtins-microsoft-arm64.c index 3b5bd9b9bf866..6d0dc09c9ed83 100644 --- a/clang/test/Sema/builtins-microsoft-arm64.c +++ b/clang/test/Sema/builtins-microsoft-arm64.c @@ -3,6 +3,12 @@ #include +void check__break(int x) { + __break(-1); // expected-error-re {{argument value {{.*}} is outside the valid range}} + __break(65536); // expected-error-re {{argument value {{.*}} is outside the valid range}} + __break(x); // expected-error {{argument to '__break' must be a constant int
[clang] bff8356 - Revert "[COFF, ARM64] Add __break intrinsic"
Author: Pengxuan Zheng Date: 2022-04-20T11:57:49-07:00 New Revision: bff8356b1969d2edd02e22c73d1c3d386f862937 URL: https://github.com/llvm/llvm-project/commit/bff8356b1969d2edd02e22c73d1c3d386f862937 DIFF: https://github.com/llvm/llvm-project/commit/bff8356b1969d2edd02e22c73d1c3d386f862937.diff LOG: Revert "[COFF, ARM64] Add __break intrinsic" This reverts commit 8a9b4fb4aa6d2dde026d9ae08459aa9e7a1edb05. Added: Modified: clang/include/clang/Basic/BuiltinsAArch64.def clang/lib/CodeGen/CGBuiltin.cpp clang/lib/Headers/intrin.h clang/lib/Sema/SemaChecking.cpp clang/test/CodeGen/arm64-microsoft-intrinsics.c clang/test/Sema/builtins-microsoft-arm64.c llvm/include/llvm/IR/IntrinsicsAArch64.td llvm/lib/Target/AArch64/AArch64InstrFormats.td llvm/lib/Target/AArch64/AArch64InstrInfo.td Removed: llvm/test/CodeGen/AArch64/arm64-break.ll diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def index cebd1c07fbcc9..0869b87e32fb9 100644 --- a/clang/include/clang/Basic/BuiltinsAArch64.def +++ b/clang/include/clang/Basic/BuiltinsAArch64.def @@ -249,8 +249,6 @@ TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LA TARGET_HEADER_BUILTIN(__mulh, "SLLiSLLiSLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(__umulh, "ULLiULLiULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") -TARGET_HEADER_BUILTIN(__break, "vi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") - #undef BUILTIN #undef LANGBUILTIN #undef TARGET_HEADER_BUILTIN diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index fc2d32f3e26fe..464dcc2d8621c 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9823,15 +9823,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, return Builder.CreateCall(F, Metadata); } - if (BuiltinID == AArch64::BI__break) { -Expr::EvalResult Result; -if (!E->getArg(0)->EvaluateAsInt(Result, CGM.getContext())) - llvm_unreachable("Sema will ensure that the parameter is constant"); - -llvm::Function *F = CGM.getIntrinsic(llvm::Intrinsic::aarch64_break); -return Builder.CreateCall(F, {EmitScalarExpr(E->getArg(0))}); - } - if (BuiltinID == AArch64::BI__builtin_arm_clrex) { Function *F = CGM.getIntrinsic(Intrinsic::aarch64_clrex); return Builder.CreateCall(F); diff --git a/clang/lib/Headers/intrin.h b/clang/lib/Headers/intrin.h index 07fcae36020d7..741b21eef32a6 100644 --- a/clang/lib/Headers/intrin.h +++ b/clang/lib/Headers/intrin.h @@ -560,8 +560,6 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 val); __int64 __mulh(__int64 __a, __int64 __b); unsigned __int64 __umulh(unsigned __int64 __a, unsigned __int64 __b); - -void __break(int); #endif /**\ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 467edd3321b9d..f575c0775e7f9 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2948,9 +2948,6 @@ bool Sema::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI, if (BuiltinID == AArch64::BI__getReg) return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); - if (BuiltinID == AArch64::BI__break) -return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0x); - if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) return true; diff --git a/clang/test/CodeGen/arm64-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-microsoft-intrinsics.c index 044a6a1cdff58..2dd2f6c8f0351 100644 --- a/clang/test/CodeGen/arm64-microsoft-intrinsics.c +++ b/clang/test/CodeGen/arm64-microsoft-intrinsics.c @@ -103,13 +103,6 @@ unsigned long long check_umulh(unsigned long long a, unsigned long long b) { // CHECK-MSVC: %[[RES:.*]] = trunc i128 %[[HIGH]] to i64 // CHECK-LINUX: error: call to undeclared function '__umulh' -void check__break() { - __break(0); -} - -// CHECK-MSVC: call void @llvm.aarch64.break(i32 0) -// CHECK-LINUX: error: implicit declaration of function '__break' - unsigned __int64 check__getReg(void) { unsigned volatile __int64 reg; reg = __getReg(18); diff --git a/clang/test/Sema/builtins-microsoft-arm64.c b/clang/test/Sema/builtins-microsoft-arm64.c index 6d0dc09c9ed83..3b5bd9b9bf866 100644 --- a/clang/test/Sema/builtins-microsoft-arm64.c +++ b/clang/test/Sema/builtins-microsoft-arm64.c @@ -3,12 +3,6 @@ #include -void check__break(int x) { - __break(-1); // expected-error-re {{argument value {{.*}} is outside the valid range}} - __break(65536); // expected-error-re {{argument value {{.*}} is outside the valid range}} - __break(x); // expected-error {{argument to '__break' must be a constant integer}} -} - void check__getReg(void) { __getReg(-1); // expected-error-re {{argument valu
[clang] 38612fb - Reland "[COFF, ARM64] Add __break intrinsic"
Author: Pengxuan Zheng Date: 2022-04-20T13:01:30-07:00 New Revision: 38612fbc8990fe609b08b63f82845f546c22bcff URL: https://github.com/llvm/llvm-project/commit/38612fbc8990fe609b08b63f82845f546c22bcff DIFF: https://github.com/llvm/llvm-project/commit/38612fbc8990fe609b08b63f82845f546c22bcff.diff LOG: Reland "[COFF, ARM64] Add __break intrinsic" https://docs.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=msvc-170 Reland after fixing the test failure. The failure was due to conflict with a change (D122983) which was merged right before this patch. Reviewed By: rnk, mstorsjo Differential Revision: https://reviews.llvm.org/D124032 Added: llvm/test/CodeGen/AArch64/arm64-break.ll Modified: clang/include/clang/Basic/BuiltinsAArch64.def clang/lib/CodeGen/CGBuiltin.cpp clang/lib/Headers/intrin.h clang/lib/Sema/SemaChecking.cpp clang/test/CodeGen/arm64-microsoft-intrinsics.c clang/test/Sema/builtins-microsoft-arm64.c llvm/include/llvm/IR/IntrinsicsAArch64.td llvm/lib/Target/AArch64/AArch64InstrFormats.td llvm/lib/Target/AArch64/AArch64InstrInfo.td Removed: diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def index 0869b87e32fb9..cebd1c07fbcc9 100644 --- a/clang/include/clang/Basic/BuiltinsAArch64.def +++ b/clang/include/clang/Basic/BuiltinsAArch64.def @@ -249,6 +249,8 @@ TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", ALL_MS_LA TARGET_HEADER_BUILTIN(__mulh, "SLLiSLLiSLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(__umulh, "ULLiULLiULLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(__break, "vi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + #undef BUILTIN #undef LANGBUILTIN #undef TARGET_HEADER_BUILTIN diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 464dcc2d8621c..fc2d32f3e26fe 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9823,6 +9823,15 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, return Builder.CreateCall(F, Metadata); } + if (BuiltinID == AArch64::BI__break) { +Expr::EvalResult Result; +if (!E->getArg(0)->EvaluateAsInt(Result, CGM.getContext())) + llvm_unreachable("Sema will ensure that the parameter is constant"); + +llvm::Function *F = CGM.getIntrinsic(llvm::Intrinsic::aarch64_break); +return Builder.CreateCall(F, {EmitScalarExpr(E->getArg(0))}); + } + if (BuiltinID == AArch64::BI__builtin_arm_clrex) { Function *F = CGM.getIntrinsic(Intrinsic::aarch64_clrex); return Builder.CreateCall(F); diff --git a/clang/lib/Headers/intrin.h b/clang/lib/Headers/intrin.h index 741b21eef32a6..07fcae36020d7 100644 --- a/clang/lib/Headers/intrin.h +++ b/clang/lib/Headers/intrin.h @@ -560,6 +560,8 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 val); __int64 __mulh(__int64 __a, __int64 __b); unsigned __int64 __umulh(unsigned __int64 __a, unsigned __int64 __b); + +void __break(int); #endif /**\ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index f575c0775e7f9..467edd3321b9d 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2948,6 +2948,9 @@ bool Sema::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI, if (BuiltinID == AArch64::BI__getReg) return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31); + if (BuiltinID == AArch64::BI__break) +return SemaBuiltinConstantArgRange(TheCall, 0, 0, 0x); + if (CheckNeonBuiltinFunctionCall(TI, BuiltinID, TheCall)) return true; diff --git a/clang/test/CodeGen/arm64-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-microsoft-intrinsics.c index 2dd2f6c8f0351..ecf271bae5808 100644 --- a/clang/test/CodeGen/arm64-microsoft-intrinsics.c +++ b/clang/test/CodeGen/arm64-microsoft-intrinsics.c @@ -103,6 +103,13 @@ unsigned long long check_umulh(unsigned long long a, unsigned long long b) { // CHECK-MSVC: %[[RES:.*]] = trunc i128 %[[HIGH]] to i64 // CHECK-LINUX: error: call to undeclared function '__umulh' +void check__break() { + __break(0); +} + +// CHECK-MSVC: call void @llvm.aarch64.break(i32 0) +// CHECK-LINUX: error: call to undeclared function '__break' + unsigned __int64 check__getReg(void) { unsigned volatile __int64 reg; reg = __getReg(18); diff --git a/clang/test/Sema/builtins-microsoft-arm64.c b/clang/test/Sema/builtins-microsoft-arm64.c index 3b5bd9b9bf866..6d0dc09c9ed83 100644 --- a/clang/test/Sema/builtins-microsoft-arm64.c +++ b/clang/test/Sema/builtins-microsoft-arm64.c @@ -3,6 +3,12 @@ #include +void check__break(int x) { + __break(-1); // expected-error-re {{argument value {{.*}} is outside the valid range}} + __break(65536); // expected-er
[clang] 366e57d - [clang-cl] Add /Zc:wchar_t- option
Author: Pengxuan Zheng Date: 2022-05-17T09:40:30-07:00 New Revision: 366e57de23ed20ac95201e1623dfffed215e98f8 URL: https://github.com/llvm/llvm-project/commit/366e57de23ed20ac95201e1623dfffed215e98f8 DIFF: https://github.com/llvm/llvm-project/commit/366e57de23ed20ac95201e1623dfffed215e98f8.diff LOG: [clang-cl] Add /Zc:wchar_t- option Map /Zc:wchar_t- to the cc1 flag -fno-wchar which is already supported. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D125513 Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/cl-options.c clang/test/Driver/cl-zc.cpp Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 4be0b574fa444..e18b71ba064df 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6487,6 +6487,10 @@ def _SLASH_Zc_twoPhase : CLFlag<"Zc:twoPhase">, def _SLASH_Zc_twoPhase_ : CLFlag<"Zc:twoPhase-">, HelpText<"Disable two-phase name lookup in templates (default)">, Alias; +def _SLASH_Zc_wchar_t : CLFlag<"Zc:wchar_t">, + HelpText<"Enable C++ builtin type wchar_t (default)">; +def _SLASH_Zc_wchar_t_ : CLFlag<"Zc:wchar_t-">, + HelpText<"Disable C++ builtin type wchar_t">; def _SLASH_Z7 : CLFlag<"Z7">, HelpText<"Enable CodeView debug information in object files">; def _SLASH_Zi : CLFlag<"Zi">, Alias<_SLASH_Z7>, @@ -6674,7 +6678,6 @@ def _SLASH_Zc_forScope : CLIgnoredFlag<"Zc:forScope">; def _SLASH_Zc_inline : CLIgnoredFlag<"Zc:inline">; def _SLASH_Zc_rvalueCast : CLIgnoredFlag<"Zc:rvalueCast">; def _SLASH_Zc_ternary : CLIgnoredFlag<"Zc:ternary">; -def _SLASH_Zc_wchar_t : CLIgnoredFlag<"Zc:wchar_t">; def _SLASH_ZH_MD5 : CLIgnoredFlag<"ZH:MD5">; def _SLASH_ZH_SHA1 : CLIgnoredFlag<"ZH:SHA1">; def _SLASH_ZH_SHA_256 : CLIgnoredFlag<"ZH:SHA_256">; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 75515469421b0..5dce5b81fa8a6 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -7589,6 +7589,11 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType, CmdArgs.push_back("-fno-dllexport-inlines"); } + if (Args.hasFlag(options::OPT__SLASH_Zc_wchar_t_, + options::OPT__SLASH_Zc_wchar_t, false)) { + CmdArgs.push_back("-fno-wchar"); + } + Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg); Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb); if (MostGeneralArg && BestCaseArg) diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index 244b4430dd0dc..4eae94b1bff20 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -404,7 +404,6 @@ // RUN:/Zc:inline \ // RUN:/Zc:rvalueCast \ // RUN:/Zc:ternary \ -// RUN:/Zc:wchar_t \ // RUN:/ZH:MD5 \ // RUN:/ZH:SHA1 \ // RUN:/ZH:SHA_256 \ diff --git a/clang/test/Driver/cl-zc.cpp b/clang/test/Driver/cl-zc.cpp index cf7734875e1f1..53d28dddefa73 100644 --- a/clang/test/Driver/cl-zc.cpp +++ b/clang/test/Driver/cl-zc.cpp @@ -47,7 +47,7 @@ // RUN: %clang_cl /c -### /Zc:wchar_t -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-ON %s // WCHAR_T-ON-NOT: argument unused during compilation // RUN: %clang_cl /c -### /Zc:wchar_t- -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-OFF %s -// WCHAR_T-OFF: argument unused during compilation +// WCHAR_T-OFF: "-fno-wchar" // RUN: %clang_cl /c -### /Zc:auto -- %s 2>&1 | FileCheck -check-prefix=AUTO-ON %s // AUTO-ON-NOT: argument unused during compilation ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 2bccd2b - [Driver] Allow -specs and -nostartfiles to be forwarded to GCC
Author: Pengxuan Zheng Date: 2020-09-04T15:09:33-07:00 New Revision: 2bccd2b4350f887cc7fea1cc488690f58186c440 URL: https://github.com/llvm/llvm-project/commit/2bccd2b4350f887cc7fea1cc488690f58186c440 DIFF: https://github.com/llvm/llvm-project/commit/2bccd2b4350f887cc7fea1cc488690f58186c440.diff LOG: [Driver] Allow -specs and -nostartfiles to be forwarded to GCC With 6a75496836ea14bcfd2f4b59d35a1cad4ac58cee, these two options are no longer forwarded to GCC. This patch restores the original behavior. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D87162 Added: Modified: clang/include/clang/Driver/Options.td clang/test/Driver/gcc_forward.c Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 5f1668e701f1..4ba5d40117e7 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2760,7 +2760,7 @@ def no_pie : Flag<["-"], "no-pie">, Alias; def noprebind : Flag<["-"], "noprebind">; def noprofilelib : Flag<["-"], "noprofilelib">; def noseglinkedit : Flag<["-"], "noseglinkedit">; -def nostartfiles : Flag<["-"], "nostartfiles">; +def nostartfiles : Flag<["-"], "nostartfiles">, Group; def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>; def nostdlibinc : Flag<["-"], "nostdlibinc">; def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, @@ -2861,7 +2861,7 @@ def segs__read__ : Joined<["-"], "segs_read_">; def shared_libgcc : Flag<["-"], "shared-libgcc">; def shared : Flag<["-", "--"], "shared">, Group; def single__module : Flag<["-"], "single_module">; -def specs_EQ : Joined<["-", "--"], "specs=">; +def specs_EQ : Joined<["-", "--"], "specs=">, Group; def specs : Separate<["-", "--"], "specs">, Flags<[Unsupported]>; def static_libgcc : Flag<["-"], "static-libgcc">; def static_libstdcxx : Flag<["-"], "static-libstdc++">; diff --git a/clang/test/Driver/gcc_forward.c b/clang/test/Driver/gcc_forward.c index a99944f8f533..e6b0670d1a02 100644 --- a/clang/test/Driver/gcc_forward.c +++ b/clang/test/Driver/gcc_forward.c @@ -1,7 +1,8 @@ // RUN: %clang -### %s -target aarch64-none-elf \ -// RUN: --coverage -e _start -fuse-ld=lld --ld-path=ld -nostdlib -r -rdynamic -static -static-pie \ +// RUN: --coverage -e _start -fuse-ld=lld --ld-path=ld -nostartfiles \ +// RUN: -nostdlib -r -rdynamic -specs=nosys.specs -static -static-pie \ // RUN: 2>&1 | FileCheck --check-prefix=FORWARD %s -// FORWARD: gcc{{[^"]*}}" "--coverage" "-fuse-ld=lld" "--ld-path=ld" "-nostdlib" "-rdynamic" "-static" "-static-pie" "-o" "a.out" "{{.*}}.o" "-e" "_start" "-r" +// FORWARD: gcc{{[^"]*}}" "--coverage" "-fuse-ld=lld" "--ld-path=ld" "-nostartfiles" "-nostdlib" "-rdynamic" "-specs=nosys.specs" "-static" "-static-pie" "-o" "a.out" "{{.*}}.o" "-e" "_start" "-r" // Check that we don't try to forward -Xclang or -mlinker-version to GCC. // PR12920 -- Check also we may not forward W_Group options to GCC. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] c9b36a0 - Support GCC's -fstack-usage flag
Author: Pengxuan Zheng Date: 2021-05-15T10:22:49-07:00 New Revision: c9b36a041fd70de0617ea7e241f520b345e12cac URL: https://github.com/llvm/llvm-project/commit/c9b36a041fd70de0617ea7e241f520b345e12cac DIFF: https://github.com/llvm/llvm-project/commit/c9b36a041fd70de0617ea7e241f520b345e12cac.diff LOG: Support GCC's -fstack-usage flag This patch adds support for GCC's -fstack-usage flag. With this flag, a stack usage file (i.e., .su file) is generated for each input source file. The format of the stack usage file is also similar to what is used by GCC. For each function defined in the source file, a line with the following information is produced in the .su file. :: "Static" means that the function's frame size is static and the size info is an accurate reflection of the frame size. While "dynamic" means the function's frame size can only be determined at run-time because the function manipulates the stack dynamically (e.g., due to variable size objects). The size info only reflects the size of the fixed size frame objects in this case and therefore is not a reliable measure of the total frame size. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D100509 Added: clang/test/CodeGen/stack-usage.c clang/test/Driver/stack-usage.c Modified: clang/docs/ReleaseNotes.rst clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp llvm/include/llvm/CodeGen/AsmPrinter.h llvm/include/llvm/Target/TargetOptions.h llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Removed: diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 17351278974df..f3f7fb4eabc3c 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -70,6 +70,10 @@ New Compiler Flags - ``-Wreserved-identifier`` emits warning when user code uses reserved identifiers. +- ``-fstack-usage`` generates an extra .su file per input source file. The .su + file contains frame size information for each function defined in the source + file. + Deprecated Compiler Flags - diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 3f06dd3a3f821..90388b169f5e0 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -372,6 +372,11 @@ class CodeGenOptions : public CodeGenOptionsBase { /// coverage pass should actually not be instrumented. std::vector SanitizeCoverageIgnorelistFiles; + /// Name of the stack usage file (i.e., .su file) if user passes + /// -fstack-usage. If empty, it can be implied that -fstack-usage is not + /// passed on the command line. + std::string StackUsageOutput; + /// Executable and command-line used to create a given CompilerInvocation. /// Most of the time this will be the full -cc1 command. const char *Argv0 = nullptr; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index a7adab50657af..c1d096f358d9e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2709,6 +2709,12 @@ defm stack_size_section : BoolFOption<"stack-size-section", CodeGenOpts<"StackSizeSection">, DefaultFalse, PosFlag, NegFlag>; +def fstack_usage : Flag<["-"], "fstack-usage">, Group, + HelpText<"Emit .su file containing information on function stack sizes">; +def stack_usage_file : Separate<["-"], "stack-usage-file">, + Flags<[CC1Option, NoDriverOption]>, + HelpText<"Filename (or -) to write stack usage output to">, + MarshallingInfoString>; defm unique_basic_block_section_names : BoolFOption<"unique-basic-block-section-names", CodeGenOpts<"UniqueBasicBlockSectionNames">, DefaultFalse, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index e2799f6aba4ca..e5a2a089563ef 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -567,6 +567,7 @@ static bool initTargetOptions(DiagnosticsEngine &Diags, Options.ExplicitEmulatedTLS = CodeGenOpts.ExplicitEmulatedTLS; Options.DebuggerTuning = CodeGenOpts.getDebuggerTuning(); Options.EmitStackSizeSection = CodeGenOpts.StackSizeSection; + Options.StackUsageOutput = CodeGenOpts.StackUsageOutput; Options.EmitAddrsig = CodeGenOpts.Addrsig; Options.ForceDwarfFrameSection = CodeGenOpts.ForceDwarfFrameSection; Options.EmitCallSiteInfo = CodeGenOpts.EmitCallSiteInfo; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 061b578cc6ff7..fe0f57d4c4791 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5492,6 +5492,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction
[clang] 61cca0f - [AArch64] Adding Neon Sm3 & Sm4 Intrinsics
Author: Pengxuan Zheng Date: 2021-02-11T14:20:20-08:00 New Revision: 61cca0f2e5bbb6045bb27b822e34cd39c9c1acb1 URL: https://github.com/llvm/llvm-project/commit/61cca0f2e5bbb6045bb27b822e34cd39c9c1acb1 DIFF: https://github.com/llvm/llvm-project/commit/61cca0f2e5bbb6045bb27b822e34cd39c9c1acb1.diff LOG: [AArch64] Adding Neon Sm3 & Sm4 Intrinsics This adds SM3 and SM4 Intrinsics support for AArch64, specifically: vsm3ss1q_u32 vsm3tt1aq_u32 vsm3tt1bq_u32 vsm3tt2aq_u32 vsm3tt2bq_u32 vsm3partw1q_u32 vsm3partw2q_u32 vsm4eq_u32 vsm4ekeyq_u32 Reviewed By: labrinea Differential Revision: https://reviews.llvm.org/D95655 Added: clang/test/CodeGen/aarch64-neon-range-checks.c clang/test/CodeGen/aarch64-neon-sm4-sm3.c llvm/test/CodeGen/AArch64/neon-sm4-sm3.ll Modified: clang/include/clang/Basic/arm_neon.td clang/lib/CodeGen/CGBuiltin.cpp llvm/include/llvm/IR/IntrinsicsAArch64.td llvm/lib/Target/AArch64/AArch64InstrFormats.td llvm/lib/Target/AArch64/AArch64InstrInfo.td Removed: diff --git a/clang/include/clang/Basic/arm_neon.td b/clang/include/clang/Basic/arm_neon.td index 3b2a578f796e..9835c13c0dcd 100644 --- a/clang/include/clang/Basic/arm_neon.td +++ b/clang/include/clang/Basic/arm_neon.td @@ -1134,6 +1134,17 @@ def SHA1SU0 : SInst<"vsha1su0", "", "QUi">; def SHA256H : SInst<"vsha256h", "", "QUi">; def SHA256H2 : SInst<"vsha256h2", "", "QUi">; def SHA256SU1 : SInst<"vsha256su1", "", "QUi">; + +def SM3SS1 : SInst<"vsm3ss1", "", "QUi">; +def SM3TT1A : SInst<"vsm3tt1a", "I", "QUi">; +def SM3TT1B : SInst<"vsm3tt1b", "I", "QUi">; +def SM3TT2A : SInst<"vsm3tt2a", "I", "QUi">; +def SM3TT2B : SInst<"vsm3tt2b", "I", "QUi">; +def SM3PARTW1 : SInst<"vsm3partw1", "", "QUi">; +def SM3PARTW2 : SInst<"vsm3partw2", "", "QUi">; + +def SM4E : SInst<"vsm4e", "...", "QUi">; +def SM4EKEY : SInst<"vsm4ekey", "...", "QUi">; } diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index f7a4295b11c5..a1d518697e60 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -5832,6 +5832,15 @@ static const ARMVectorIntrinsicInfo AArch64SIMDIntrinsicMap[] = { NEONMAP0(vshr_n_v), NEONMAP0(vshrn_n_v), NEONMAP0(vshrq_n_v), + NEONMAP1(vsm3partw1q_v, aarch64_crypto_sm3partw1, 0), + NEONMAP1(vsm3partw2q_v, aarch64_crypto_sm3partw2, 0), + NEONMAP1(vsm3ss1q_v, aarch64_crypto_sm3ss1, 0), + NEONMAP1(vsm3tt1aq_v, aarch64_crypto_sm3tt1a, 0), + NEONMAP1(vsm3tt1bq_v, aarch64_crypto_sm3tt1b, 0), + NEONMAP1(vsm3tt2aq_v, aarch64_crypto_sm3tt2a, 0), + NEONMAP1(vsm3tt2bq_v, aarch64_crypto_sm3tt2b, 0), + NEONMAP1(vsm4ekeyq_v, aarch64_crypto_sm4ekey, 0), + NEONMAP1(vsm4eq_v, aarch64_crypto_sm4e, 0), NEONMAP1(vst1_x2_v, aarch64_neon_st1x2, 0), NEONMAP1(vst1_x3_v, aarch64_neon_st1x3, 0), NEONMAP1(vst1_x4_v, aarch64_neon_st1x4, 0), @@ -6710,6 +6719,22 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( Ops.push_back(getAlignmentValue32(PtrOp0)); return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, ""); } + case NEON::BI__builtin_neon_vsm3partw1q_v: + case NEON::BI__builtin_neon_vsm3partw2q_v: + case NEON::BI__builtin_neon_vsm3ss1q_v: + case NEON::BI__builtin_neon_vsm4ekeyq_v: + case NEON::BI__builtin_neon_vsm4eq_v: { +Function *F = CGM.getIntrinsic(Int); +return EmitNeonCall(F, Ops, ""); + } + case NEON::BI__builtin_neon_vsm3tt1aq_v: + case NEON::BI__builtin_neon_vsm3tt1bq_v: + case NEON::BI__builtin_neon_vsm3tt2aq_v: + case NEON::BI__builtin_neon_vsm3tt2bq_v: { +Function *F = CGM.getIntrinsic(Int); +Ops[3] = Builder.CreateZExt(Ops[3], Int64Ty); +return EmitNeonCall(F, Ops, ""); + } case NEON::BI__builtin_neon_vst1_x2_v: case NEON::BI__builtin_neon_vst1q_x2_v: case NEON::BI__builtin_neon_vst1_x3_v: diff --git a/clang/test/CodeGen/aarch64-neon-range-checks.c b/clang/test/CodeGen/aarch64-neon-range-checks.c new file mode 100644 index ..fa5454b955e6 --- /dev/null +++ b/clang/test/CodeGen/aarch64-neon-range-checks.c @@ -0,0 +1,32 @@ +// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon -target-feature +crypto -verify %s + +#include + +void test_range_check_vsm3tt1a(uint32x4_t a, uint32x4_t b, uint32x4_t c) { + vsm3tt1aq_u32(a, b, c, 4); // expected-error {{argument value 4 is outside the valid range [0, 3]}} + vsm3tt1aq_u32(a, b, c, -1); // expected-error {{argument value -1 is outside the valid range [0, 3]}} + vsm3tt1aq_u32(a, b, c, 3); + vsm3tt1aq_u32(a, b, c, 0); +} + +void test_range_check_vsm3tt1b(uint32x4_t a, uint32x4_t b, uint32x4_t c) { + vsm3tt1bq_u32(a, b, c, 4);// expected-error {{argument value 4 is outside the valid range [0, 3]}} + vsm3tt1bq_u32(a, b, c
[clang] d964505 - [AArch64] Adding Neon Polynomial vadd Intrinsics
Author: Pengxuan Zheng Date: 2021-02-18T11:33:24-08:00 New Revision: d9645059c5deeacf264bea0cf50eab459cf8e5bb URL: https://github.com/llvm/llvm-project/commit/d9645059c5deeacf264bea0cf50eab459cf8e5bb DIFF: https://github.com/llvm/llvm-project/commit/d9645059c5deeacf264bea0cf50eab459cf8e5bb.diff LOG: [AArch64] Adding Neon Polynomial vadd Intrinsics This patch adds the following intrinsics: vadd_p8 vadd_p16 vadd_p64 vaddq_p8 vaddq_p16 vaddq_p64 vaddq_p128 Reviewed By: t.p.northover, DavidSpickett Differential Revision: https://reviews.llvm.org/D96825 Added: clang/test/CodeGen/aarch64-poly-add.c Modified: clang/include/clang/Basic/arm_neon.td clang/lib/CodeGen/CGBuiltin.cpp Removed: diff --git a/clang/include/clang/Basic/arm_neon.td b/clang/include/clang/Basic/arm_neon.td index 9835c13c0dcd..a7a1c0578690 100644 --- a/clang/include/clang/Basic/arm_neon.td +++ b/clang/include/clang/Basic/arm_neon.td @@ -1147,6 +1147,8 @@ def SM4E : SInst<"vsm4e", "...", "QUi">; def SM4EKEY : SInst<"vsm4ekey", "...", "QUi">; } +def VADDP : WInst<"vadd", "...", "PcPsPlQPcQPsQPlQPk">; + // Float -> Int conversions with explicit rounding mode diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 3ab5d2a5b684..0fd231563851 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -5371,7 +5371,10 @@ static const ARMVectorIntrinsicInfo ARMSIMDIntrinsicMap [] = { NEONMAP2(vabdq_v, arm_neon_vabdu, arm_neon_vabds, Add1ArgType | UnsignedAlts), NEONMAP1(vabs_v, arm_neon_vabs, 0), NEONMAP1(vabsq_v, arm_neon_vabs, 0), + NEONMAP0(vadd_v), NEONMAP0(vaddhn_v), + NEONMAP0(vaddq_p128), + NEONMAP0(vaddq_v), NEONMAP1(vaesdq_v, arm_neon_aesd, 0), NEONMAP1(vaeseq_v, arm_neon_aese, 0), NEONMAP1(vaesimcq_v, arm_neon_aesimc, 0), @@ -6302,6 +6305,14 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( if (VTy->getElementType()->isFloatingPointTy()) return EmitNeonCall(CGM.getIntrinsic(Intrinsic::fabs, Ty), Ops, "vabs"); return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Ty), Ops, "vabs"); + case NEON::BI__builtin_neon_vadd_v: + case NEON::BI__builtin_neon_vaddq_v: { +llvm::Type *VTy = llvm::FixedVectorType::get(Int8Ty, Quad ? 16 : 8); +Ops[0] = Builder.CreateBitCast(Ops[0], VTy); +Ops[1] = Builder.CreateBitCast(Ops[1], VTy); +Ops[0] = Builder.CreateXor(Ops[0], Ops[1]); +return Builder.CreateBitCast(Ops[0], Ty); + } case NEON::BI__builtin_neon_vaddhn_v: { llvm::FixedVectorType *SrcTy = llvm::FixedVectorType::getExtendedElementVectorType(VTy); @@ -9543,6 +9554,15 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, case NEON::BI__builtin_neon_vabsh_f16: Ops.push_back(EmitScalarExpr(E->getArg(0))); return EmitNeonCall(CGM.getIntrinsic(Intrinsic::fabs, HalfTy), Ops, "vabs"); + case NEON::BI__builtin_neon_vaddq_p128: { +llvm::Type *Ty = GetNeonType(this, NeonTypeFlags::Poly128); +Ops.push_back(EmitScalarExpr(E->getArg(1))); +Ops[0] = Builder.CreateBitCast(Ops[0], Ty); +Ops[1] = Builder.CreateBitCast(Ops[1], Ty); +Ops[0] = Builder.CreateXor(Ops[0], Ops[1]); +llvm::Type *Int128Ty = llvm::Type::getIntNTy(getLLVMContext(), 128); +return Builder.CreateBitCast(Ops[0], Int128Ty); + } case NEON::BI__builtin_neon_vldrq_p128: { llvm::Type *Int128Ty = llvm::Type::getIntNTy(getLLVMContext(), 128); llvm::Type *Int128PTy = llvm::PointerType::get(Int128Ty, 0); diff --git a/clang/test/CodeGen/aarch64-poly-add.c b/clang/test/CodeGen/aarch64-poly-add.c new file mode 100644 index ..7abaa3e6951e --- /dev/null +++ b/clang/test/CodeGen/aarch64-poly-add.c @@ -0,0 +1,85 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py +// REQUIRES: aarch64-registered-target +// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \ +// RUN: -disable-O0-optnone -emit-llvm -o - %s | opt -S -mem2reg \ +// RUN: | FileCheck %s + +#include + +// CHECK-LABEL: @test_vadd_p8( +// CHECK-NEXT: entry: +// CHECK-NEXT:[[TMP0:%.*]] = xor <8 x i8> [[A:%.*]], [[B:%.*]] +// CHECK-NEXT:ret <8 x i8> [[TMP0]] +// +poly8x8_t test_vadd_p8(poly8x8_t a, poly8x8_t b) { + return vadd_p8 (a, b); +} + +// CHECK-LABEL: @test_vadd_p16( +// CHECK-NEXT: entry: +// CHECK-NEXT:[[TMP0:%.*]] = bitcast <4 x i16> [[A:%.*]] to <8 x i8> +// CHECK-NEXT:[[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8> +// CHECK-NEXT:[[TMP2:%.*]] = xor <8 x i8> [[TMP0]], [[TMP1]] +// CHECK-NEXT:[[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16> +// CHECK-NEXT:ret <4 x i16> [[TMP3]] +// +poly16x4_t test_vadd_p16(poly16x4_t a, poly16x4_t b) { + return va
[clang] 0ec32f1 - Revert "[AArch64] Adding Neon Polynomial vadd Intrinsics"
Author: Pengxuan Zheng Date: 2021-02-18T12:38:16-08:00 New Revision: 0ec32f132643fa8a949e5a29a71f7729b329476a URL: https://github.com/llvm/llvm-project/commit/0ec32f132643fa8a949e5a29a71f7729b329476a DIFF: https://github.com/llvm/llvm-project/commit/0ec32f132643fa8a949e5a29a71f7729b329476a.diff LOG: Revert "[AArch64] Adding Neon Polynomial vadd Intrinsics" Revert the patch due to buildbot failures. This reverts commit d9645059c5deeacf264bea0cf50eab459cf8e5bb. Added: Modified: clang/include/clang/Basic/arm_neon.td clang/lib/CodeGen/CGBuiltin.cpp Removed: clang/test/CodeGen/aarch64-poly-add.c diff --git a/clang/include/clang/Basic/arm_neon.td b/clang/include/clang/Basic/arm_neon.td index a7a1c0578690..9835c13c0dcd 100644 --- a/clang/include/clang/Basic/arm_neon.td +++ b/clang/include/clang/Basic/arm_neon.td @@ -1147,8 +1147,6 @@ def SM4E : SInst<"vsm4e", "...", "QUi">; def SM4EKEY : SInst<"vsm4ekey", "...", "QUi">; } -def VADDP : WInst<"vadd", "...", "PcPsPlQPcQPsQPlQPk">; - // Float -> Int conversions with explicit rounding mode diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 0fd231563851..3ab5d2a5b684 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -5371,10 +5371,7 @@ static const ARMVectorIntrinsicInfo ARMSIMDIntrinsicMap [] = { NEONMAP2(vabdq_v, arm_neon_vabdu, arm_neon_vabds, Add1ArgType | UnsignedAlts), NEONMAP1(vabs_v, arm_neon_vabs, 0), NEONMAP1(vabsq_v, arm_neon_vabs, 0), - NEONMAP0(vadd_v), NEONMAP0(vaddhn_v), - NEONMAP0(vaddq_p128), - NEONMAP0(vaddq_v), NEONMAP1(vaesdq_v, arm_neon_aesd, 0), NEONMAP1(vaeseq_v, arm_neon_aese, 0), NEONMAP1(vaesimcq_v, arm_neon_aesimc, 0), @@ -6305,14 +6302,6 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( if (VTy->getElementType()->isFloatingPointTy()) return EmitNeonCall(CGM.getIntrinsic(Intrinsic::fabs, Ty), Ops, "vabs"); return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Ty), Ops, "vabs"); - case NEON::BI__builtin_neon_vadd_v: - case NEON::BI__builtin_neon_vaddq_v: { -llvm::Type *VTy = llvm::FixedVectorType::get(Int8Ty, Quad ? 16 : 8); -Ops[0] = Builder.CreateBitCast(Ops[0], VTy); -Ops[1] = Builder.CreateBitCast(Ops[1], VTy); -Ops[0] = Builder.CreateXor(Ops[0], Ops[1]); -return Builder.CreateBitCast(Ops[0], Ty); - } case NEON::BI__builtin_neon_vaddhn_v: { llvm::FixedVectorType *SrcTy = llvm::FixedVectorType::getExtendedElementVectorType(VTy); @@ -9554,15 +9543,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, case NEON::BI__builtin_neon_vabsh_f16: Ops.push_back(EmitScalarExpr(E->getArg(0))); return EmitNeonCall(CGM.getIntrinsic(Intrinsic::fabs, HalfTy), Ops, "vabs"); - case NEON::BI__builtin_neon_vaddq_p128: { -llvm::Type *Ty = GetNeonType(this, NeonTypeFlags::Poly128); -Ops.push_back(EmitScalarExpr(E->getArg(1))); -Ops[0] = Builder.CreateBitCast(Ops[0], Ty); -Ops[1] = Builder.CreateBitCast(Ops[1], Ty); -Ops[0] = Builder.CreateXor(Ops[0], Ops[1]); -llvm::Type *Int128Ty = llvm::Type::getIntNTy(getLLVMContext(), 128); -return Builder.CreateBitCast(Ops[0], Int128Ty); - } case NEON::BI__builtin_neon_vldrq_p128: { llvm::Type *Int128Ty = llvm::Type::getIntNTy(getLLVMContext(), 128); llvm::Type *Int128PTy = llvm::PointerType::get(Int128Ty, 0); diff --git a/clang/test/CodeGen/aarch64-poly-add.c b/clang/test/CodeGen/aarch64-poly-add.c deleted file mode 100644 index 7abaa3e6951e.. --- a/clang/test/CodeGen/aarch64-poly-add.c +++ /dev/null @@ -1,85 +0,0 @@ -// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py -// REQUIRES: aarch64-registered-target -// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \ -// RUN: -disable-O0-optnone -emit-llvm -o - %s | opt -S -mem2reg \ -// RUN: | FileCheck %s - -#include - -// CHECK-LABEL: @test_vadd_p8( -// CHECK-NEXT: entry: -// CHECK-NEXT:[[TMP0:%.*]] = xor <8 x i8> [[A:%.*]], [[B:%.*]] -// CHECK-NEXT:ret <8 x i8> [[TMP0]] -// -poly8x8_t test_vadd_p8(poly8x8_t a, poly8x8_t b) { - return vadd_p8 (a, b); -} - -// CHECK-LABEL: @test_vadd_p16( -// CHECK-NEXT: entry: -// CHECK-NEXT:[[TMP0:%.*]] = bitcast <4 x i16> [[A:%.*]] to <8 x i8> -// CHECK-NEXT:[[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8> -// CHECK-NEXT:[[TMP2:%.*]] = xor <8 x i8> [[TMP0]], [[TMP1]] -// CHECK-NEXT:[[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16> -// CHECK-NEXT:ret <4 x i16> [[TMP3]] -// -poly16x4_t test_vadd_p16(poly16x4_t a, poly16x4_t b) { - return vadd_p16 (a, b); -} - -// CHECK-LABEL: @test_vadd_p64( -// CHECK-NEXT: entry: -// CHECK-NEXT:[[TMP0:%.*]] = bitcast <1 x i64> [[A:%.*]] to <8 x i8> -// CHECK-NEXT:[[