@@ -179,20 +179,19 @@ void AMDGCN::Linker::constructLinkAndEmitSpirvCommand(
179179 options::OPT_amdgpu_use_experimental_spirv_backend,
180180 options::OPT_no_amdgpu_use_experimental_spirv_backend, /* Default=*/ false );
181181
182+ // Emit SPIR-V binary either using the SPIRV backend or the translator.
182183 if (UseSPIRVBackend) {
183184 llvm::opt::ArgStringList CmdArgs;
184- CmdArgs.push_back (LinkedBCFile.getFilename ());
185- CmdArgs.append ({" -o" , Output.getFilename ()});
186- const char *Exec =
187- C.getArgs ().MakeArgString (getToolChain ().GetProgramPath (" llc" ));
188185 const char *Triple =
189- C.getArgs ().MakeArgString (" -mtriple=" + getSpirvBackendTriple ());
190- CmdArgs.push_back (Triple);
186+ C.getArgs ().MakeArgString (" -triple=" + getSpirvBackendTriple ());
187+ CmdArgs.append ({" -cc1" , Triple, " -emit-obj" , LinkedBCFile.getFilename (),
188+ " -o" , Output.getFilename ()});
189+ const char *Exec = getToolChain ().getDriver ().getClangProgramPath ();
191190 C.addCommand (std::make_unique<Command>(JA, *this ,
192191 ResponseFileSupport::None (), Exec,
193192 CmdArgs, LinkedBCFile, Output));
194193 } else {
195- // Emit SPIR-V binary .
194+ // Use the SPIRV translator for code gen .
196195 llvm::opt::ArgStringList TrArgs{
197196 " --spirv-max-version=1.6" ,
198197 " --spirv-ext=+all" ,
0 commit comments