@@ -8266,34 +8266,28 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
82668266 << " /kernel" ;
82678267 }
82688268
8269- if (Args.hasArg (options::OPT__SLASH_vlen_default)) {
8270- // Override /vlen= options.
8271- for (const Arg *A : Args.filtered (options::OPT__SLASH_vlen))
8272- A->claim ();
8273- // Nothing to do for AVX512F/AVX512.
8274- } else if (const Arg *A = Args.getLastArg (options::OPT__SLASH_vlen)) {
8275- StringRef VLen = A->getValue ();
8269+ if (const Arg *A = Args.getLastArg (options::OPT__SLASH_vlen,
8270+ options::OPT__SLASH_vlen_EQ_256,
8271+ options::OPT__SLASH_vlen_EQ_512)) {
82768272 llvm::SmallSet<std::string, 4 > Arch512 = {" AVX512F" , " AVX512" };
82778273 llvm::SmallSet<std::string, 4 > Arch256 = {" AVX" , " AVX2" };
82788274
82798275 StringRef Arch = Args.getLastArgValue (options::OPT__SLASH_arch);
8280- if (Arch != " " ) {
8281- if (VLen == " =512" ) {
8282- if (Arch512.contains (Arch.str ()))
8283- CmdArgs.push_back (" -mprefer-vector-width=512" );
8284- else
8285- D.Diag (diag::warn_drv_argument_not_allowed_with)
8286- << " /vlen=512" << std::string (" /arch:" ).append (Arch);
8287- } else if (VLen == " =256" ) {
8288- if (Arch512.contains (Arch.str ()))
8289- CmdArgs.push_back (" -mprefer-vector-width=256" );
8290- else if (!Arch256.contains (Arch.str ()))
8291- D.Diag (diag::warn_drv_argument_not_allowed_with)
8292- << " /vlen=256" << std::string (" /arch:" ).append (Arch);
8293- } else {
8294- D.Diag (diag::warn_drv_unknown_argument_clang_cl)
8295- << std::string (" /vlen" ).append (VLen);
8296- }
8276+
8277+ if (A->getOption ().matches (options::OPT__SLASH_vlen_EQ_512)) {
8278+ if (Arch512.contains (Arch.str ()))
8279+ CmdArgs.push_back (" -mprefer-vector-width=512" );
8280+ else
8281+ D.Diag (diag::warn_drv_argument_not_allowed_with)
8282+ << " /vlen=512" << std::string (" /arch:" ).append (Arch);
8283+ }
8284+
8285+ if (A->getOption ().matches (options::OPT__SLASH_vlen_EQ_256)) {
8286+ if (Arch512.contains (Arch.str ()))
8287+ CmdArgs.push_back (" -mprefer-vector-width=256" );
8288+ else if (!Arch256.contains (Arch.str ()))
8289+ D.Diag (diag::warn_drv_argument_not_allowed_with)
8290+ << " /vlen=256" << std::string (" /arch:" ).append (Arch);
82978291 }
82988292 }
82998293
0 commit comments