Provide PTXLinker with fallback to internal target-cpu

This commit is contained in:
Denys Zariaiev 2019-01-29 20:54:23 +01:00
parent 899d936dee
commit 3f624456e6
4 changed files with 13 additions and 4 deletions
src
ci/docker/test-various
librustc_codegen_ssa/back
test/run-make
nvptx-binary-crate
nvptx-dylib-crate

@ -14,7 +14,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
xz-utils
# FIXME: build the `ptx-linker` instead.
RUN curl -sL https://github.com/denzp/rust-ptx-linker/releases/download/v0.9.0-alpha.1/rust-ptx-linker.linux64.tar.gz | \
RUN curl -sL https://github.com/denzp/rust-ptx-linker/releases/download/v0.9.0-alpha.2/rust-ptx-linker.linux64.tar.gz | \
tar -xzvC /usr/bin
RUN curl -sL https://nodejs.org/dist/v9.2.0/node-v9.2.0-linux-x64.tar.xz | \

@ -1132,6 +1132,12 @@ impl<'a> Linker for PtxLinker<'a> {
}
fn finalize(&mut self) -> Command {
// Provide the linker with fallback to internal `target-cpu`.
self.cmd.arg("--fallback-arch").arg(match self.sess.opts.cg.target_cpu {
Some(ref s) => s,
None => &self.sess.target.target.options.cpu
});
::std::mem::replace(&mut self.cmd, Command::new(""))
}

@ -2,8 +2,11 @@
ifeq ($(TARGET),nvptx64-nvidia-cuda)
all:
$(RUSTC) main.rs -Clink-arg=--arch=sm_60 --crate-type="bin" -O --target $(TARGET)
FileCheck main.rs --input-file $(TMPDIR)/main.ptx
$(RUSTC) main.rs --crate-type="bin" --target $(TARGET) -O -C link-arg=--arch=sm_60 -o $(TMPDIR)/main.link_arg.ptx
$(RUSTC) main.rs --crate-type="bin" --target $(TARGET) -O -C target-cpu=sm_60 -o $(TMPDIR)/main.target_cpu.ptx
FileCheck main.rs --input-file $(TMPDIR)/main.link_arg.ptx
FileCheck main.rs --input-file $(TMPDIR)/main.target_cpu.ptx
else
all:
endif

@ -5,7 +5,7 @@
extern crate dep;
// Verify the default CUDA arch.
// CHECK: .target sm_20
// CHECK: .target sm_30
// CHECK: .address_size 64
// Make sure declarations are there.