@@ -8269,23 +8269,22 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
82698269 if (const Arg *A = Args.getLastArg (options::OPT__SLASH_vlen,
82708270 options::OPT__SLASH_vlen_EQ_256,
82718271 options::OPT__SLASH_vlen_EQ_512)) {
8272- llvm::SmallSet<std::string, 4 > Arch512 = {" AVX512F" , " AVX512" };
8273- llvm::SmallSet<std::string, 4 > Arch256 = {" AVX" , " AVX2" };
8274-
8275- StringRef Arch = Args.getLastArgValue (options::OPT__SLASH_arch);
8272+ llvm::Triple::ArchType AT = getToolChain ().getArch ();
8273+ StringRef Default = AT == llvm::Triple::x86 ? " IA32" : " SSE2" ;
8274+ StringRef Arch = Args.getLastArgValue (options::OPT__SLASH_arch, Default);
82768275
82778276 if (A->getOption ().matches (options::OPT__SLASH_vlen_EQ_512)) {
8278- if (Arch512. contains ( Arch. str ()) )
8277+ if (Arch == " AVX512F " || Arch == " AVX512 " )
82798278 CmdArgs.push_back (" -mprefer-vector-width=512" );
82808279 else
82818280 D.Diag (diag::warn_drv_argument_not_allowed_with)
82828281 << " /vlen=512" << std::string (" /arch:" ).append (Arch);
82838282 }
82848283
82858284 if (A->getOption ().matches (options::OPT__SLASH_vlen_EQ_256)) {
8286- if (Arch512. contains ( Arch. str ()) )
8285+ if (Arch == " AVX512F " || Arch == " AVX512 " )
82878286 CmdArgs.push_back (" -mprefer-vector-width=256" );
8288- else if (!Arch256. contains ( Arch. str ()) )
8287+ else if (Arch != " AVX " && Arch != " AVX2 " )
82898288 D.Diag (diag::warn_drv_argument_not_allowed_with)
82908289 << " /vlen=256" << std::string (" /arch:" ).append (Arch);
82918290 }
0 commit comments