Add a build libcore-only nvptx64 test (using xargo).
This also disables the "integer_atomics" feature on nvptx/nvptx64.
This commit is contained in:
parent
efc7d648c6
commit
d30c29e926
6 changed files with 87 additions and 8 deletions
|
|
@ -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:
|
||||
|
|
|
|||
15
library/stdarch/ci/cross/nvptx64-nvidia-cuda.json
Normal file
15
library/stdarch/ci/cross/nvptx64-nvidia-cuda.json
Normal 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"
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
FROM ubuntu:18.04
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
gcc \
|
||||
libc6-dev \
|
||||
ca-certificates
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue