/arch only affects code generation for native functions. When you use /clr to compile, /arch has no effect on code generation for managed functions.
The __AVX__ preprocessor symbol is defined when the /arch:AVX compiler option is specified. The __AVX2__ preprocessor symbol is defined when the /arch:AVX2 compiler option is specified. For more information, see Predefined Macros. The /arch:AVX2 option was introduced in Visual Studio 2013 Update 2, version 12.0.34567.1.
To set the /arch:AVX or /arch:AVX2 compiler option in Visual Studio
Open the Property Pages dialog box for the project. For more information, see How to: Open Project Property Pages.
Select the Configuration Properties, C/C++ folder.
Select the Code Generation property page.
In the Enable Enhanced Instruction Set drop-down box, choose Advanced Vector Extensions (/arch:AVX) or Advanced Vector Extensions 2 (/arch:AVX2).