From 433c15dd0b156e9b784fea9fe322533a55fbb5a7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:03:15 -0700 Subject: [PATCH 01/14] draft support update --- .../supported-platforms-visual-cpp.md | 6 ++- docs/overview/toc.yml | 4 +- docs/overview/what-s-new-for-msvc.md | 38 +++++++++++++++++++ ...t-s-new-for-visual-cpp-in-visual-studio.md | 10 ++++- 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 docs/overview/what-s-new-for-msvc.md diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 8c6f293023c..89a8064adf1 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 11/09/2021 +ms.date: 10/09/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -16,7 +16,7 @@ Apps built by using Visual Studio can be targeted to various platforms. |--|--|--|--|--| | Windows XP b | X | X | | | | Windows Vista | X | X | | | -| Windows 7 | X | X | | | +| Windows 7 | Xe | Xe | | | | Windows 8 | X | X | X | | | Windows 8.1 | X | X | X | | | Windows 10 | X | X | X | X | @@ -39,6 +39,8 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. + For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). ## See also diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 66d418921eb..792c8638e27 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -6,7 +6,9 @@ items: href: ../overview/visual-cpp-in-visual-studio.md - name: Overview of C++ development in Visual Studio href: ../overview/overview-of-cpp-development.md - - name: What's new for C++ in Visual Studio 2022 + - name: What's new for MSVC + href: ../overview/what-s-new-for-msvc.md + - name: What's new for C++ in Visual Studio href: ../overview/what-s-new-for-visual-cpp-in-visual-studio.md - name: What's new for C++ in Visual Studio 2019 href: ../overview/what-s-new-for-cpp-2019.md diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md new file mode 100644 index 00000000000..ee0ff78b78e --- /dev/null +++ b/docs/overview/what-s-new-for-msvc.md @@ -0,0 +1,38 @@ +--- +title: "What's new for MSVC" +description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." +ms.date: 10/09/2025 +ms.service: "visual-cpp" +ms.subservice: "compiler" +ms.custom: intro-whats-new +--- + +# What's new for MSVC + +Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler and tools. + +- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). +- For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). + +## What's new for MSVC version x.y + +*Released November 2025* + +| For more information about | See | +|---|---| +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | +| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | +| C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | +| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | + +A quick highlight of some of the new features: + +TBD + +## Feedback and suggestions + +We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/visualstudio/ide/how-to-report-a-problem-with-visual-studio) by using the Send Feedback icon in the upper right-hand corner of either the installer or the Visual Studio IDE, or from **Help** > **Send Feedback**. You can track your issues by using [Visual Studio Developer Community](https://developercommunity.visualstudio.com/), where you add comments or find solutions. You can also get free installation help through our [Live Chat support](https://visualstudio.microsoft.com/vs/support/#talktous). + +## Blogs + +Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file diff --git a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md index 4f546d1d8c0..92546434fb0 100644 --- a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md +++ b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md @@ -1,13 +1,21 @@ --- title: "What's new for C++ in Visual Studio" description: "The new features and fixes in the Microsoft C/C++ compiler and tools in Visual Studio." -ms.date: 05/13/2025 +ms.date: 10/09/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new ai-usage: ai-assisted --- +# What's new for C++ in Visual Studio + +MSVC now ships on it's own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). + +# What's new for C++ in Visual Studio 2026 + +VS 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. + # What's new for C++ in Visual Studio 2022 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. From e95b76ce43db8b11334d05e7848d7320920a6258 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:14:11 -0700 Subject: [PATCH 02/14] update --- docs/overview/supported-platforms-visual-cpp.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 89a8064adf1..e7fce871079 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -17,13 +17,13 @@ Apps built by using Visual Studio can be targeted to various platforms. | Windows XP b | X | X | | | | Windows Vista | X | X | | | | Windows 7 | Xe | Xe | | | -| Windows 8 | X | X | X | | -| Windows 8.1 | X | X | X | | +| Windows 8 | Xe | Xe | Xe | | +| Windows 8.1 | Xe | Xe | Xe | | | Windows 10 | X | X | X | X | | Windows 11 | X | X | X | X | | Windows Server 2003 b | X | X | | | -| Windows Server 2008 R2 | X | X | | | -| Windows Server 2012 R2 | X | X | | | +| Windows Server 2008 R2 | Xe | Xe | | | +| Windows Server 2012 R2 | Xe | Xe | | | | Windows Server 2016 | X | X | | | | Windows Server 2019 | X | X | | | | Windows Server 2022 | X | X | | | @@ -39,7 +39,7 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. The minimum OS version that Visual Studio 2026 and later can target is Windows 10 or later and Windows Server 2016 or later. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 4423a0b9b23f56285790ba925a198e422e539a2a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:28:10 -0700 Subject: [PATCH 03/14] small edit --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index e7fce871079..3ceead7215b 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -39,7 +39,7 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. The minimum OS version that Visual Studio 2026 and later can target is Windows 10 or later and Windows Server 2016 or later. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From c867a5e49cc45a909acf6ce794b147c76fabd551 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 14:35:31 -0700 Subject: [PATCH 04/14] edits --- docs/overview/supported-platforms-visual-cpp.md | 2 +- docs/overview/what-s-new-for-msvc.md | 4 ++-- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 3ceead7215b..17c444bd70b 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/09/2025 +ms.date: 10/17/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index ee0ff78b78e..bd24a7c88a3 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -9,7 +9,7 @@ ms.custom: intro-whats-new # What's new for MSVC -Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler and tools. +Version x.y.z. brings many updates and fixes to the Microsoft C++ compiler and tools. - For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). - For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). @@ -21,7 +21,7 @@ Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler | For more information about | See | |---|---| | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | -| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | +| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | | C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | diff --git a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md index 92546434fb0..68de088af23 100644 --- a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md +++ b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md @@ -10,11 +10,11 @@ ai-usage: ai-assisted # What's new for C++ in Visual Studio -MSVC now ships on it's own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). +MSVC now ships on its own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). # What's new for C++ in Visual Studio 2026 -VS 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. +VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. # What's new for C++ in Visual Studio 2022 From 776a2042c67b08de2e1a2991012f99c02116270e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 14:57:38 -0700 Subject: [PATCH 05/14] new avx10.2 flag --- docs/build/reference/arch-x64.md | 16 +++++++++++----- docs/build/reference/arch-x86.md | 16 +++++++++++----- docs/build/reference/vlen.md | 9 ++++++--- docs/preprocessor/predefined-macros.md | 20 +++++++++----------- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 0bcf4ff2022..625ee1411f8 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -1,9 +1,9 @@ --- description: "Learn more about: /arch (x64)" title: "/arch (x64)" -ms.date: 06/30/2022 -f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1"] -helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]"] +ms.date: 10/21/2025 +f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x64) @@ -11,7 +11,7 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Syntax -> **`/arch:`**\[**`SSE2`**|**`SSE4.2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**] +> **`/arch:`**\[**`SSE2`**|**`SSE4.2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**|**`AVX10.2`**] ## Arguments @@ -33,6 +33,9 @@ Enables Intel Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ Enables Intel Advanced Vector Extensions 10 version 1. +**`/arch:AVX10.2`**\ +Enables Intel Advanced Vector Extensions 10 version 2. + ## Remarks The **`/arch`** option enables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support extensions beyond the ones supported by older processors, although you should consult the documentation for a particular processor or test for instruction set extension support using [`__cpuid`](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension. You can also use the [`__check_isa_support`](../../intrinsics/check-isa-arch-support.md) intrinsic to check for more frequently used CPU features. @@ -51,7 +54,10 @@ The processor extensions have the following characteristics: - **`AVX-512`** introduced another instruction encoding form that allows 512-bit vectors, masking, embedded rounding/broadcast, and new instructions. The default vector length for **`AVX-512`** is 512 bits and can be changed to 256 bits using the [`/vlen`](vlen.md) flag. -- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. +- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. + +- **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index cb71ce0716b..d03ab298b42 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -1,9 +1,9 @@ --- description: "Learn more about: /arch (x86)" title: "/arch (x86)" -ms.date: 06/30/2022 -f1_keywords: ["/arch:IA32", "/arch:SSE", "/arch:SSE2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1"] -helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler option [C++]", "/arch:SSE2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]"] +ms.date: 10/21/2025 +f1_keywords: ["/arch:IA32", "/arch:SSE", "/arch:SSE2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler option [C++]", "/arch:SSE2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x86) @@ -11,7 +11,7 @@ Specifies the architecture for code generation on x86. These switches apply to t ## Syntax -> **`/arch:`**\[**`IA32`**|**`SSE`**|**`SSE2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**] +> **`/arch:`**\[**`IA32`**|**`SSE`**|**`SSE2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**|**`AVX10.2`**] ## Arguments @@ -36,6 +36,9 @@ Enables Intel Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ Enables Intel Advanced Vector Extensions 10 version 1. +**`/arch:AVX10.2`**\ +Enables Intel Advanced Vector Extensions 10 version 2. + ## Remarks The **`/arch`** option enables or disables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support extensions beyond the ones supported by older processors. You should consult the documentation for a particular processor or test for instruction set extension support using [`__cpuid`](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension. You can also use the [`__check_isa_support`](../../intrinsics/check-isa-arch-support.md) intrinsic to check for more frequently used CPU features. @@ -56,7 +59,10 @@ The **`/arch`** options refer to instruction set extensions with the following c - **`AVX512`** introduced another instruction encoding form that allows 512-bit vectors, masking, embedded rounding/broadcast, and new instructions. The default vector length for **`AVX512`** is 512 bits and can be changed to 256 bits using the [`/vlen`](vlen.md) flag. -- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. +- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. + +- **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. The optimizer chooses when and how to use vector instructions depending on which **`/arch`** is specified. Scalar floating-point computations are usually performed with SSE or AVX instructions when available. Some calling conventions specify passing floating-point arguments on the x87 stack, and as a result, your code may use a mixture of both x87 and SSE/AVX instructions for floating-point computations. Integer vector instructions can also be used for some 64-bit integer operations when available. diff --git a/docs/build/reference/vlen.md b/docs/build/reference/vlen.md index 6557c219ef9..cc9030c1b32 100644 --- a/docs/build/reference/vlen.md +++ b/docs/build/reference/vlen.md @@ -9,6 +9,7 @@ helpviewer_keywords: ["specify vector length", "-vlen compiler option [C++]", "v Specifies the vector length for code generation on x86 and x64. For more information about **`/arch`** for x86 and x64, see [`/arch` (x86)](arch-x86.md) and [`/arch` (x64)](arch-x64.md). + ## Syntax > **`/vlen=`**\[**`256`**|**`512`**] @@ -28,14 +29,16 @@ Specify the default vector length for the selected **`/arch`** setting. ## Remarks -If a specific **`/vlen`** value isn't specified, the default vector length depends on the **`/arch`** flag setting. The **`/vlen`** flag can override the default vector length specified by **`/arch:AVX512`** or **`/arch:AVX10.1`** flag. For example: +This compiler option was introduced in Visual Studio 2022 17.13. + +If a specific **`/vlen`** value isn't specified, the default vector length depends on the **`/arch`** compiler option setting. The **`/vlen`** compiler option can override the default vector length specified by **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option. For example: - **`/arch:AVX512 /vlen=256`** overrides the default vector length of 512 bits specified by **`/arch:AVX512`** to be 256 bits. - **`/arch:AVX10.1 /vlen=512`** overrides the default vector length of 256 bits specified by **`/arch:AVX10.1`** to be 512 bits. -When the specified **`/vlen`** value is incompatible with specified **`/arch`** flag, a warning is generated and default vector length for the **`/arch`** setting is used. For example: +When the specified **`/vlen`** value is incompatible with specified **`/arch`** compiler option, a warning is generated and default vector length for the **`/arch`** setting is used. For example: -- **`/arch:AVX2 /vlen=512`** generates a warning because AVX2 doesn't support 512-bit vectors. Vector length of 256 bits is used in this case. +- **`/arch:AVX2 /vlen=512`** generates a warning because AVX2 doesn't support 512-bit vectors. A 256-bit vector length is used in this case. ### To set the `/vlen=256` or `/vlen=512` compiler option in Visual Studio diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index 501dfdd2bed..6eb0a48ee0f 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -69,21 +69,21 @@ MSVC supports other predefined macros: - `__ATOM__` Defined as 1 when the [`/favor:ATOM`](../build/reference/favor-optimize-for-architecture-specifics.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512BW__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512BW__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512CD__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512CD__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512DQ__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512DQ__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512F__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512F__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. - `_CHAR_UNSIGNED` Defined as 1 if the default **`char`** type is unsigned. This value is defined when the [**`/J`** (Default char type is unsigned)](../build/reference/j-default-char-type-is-unsigned.md) compiler option is set. Otherwise, undefined. @@ -234,10 +234,8 @@ MSVC supports other predefined macros: - `_M_IX86_FP` Defined as an integer literal value that indicates the [`/arch`](../build/reference/arch-arm.md) compiler option that was set, or the default. This macro is always defined when the compilation target is an x86 processor. Otherwise, undefined. When defined, the value is: - 0 if the `/arch:IA32` compiler option was set. - - 1 if the `/arch:SSE` compiler option was set. - - - 2 if the `/arch:SSE2`, `/arch:AVX`, `/arch:AVX2`, `/arch:AVX512` or `/arch:AVX10.1` compiler option was set. This value is the default if an `/arch` compiler option wasn't specified. When `/arch:AVX` is specified, the macro `__AVX__` is also defined. When `/arch:AVX2` is specified, both `__AVX__` and `__AVX2__` are also defined. When `/arch:AVX512` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, and `__AVX512VL__` are also defined. When `/arch:AVX10.1` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, `__AVX512VL__` and `__AVX10_VER__` are also defined. + - 2 if the `/arch:SSE2`, `/arch:AVX`, `/arch:AVX2`, `/arch:AVX512`, `/arch:AVX10.1`, or `/arch:AVX10.2` compiler option was set. This value is the default if an `/arch` compiler option wasn't specified. When `/arch:AVX` is specified, the macro `__AVX__` is also defined. When `/arch:AVX2` is specified, both `__AVX__` and `__AVX2__` are also defined. When `/arch:AVX512` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, and `__AVX512VL__` are also defined. When `/arch:AVX10.1` or `/arch:AVX10.2` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, `__AVX512VL__` and `__AVX10_VER__` are also defined. - For more information, see [**`/arch`** (x86)](../build/reference/arch-x86.md). From 5a75b32f751dea47441617305f7f6baaeff3ba05 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 16:07:46 -0700 Subject: [PATCH 06/14] typo --- docs/build/reference/arch-x64.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 625ee1411f8..d720f0ecb98 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -2,7 +2,7 @@ description: "Learn more about: /arch (x64)" title: "/arch (x64)" ms.date: 10/21/2025 -f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", "/arch:AVX10.2"] helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x64) @@ -61,13 +61,13 @@ The processor extensions have the following characteristics: Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. -The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__`, and `__AVX512VL__` preprocessor symbols are defined when the **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX10_VER__` preprocessor symbol is defined when the **`/arch:AVX10.1`** compiler option is specified. It indicates the AVX10 version the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). +The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__`, and `__AVX512VL__` preprocessor symbols are defined when the **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX10_VER__` preprocessor symbol is defined when the **`/arch:AVX10.1`** or **`/arch:AVX10.2`** compiler option is specified. It indicates the AVX10 version the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). The **`/arch:AVX2`** option was introduced in Visual Studio 2013 Update 2, version 12.0.34567.1. Limited support for **`/arch:AVX512`** was added in Visual Studio 2017, and expanded in Visual Studio 2019. -Support for **`/arch:AVX10.1`** was added in Visual Studio 2022. +Support for **`/arch:AVX10.1`** was added in Visual Studio 2022. Support for **`/arch:AVX10.2`** was added in Visual Studio 2026. ### To set the `/arch` compiler option in Visual Studio From f63fe29c28fd6246a8071831b31135178aee86b1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:23:32 -0700 Subject: [PATCH 07/14] edit --- docs/build/reference/arch-x64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index d720f0ecb98..6f9e2f857ba 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -57,7 +57,7 @@ The processor extensions have the following characteristics: - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. From 1a38410889152df1dda6fddf6ff1d2911ea556f8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:33:15 -0700 Subject: [PATCH 08/14] remove other files --- docs/overview/toc.yml | 4 +- docs/overview/what-s-new-for-msvc.md | 38 ------------------- ...t-s-new-for-visual-cpp-in-visual-studio.md | 10 +---- 3 files changed, 2 insertions(+), 50 deletions(-) delete mode 100644 docs/overview/what-s-new-for-msvc.md diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 792c8638e27..66d418921eb 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -6,9 +6,7 @@ items: href: ../overview/visual-cpp-in-visual-studio.md - name: Overview of C++ development in Visual Studio href: ../overview/overview-of-cpp-development.md - - name: What's new for MSVC - href: ../overview/what-s-new-for-msvc.md - - name: What's new for C++ in Visual Studio + - name: What's new for C++ in Visual Studio 2022 href: ../overview/what-s-new-for-visual-cpp-in-visual-studio.md - name: What's new for C++ in Visual Studio 2019 href: ../overview/what-s-new-for-cpp-2019.md diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md deleted file mode 100644 index bd24a7c88a3..00000000000 --- a/docs/overview/what-s-new-for-msvc.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "What's new for MSVC" -description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 10/09/2025 -ms.service: "visual-cpp" -ms.subservice: "compiler" -ms.custom: intro-whats-new ---- - -# What's new for MSVC - -Version x.y.z. brings many updates and fixes to the Microsoft C++ compiler and tools. - -- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). -- For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). - -## What's new for MSVC version x.y - -*Released November 2025* - -| For more information about | See | -|---|---| -| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | -| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | -| C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | -| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | - -A quick highlight of some of the new features: - -TBD - -## Feedback and suggestions - -We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/visualstudio/ide/how-to-report-a-problem-with-visual-studio) by using the Send Feedback icon in the upper right-hand corner of either the installer or the Visual Studio IDE, or from **Help** > **Send Feedback**. You can track your issues by using [Visual Studio Developer Community](https://developercommunity.visualstudio.com/), where you add comments or find solutions. You can also get free installation help through our [Live Chat support](https://visualstudio.microsoft.com/vs/support/#talktous). - -## Blogs - -Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file diff --git a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md index 68de088af23..4f546d1d8c0 100644 --- a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md +++ b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md @@ -1,21 +1,13 @@ --- title: "What's new for C++ in Visual Studio" description: "The new features and fixes in the Microsoft C/C++ compiler and tools in Visual Studio." -ms.date: 10/09/2025 +ms.date: 05/13/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new ai-usage: ai-assisted --- -# What's new for C++ in Visual Studio - -MSVC now ships on its own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). - -# What's new for C++ in Visual Studio 2026 - -VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. - # What's new for C++ in Visual Studio 2022 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. From a639ee46f5ec34455b8d8d5c1e6dd5f0bc07451f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:43:03 -0700 Subject: [PATCH 09/14] acrolinx --- docs/build/reference/arch-x64.md | 4 ++-- docs/build/reference/arch-x86.md | 4 ++-- docs/build/reference/vlen.md | 4 ++-- docs/preprocessor/predefined-macros.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 6f9e2f857ba..696f055f190 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -57,9 +57,9 @@ The processor extensions have the following characteristics: - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because MSVC doesn't support their data types. This compiler option was introduced in Visual Studio 2026. -Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. +Each **`/arch`** option may also enable the use of other nonvector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index d03ab298b42..a133eda92db 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -62,11 +62,11 @@ The **`/arch`** options refer to instruction set extensions with the following c - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because MSVC doesn't support their data types. This compiler option was introduced in Visual Studio 2026. The optimizer chooses when and how to use vector instructions depending on which **`/arch`** is specified. Scalar floating-point computations are usually performed with SSE or AVX instructions when available. Some calling conventions specify passing floating-point arguments on the x87 stack, and as a result, your code may use a mixture of both x87 and SSE/AVX instructions for floating-point computations. Integer vector instructions can also be used for some 64-bit integer operations when available. -In addition to the vector and floating-point scalar instructions, each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the CMOVcc instruction family that first appeared on the Intel Pentium Pro processors. Because SSE instructions were introduced with the subsequent Intel Pentium III processor, CMOVcc instructions may be generated except when **`/arch:IA32`** is specified. +In addition to the vector and floating-point scalar instructions, each **`/arch`** option may also enable the use of other nonvector instructions that are associated with that option. An example is the CMOVcc instruction family that first appeared on the Intel Pentium Pro processors. Because SSE instructions were introduced with the subsequent Intel Pentium III processor, CMOVcc instructions may be generated except when **`/arch:IA32`** is specified. Floating-point operations are normally rounded to double-precision (64-bit) in x87 code, but you can use `_controlfp` to modify the FP control word, including setting the precision control to extended precision (80-bit) or single-precision (32-bit). For more information, see [`_control87`, `_controlfp`, `__control87_2`](../../c-runtime-library/reference/control87-controlfp-control87-2.md). SSE and AVX have separate single-precision and double-precision instructions for each operation, so there's no equivalent for SSE/AVX code. It can change how results are rounded when the result of a floating-point operation is used directly in further calculation instead of assigning it to a user variable. Consider the following operations: diff --git a/docs/build/reference/vlen.md b/docs/build/reference/vlen.md index cc9030c1b32..fbc7abdf60e 100644 --- a/docs/build/reference/vlen.md +++ b/docs/build/reference/vlen.md @@ -19,10 +19,10 @@ Specifies the vector length for code generation on x86 and x64. For more informa ## Arguments **`/vlen=256`**\ -Specify a vector length of 256 bits for auto-vectorization and other optimizations. +Specify a vector length of 256 bits for autovectorization and other optimizations. **`/vlen=512`**\ -Specify a vector length of 512 bits for auto-vectorization and other optimizations. +Specify a vector length of 512 bits for autovectorization and other optimizations. **`/vlen`**\ Specify the default vector length for the selected **`/arch`** setting. diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index 6eb0a48ee0f..f7a79ba86cc 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -69,7 +69,7 @@ MSVC supports other predefined macros: - `__ATOM__` Defined as 1 when the [`/favor:ATOM`](../build/reference/favor-optimize-for-architecture-specifics.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. - `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. @@ -179,7 +179,7 @@ MSVC supports other predefined macros: - `__FUNCTION__` Defined as a string literal that contains the undecorated name of the enclosing function. The macro is defined only within a function. The `__FUNCTION__` macro isn't expanded if you use the [`/EP`](../build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md) or [`/P`](../build/reference/p-preprocess-to-a-file.md) compiler option. For an example of usage, see the `__FUNCDNAME__` macro. -- `_INTEGRAL_MAX_BITS` Defined as the integer literal value 64, the maximum size (in bits) for a non-vector integral type. This macro is always defined. +- `_INTEGRAL_MAX_BITS` Defined as the integer literal value 64, the maximum size (in bits) for a nonvector integral type. This macro is always defined. ```cpp // integral_max_bits.cpp From 5f93c02555eedba6b8a24e250f0fbfddd5220d56 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 19:16:18 -0700 Subject: [PATCH 10/14] review --- .../supported-platforms-visual-cpp.md | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 17c444bd70b..5fd557438e2 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/17/2025 +ms.date: 10/21/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -10,36 +10,43 @@ helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] Apps built by using Visual Studio can be targeted to various platforms. +Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. + ## Visual Studio target OS and architecture support -| Operating System | x86 | x64 | ARM | ARM64a | -|--|--|--|--|--| -| Windows XP b | X | X | | | -| Windows Vista | X | X | | | -| Windows 7 | Xe | Xe | | | -| Windows 8 | Xe | Xe | Xe | | -| Windows 8.1 | Xe | Xe | Xe | | -| Windows 10 | X | X | X | X | -| Windows 11 | X | X | X | X | -| Windows Server 2003 b | X | X | | | -| Windows Server 2008 R2 | Xe | Xe | | | -| Windows Server 2012 R2 | Xe | Xe | | | -| Windows Server 2016 | X | X | | | -| Windows Server 2019 | X | X | | | -| Windows Server 2022 | X | X | | | -| Android c | X | X | X | X | -| iOS c | X | X | X | X | -| Linux d | X | X | X | X | +| Operating System | x86 | x64 | ARM64a | +|--|--|--|--| +| Windows XP b | X | X | | +| Windows Vistaf | X | X | | +| Windows 7e | X | X | | +| Windows 8e | X | X | | +| Windows 8.1e | X | X | | +| Windows 10 | X | X | X | +| Windows 11 | X | X | X | +| Windows Server 2003 b | X | X | | +| Windows Server 2008e | X | X | | +| Windows Server 2008 R2e | X | X | | +| Windows Server 2012e | X | X | | +| Windows Server 2012 R2e | X | X | | +| Windows Server 2016 | X | X | | +| Windows Server 2019 | X | X | | +| Windows Server 2022 | X | X | | +| Windows Server 2025 | X | X | | +| Android c | X | X | X | +| iOS c | X | X | X | +| Linux d | X | X | X | a ARM64 support is available in Visual Studio 2017 and later. -b You can use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. For information on how to use these platform toolsets, see [Configuring Programs for Windows XP](../build/configuring-programs-for-windows-xp.md). For more information on changing the platform toolset, see [How to: Modify the Target Framework and Platform Toolset](../build/how-to-modify-the-target-framework-and-platform-toolset.md). +b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008/2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. + +f Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 5edf6e3df0c5f576db92ab389502f136a777da31 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 10:24:14 -0700 Subject: [PATCH 11/14] review --- .../supported-platforms-visual-cpp.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 5fd557438e2..080b26fe693 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/21/2025 +ms.date: 10/22/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -17,36 +17,36 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. | Operating System | x86 | x64 | ARM64a | |--|--|--|--| | Windows XP b | X | X | | -| Windows Vistaf | X | X | | -| Windows 7e | X | X | | -| Windows 8e | X | X | | -| Windows 8.1e | X | X | | +| Windows Vistac | X | X | | +| Windows 7d | X | X | | +| Windows 8d | X | X | | +| Windows 8.1d | X | X | | | Windows 10 | X | X | X | | Windows 11 | X | X | X | | Windows Server 2003 b | X | X | | -| Windows Server 2008e | X | X | | -| Windows Server 2008 R2e | X | X | | -| Windows Server 2012e | X | X | | -| Windows Server 2012 R2e | X | X | | +| Windows Server 2008d | X | X | | +| Windows Server 2008 R2d | X | X | | +| Windows Server 2012d | X | X | | +| Windows Server 2012 R2d | X | X | | | Windows Server 2016 | X | X | | | Windows Server 2019 | X | X | | | Windows Server 2022 | X | X | | | Windows Server 2025 | X | X | | -| Android c | X | X | X | -| iOS c | X | X | X | -| Linux d | X | X | X | +| Android e | X | X | X | +| iOS e | | | X | +| Linux f | X | X | X | a ARM64 support is available in Visual Studio 2017 and later. b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. -c You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. +c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. -d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. +d Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008/2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. +e You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. -f Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. +f You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 0da78075479e8517a01bd209237b14365039c407 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 22 Oct 2025 10:28:23 -0700 Subject: [PATCH 12/14] Fix duplicate 'or' in AVX10_VER definition --- docs/preprocessor/predefined-macros.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index f7a79ba86cc..f76713d42fa 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -83,7 +83,7 @@ MSVC supports other predefined macros: - `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. - `_CHAR_UNSIGNED` Defined as 1 if the default **`char`** type is unsigned. This value is defined when the [**`/J`** (Default char type is unsigned)](../build/reference/j-default-char-type-is-unsigned.md) compiler option is set. Otherwise, undefined. From ee1bb71b835213f652c2b0f3f7ebb00d8373622e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 15:24:57 -0700 Subject: [PATCH 13/14] clarify --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 080b26fe693..73baebad113 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -38,7 +38,7 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. a ARM64 support is available in Visual Studio 2017 and later. -b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. +b Visual Studio no longer supports targeting Windows XP or Windows Server 2003. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. From 76a4ec23a70e2056ad87c9211c4fec92df1e8e0c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 15:35:59 -0700 Subject: [PATCH 14/14] edit --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 73baebad113..1e369fd7e73 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -38,7 +38,7 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. a ARM64 support is available in Visual Studio 2017 and later. -b Visual Studio no longer supports targeting Windows XP or Windows Server 2003. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. +b Visual Studio no longer supports targeting Windows XP. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008.