Add a build libcore-only nvptx64 test (using xargo).

This also disables the "integer_atomics" feature on nvptx/nvptx64.
This commit is contained in:
Peter Jin 2018-12-28 08:26:45 -05:00 committed by gnzlbg
parent efc7d648c6
commit d30c29e926
6 changed files with 87 additions and 8 deletions

View file

@ -56,6 +56,14 @@ matrix:
script: ci/run.sh
- name: "wasm32-unknown-unknown"
env: TARGET=wasm32-unknown-unknown
- name: "nvptx64-nvidia-cuda - cross compiled, build libcore only"
env: TARGET=x86_64-unknown-linux-gnu CROSS_TARGET=nvptx64-nvidia-cuda-cross NORUN=1 NOSTD=1
install:
- travis_retry rustup target add $TARGET
- travis_retry rustup component add rust-src
- cargo install xargo
- xargo --version
- mkdir -p $HOME/.xargo
- name: "thumbv6m-none-eabi - build libcore only"
env: TARGET=thumbv6m-none-eabi NORUN=1 NOSTD=1
script: ci/run.sh
@ -103,7 +111,7 @@ matrix:
install: travis_retry rustup target add $TARGET
script:
- cargo generate-lockfile
- ci/run-docker.sh $TARGET $FEATURES
- ci/run-docker.sh $TARGET $CROSS_TARGET $FEATURES
notifications:
email:

View file

@ -0,0 +1,15 @@
{
"arch": "nvptx64"
, "cpu": "sm_35"
, "data-layout": "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
, "linker": false
, "linker-flavor": "ld"
, "llvm-target": "nvptx64-nvidia-cuda"
, "max-atomic-width": 0
, "obj-is-bitcode": true
, "os": "cuda"
, "panic-strategy": "abort"
, "target-c-int-width": "32"
, "target-endian": "little"
, "target-pointer-width": "64"
}

View file

@ -0,0 +1,5 @@
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
libc6-dev \
ca-certificates

View file

@ -6,10 +6,18 @@
set -ex
run() {
echo "Building docker container for TARGET=${1}"
docker build -t stdsimd -f "ci/docker/${1}/Dockerfile" ci/
mkdir -p target
target=$(echo "${1}" | sed 's/-emulated//')
cross="0"
if [ -z "${2}" ]; then
echo "Building docker container for TARGET=${1}"
docker build -t stdsimd -f "ci/docker/${1}/Dockerfile" ci/
else
target=$(echo "${2}" | sed 's/-cross//')
cross="1"
echo "Building docker container for CROSS_TARGET=${2}"
docker build -t stdsimd -f "ci/docker/${2}/Dockerfile" ci/
fi
mkdir -p target
echo "Running docker"
# shellcheck disable=SC2016
docker run \
@ -18,6 +26,8 @@ run() {
--init \
--volume "${HOME}"/.cargo:/cargo-h \
--env CARGO_HOME=/cargo-h \
--volume "${HOME}"/.xargo:/xargo-h \
--env XARGO_HOME=/xargo-h \
--volume "$(rustc --print sysroot)":/rust:ro \
--env TARGET="${target}" \
--env STDSIMD_TEST_EVERYTHING \
@ -27,6 +37,7 @@ run() {
--env NORUN \
--env RUSTFLAGS \
--env STDSIMD_TEST_NORUN \
--env CROSS="${cross}" \
--volume "$(pwd)":/checkout:ro \
--volume "$(pwd)"/target:/checkout/target \
--workdir /checkout \
@ -41,5 +52,5 @@ if [ -z "$1" ]; then
run "${d}"
done
else
run "${1}"
run "${1}" "${2}"
fi

View file

@ -30,14 +30,34 @@ echo "FEATURES=${FEATURES}"
echo "OBJDUMP=${OBJDUMP}"
echo "STDSIMD_DISABLE_ASSERT_INSTR=${STDSIMD_DISABLE_ASSERT_INSTR}"
echo "STDSIMD_TEST_EVERYTHING=${STDSIMD_TEST_EVERYTHING}"
echo "CROSS=${CROSS}"
cargo_setup() {
if [ "$CROSS" = "1" ]
then
export RUST_TARGET_PATH="/checkout/ci/cross"
echo "RUST_TARGET_PATH=${RUST_TARGET_PATH}"
fi
}
cargo_test() {
if [ "$CROSS" = "1" ]
then
cmd="/cargo-h/bin/xargo"
else
cmd="cargo"
fi
subcmd="test"
if [ "$NORUN" = "1" ]
then
export subcmd="build"
if [ "$CROSS" = "1" ]
then
export subcmd="rustc"
else
export subcmd="build"
fi
fi
cmd="cargo ${subcmd} --target=$TARGET $1"
cmd="$cmd ${subcmd} --target=$TARGET $1"
if [ "$NOSTD" = "1" ]
then
cmd="$cmd -p coresimd"
@ -52,11 +72,24 @@ cargo_test() {
cmd="$cmd --quiet"
fi
fi
if [ "$CROSS" = "1" ]
then
cmd="$cmd --emit=asm"
fi
$cmd
}
cargo_output() {
if [ "$CROSS" = "1" ]
then
find /checkout/target -name "*.s"
fi
}
cargo_setup
cargo_test
cargo_test "--release"
cargo_output
# Test targets compiled with extra features.
case ${TARGET} in

View file

@ -18,7 +18,6 @@
simd_ffi,
asm,
proc_macro_hygiene,
integer_atomics,
stmt_expr_attributes,
core_intrinsics,
no_core,
@ -38,6 +37,14 @@
powerpc_target_feature,
wasm_target_feature
)]
// NB: When running nvptx/nvptx64 cross tests, enabling "integer_atomics" yields
// a compile-time error: 'unknown feature `integer_atomics`'. This ought to be
// investigated further, but for now just disable "integer_atomics" so we can
// run _some_ test for the nvptx/nvptx64 targets.
#![cfg_attr(
not(any(target_arch = "nvptx", target_arch = "nvptx64")),
feature(integer_atomics)
)]
#![cfg_attr(test, feature(test, abi_vectorcall, untagged_unions))]
#![cfg_attr(
feature = "cargo-clippy",