ci: enable piglit testing of clover/llvmpipe.
authorDave Airlie <airlied@redhat.com>
Mon, 28 Sep 2020 22:40:13 +0000 (08:40 +1000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 8 Oct 2020 00:41:30 +0000 (00:41 +0000)
This adds support for building clover/llvmpipe and running the
piglit CL tests on it.

It uses the gl testing container, and add builds the libclc
spirv libraries as part of that which requires the llvm spirv
translator in the build container.

It also builds the llvm spirv translator as part of the build
root and creates a mesa build that builds clover for testing
against it. It uses llvm 10 as the baseline.

This drops bswap as it has an oob memory access with llvmpipe
which cause flaky test results. phatk also seems flaky

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6901>

.gitlab-ci.yml
.gitlab-ci/build-libclc.sh [new file with mode: 0644]
.gitlab-ci/build-piglit.sh
.gitlab-ci/container/x86_build.sh
.gitlab-ci/container/x86_test-gl.sh
.gitlab-ci/piglit/cl.txt [new file with mode: 0644]
.gitlab-ci/piglit/run_cl.sh [new file with mode: 0755]

index 443ced1..ecc5d46 100644 (file)
@@ -258,7 +258,7 @@ x86_build:
   extends:
     - .use-x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_build "2020-10-06-clang10-2"
+    FDO_DISTRIBUTION_TAG: &x86_build "2020-10-06-clang10-cl3"
 
 .use-x86_build:
   variables:
@@ -330,7 +330,7 @@ x86_test-base:
 x86_test-gl:
   extends: .use-x86_test-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-10-06-clang10-2"
+    FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-10-06-clang10-cl3"
 
 # Debian 10 based x86 test image for VK
 x86_test-vk:
@@ -566,6 +566,26 @@ meson-testing:
     - .gitlab-ci/meson-build.sh
     - .gitlab-ci/prepare-artifacts.sh
 
+meson-clover-testing:
+  extends:
+    - .meson-build
+    - .ci-deqp-artifacts
+  variables:
+    UNWIND: "enabled"
+    LLVM_VERSION: 10
+    DRI_LOADERS: >
+      -D glx=disabled
+      -D egl=disabled
+      -D gbm=disabled
+    GALLIUM_ST: >
+      -D gallium-opencl=icd
+      -D opencl-spirv=true
+    GALLIUM_DRIVERS: "swrast"
+    BUILDTYPE: "debugoptimized"
+  script:
+    - .gitlab-ci/meson-build.sh
+    - .gitlab-ci/prepare-artifacts.sh
+
 meson-gallium:
   extends: .meson-build
   variables:
@@ -881,16 +901,22 @@ meson-mingw32-x86_64:
     paths:
       - results/
 
-.test-gl:
+.use-x86_test-gl:
   extends:
     - .test
   variables:
     TAG: *x86_test-gl
   image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
   needs:
-    - meson-testing
     - x86_test-gl
 
+.test-gl:
+  extends:
+    - .use-x86_test-gl
+  needs:
+    - x86_test-gl
+    - meson-testing
+
 .test-vk:
   extends:
     - .test
@@ -901,6 +927,13 @@ meson-mingw32-x86_64:
     - meson-testing
     - x86_test-vk
 
+.test-cl:
+  extends:
+    - .use-x86_test-gl
+  needs:
+    - x86_test-gl
+    - meson-clover-testing
+
 .piglit-test:
   extends:
     - .test-gl
@@ -916,6 +949,19 @@ meson-mingw32-x86_64:
   script:
     - install/piglit/run.sh
 
+piglit-cl:
+  extends:
+    - .piglit-test
+    - .test-cl
+  variables:
+    LP_CL: 1
+    LP_NUM_THREADS: 1
+    PIGLIT_PROFILES: cl
+    PIGLIT_OPTIONS: >
+      -x bswap -x phatk
+  script:
+    - install/piglit/run_cl.sh
+
 piglit-quick_gl:
   extends: .piglit-test
   variables:
diff --git a/.gitlab-ci/build-libclc.sh b/.gitlab-ci/build-libclc.sh
new file mode 100644 (file)
index 0000000..be12ed8
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+set -ex
+
+export LLVM_CONFIG="llvm-config-10"
+
+$LLVM_CONFIG --version
+
+git clone https://github.com/KhronosGroup/SPIRV-LLVM-Translator -b llvm_release_100 --depth 1 /SPIRV-LLVM-Translator
+pushd /SPIRV-LLVM-Translator
+cmake -G Ninja -DLLVM_BUILD_TOOLS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DCMAKE_INSTALL_PREFIX=`$LLVM_CONFIG --prefix`
+ninja
+ninja install
+popd
+
+
+git config --global user.email "mesa@example.com"
+git config --global user.name "Mesa CI"
+git clone \
+    https://github.com/llvm/llvm-project \
+    --depth 1 \
+    /llvm-project
+
+mkdir /libclc
+pushd /libclc
+cmake -G Ninja -DLLVM_CONFIG=$LLVM_CONFIG -DLIBCLC_TARGETS_TO_BUILD="spirv-mesa3d-;spirv64-mesa3d-" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr /llvm-project/libclc
+ninja
+ninja install
+popd
+
+# workaroud cmake vs debian packaging.
+mkdir -p /usr/lib/clc
+ln -s /usr/share/clc/spirv64-mesa3d-.spv /usr/lib/clc/
+ln -s /usr/share/clc/spirv-mesa3d-.spv /usr/lib/clc/
+
+du -sh *
+rm -rf /libclc /llvm-project /SPIRV-LLVM-Translator
index 75300e0..7d77b10 100644 (file)
@@ -6,7 +6,7 @@ git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-ch
 pushd /piglit
 git checkout 404862743cf8a7b37a4e3a93b4ba1858d59cd4ab
 patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff
-cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
+cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DPIGLIT_BUILD_CL_TESTS=ON
 ninja
 find -name .git -o -name '*ninja*' -o -iname '*cmake*' -o -name '*.[chao]' | xargs rm -rf
 rm -rf target_api
index 75a45ea..26cd646 100644 (file)
@@ -27,8 +27,11 @@ apt-get update
 apt-get install -y --no-remove \
       $STABLE_EPHEMERAL \
       libarchive-dev \
+      libclang-cpp10-dev \
       liblua5.3-dev \
       libxml2-dev \
+      ocl-icd-opencl-dev \
+      spirv-tools \
       wine-development \
       wine32-development
 
@@ -98,6 +101,12 @@ tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
 pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
 rm -rf libglvnd-v$GLVND_VERSION
 
+git clone https://github.com/KhronosGroup/SPIRV-LLVM-Translator -b llvm_release_100 --depth 1
+pushd SPIRV-LLVM-Translator
+cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC
+ninja
+ninja install
+popd
 
 pushd /usr/local
 git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
index 2edef88..2db11b6 100644 (file)
@@ -10,8 +10,10 @@ STABLE_EPHEMERAL=" \
       autoconf \
       automake \
       ccache \
+      clang-10 \
       cmake \
       g++ \
+      libclang-cpp10-dev \
       libgbm-dev \
       libgles2-mesa-dev \
       libpcre3-dev \
@@ -22,8 +24,10 @@ STABLE_EPHEMERAL=" \
       libxcb-keysyms1-dev \
       libxkbcommon-dev \
       libxrender-dev \
+      llvm-10-dev \
       make \
       meson \
+      ocl-icd-opencl-dev \
       patch \
       pkg-config \
       python3-distutils \
@@ -33,12 +37,21 @@ STABLE_EPHEMERAL=" \
       "
 
 apt-get install -y --no-remove \
+      clinfo \
+      libclang-common-10-dev \
+      libclang-cpp10 \
       libxcb-shm0 \
+      ocl-icd-libopencl1 \
+      spirv-tools \
       $STABLE_EPHEMERAL
 
 
 . .gitlab-ci/container/container_pre_build.sh
 
+############### Build libclc
+
+. .gitlab-ci/build-libclc.sh
+
 ############### Build virglrenderer
 
 . .gitlab-ci/build-virglrenderer.sh
diff --git a/.gitlab-ci/piglit/cl.txt b/.gitlab-ci/piglit/cl.txt
new file mode 100644 (file)
index 0000000..ff3d9e0
--- /dev/null
@@ -0,0 +1,420 @@
+api/clbuildprogram: fail
+api/clcompileprogram: skip
+api/clenqueuefillbuffer: skip
+api/clenqueuefillimage: skip
+api/clenqueuemigratememobjects: skip
+api/clgetextensionfunctionaddressforplatform: skip
+api/clgetimageinfo: skip
+api/clgetkernelarginfo: skip
+api/cllinkprogram: skip
+api/clsetkernelarg/set kernel argument for cl_int3: fail
+api/clsetkernelarg/set kernel argument for sampler: skip
+interop/egl_khr_cl_event2: skip
+program/build/include-directories: fail
+program/build/printf: skip
+program/check predefined preprocessor macros/__opencl_c_version__ must be consistent with host (if defined): skip
+program/check predefined preprocessor macros/__opencl_c_version__ must be defined for opencl 1.2 and later: skip
+program/check predefined preprocessor macros/cl_version_1_2 must be defined for opencl 1.2 and later: skip
+program/check predefined preprocessor macros/cl_version_2_0 must be defined for opencl 2.0 and later: skip
+program/execute/amdgcn-callee-saved-registers: skip
+program/execute/amdgcn-f16-inline-immediates: skip
+program/execute/amdgcn-f32-inline-immediates/add integer 64: fail
+program/execute/amdgcn-i16-inline-immediates: skip
+program/execute/amdgcn-mubuf-negative-vaddr: crash
+program/execute/amdgcn.sign_extend_inreg: crash
+program/execute/atomic_int64_add-global: skip
+program/execute/atomic_int64_add-global-return: skip
+program/execute/atomic_int64_add-local: skip
+program/execute/atomic_int64_and-global: skip
+program/execute/atomic_int64_and-global-return: skip
+program/execute/atomic_int64_and-local: skip
+program/execute/atomic_int64_cmpxchg-global: skip
+program/execute/atomic_int64_cmpxchg-global-return: skip
+program/execute/atomic_int64_cmpxchg-local: skip
+program/execute/atomic_int64_dec-global: skip
+program/execute/atomic_int64_dec-global-return: skip
+program/execute/atomic_int64_dec-local: skip
+program/execute/atomic_int64_inc-global: skip
+program/execute/atomic_int64_inc-global-return: skip
+program/execute/atomic_int64_inc-local: skip
+program/execute/atomic_int64_max-global: skip
+program/execute/atomic_int64_max-global-return: skip
+program/execute/atomic_int64_max-local: skip
+program/execute/atomic_int64_min-global: skip
+program/execute/atomic_int64_min-global-return: skip
+program/execute/atomic_int64_min-local: skip
+program/execute/atomic_int64_or-global: skip
+program/execute/atomic_int64_or-global-return: skip
+program/execute/atomic_int64_or-local: skip
+program/execute/atomic_int64_sub-global: skip
+program/execute/atomic_int64_sub-global-return: skip
+program/execute/atomic_int64_sub-local: skip
+program/execute/atomic_int64_xchg-global: skip
+program/execute/atomic_int64_xchg-global-return: skip
+program/execute/atomic_int64_xchg-local: skip
+program/execute/atomic_int64_xor-global: skip
+program/execute/atomic_int64_xor-global-return: skip
+program/execute/atomic_int64_xor-local: skip
+program/execute/builtin/builtin-char-abs-1.0.generated: fail
+program/execute/builtin/builtin-char-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-char-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-char-clamp-1.1.generated: fail
+program/execute/builtin/builtin-char-clz-1.0.generated: fail
+program/execute/builtin/builtin-char-hadd-1.0.generated: fail
+program/execute/builtin/builtin-char-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-char-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-char-max-1.1.generated: fail
+program/execute/builtin/builtin-char-min-1.1.generated: fail
+program/execute/builtin/builtin-char-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-char-popcount-1.2.generated: skip
+program/execute/builtin/builtin-char-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-char-rotate-1.0.generated: fail
+program/execute/builtin/builtin-char-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-char-upsample-1.0.generated: fail
+program/execute/builtin/builtin-float-acos-1.0.generated: fail
+program/execute/builtin/builtin-float-acosh-1.0.generated: fail
+program/execute/builtin/builtin-float-acospi-1.0.generated: fail
+program/execute/builtin/builtin-float-asin-1.0.generated: fail
+program/execute/builtin/builtin-float-asinh-1.0.generated: fail
+program/execute/builtin/builtin-float-asinpi-1.0.generated: fail
+program/execute/builtin/builtin-float-atan-1.0.generated: fail
+program/execute/builtin/builtin-float-atan2-1.0.generated: fail
+program/execute/builtin/builtin-float-atan2pi-1.0.generated: fail
+program/execute/builtin/builtin-float-atanh-1.0.generated: fail
+program/execute/builtin/builtin-float-atanpi-1.0.generated: fail
+program/execute/builtin/builtin-float-cbrt-1.0.generated: fail
+program/execute/builtin/builtin-float-ceil-1.0.generated: fail
+program/execute/builtin/builtin-float-clamp-1.0.generated: fail
+program/execute/builtin/builtin-float-copysign-1.0.generated: fail
+program/execute/builtin/builtin-float-cos-1.0.generated: fail
+program/execute/builtin/builtin-float-cosh-1.0.generated: fail
+program/execute/builtin/builtin-float-cospi-1.0.generated: fail
+program/execute/builtin/builtin-float-degrees-1.0.generated: fail
+program/execute/builtin/builtin-float-erf-1.0.generated: fail
+program/execute/builtin/builtin-float-erfc-1.0.generated: fail
+program/execute/builtin/builtin-float-exp-1.0.generated: fail
+program/execute/builtin/builtin-float-exp10-1.0.generated: fail
+program/execute/builtin/builtin-float-exp2-1.0.generated: fail
+program/execute/builtin/builtin-float-expm1-1.0.generated: fail
+program/execute/builtin/builtin-float-fabs-1.0.generated: fail
+program/execute/builtin/builtin-float-fdim-1.0.generated: fail
+program/execute/builtin/builtin-float-floor-1.0.generated: fail
+program/execute/builtin/builtin-float-fma-1.0.generated: fail
+program/execute/builtin/builtin-float-fmax-1.0.generated: fail
+program/execute/builtin/builtin-float-fmin-1.0.generated: fail
+program/execute/builtin/builtin-float-fmod-1.0.generated: fail
+program/execute/builtin/builtin-float-fract-1.0.generated: fail
+program/execute/builtin/builtin-float-frexp-1.0.generated: fail
+program/execute/builtin/builtin-float-hypot-1.0.generated: fail
+program/execute/builtin/builtin-float-ilogb-1.0.generated: fail
+program/execute/builtin/builtin-float-isequal-1.0.generated: fail
+program/execute/builtin/builtin-float-isfinite-1.0.generated: fail
+program/execute/builtin/builtin-float-isgreater-1.0.generated: fail
+program/execute/builtin/builtin-float-isgreaterequal-1.0.generated: fail
+program/execute/builtin/builtin-float-isinf-1.0.generated: fail
+program/execute/builtin/builtin-float-isless-1.0.generated: fail
+program/execute/builtin/builtin-float-islessequal-1.0.generated: fail
+program/execute/builtin/builtin-float-islessgreater-1.0.generated: fail
+program/execute/builtin/builtin-float-isnan-1.0.generated: fail
+program/execute/builtin/builtin-float-isnormal-1.0.generated: fail
+program/execute/builtin/builtin-float-isnotequal-1.0.generated: fail
+program/execute/builtin/builtin-float-isordered-1.0.generated: fail
+program/execute/builtin/builtin-float-isunordered-1.0.generated: fail
+program/execute/builtin/builtin-float-ldexp-1.0.generated: fail
+program/execute/builtin/builtin-float-lgamma-1.0.generated: fail
+program/execute/builtin/builtin-float-lgamma_r-1.0.generated: fail
+program/execute/builtin/builtin-float-log-1.0.generated: fail
+program/execute/builtin/builtin-float-log10-1.0.generated: fail
+program/execute/builtin/builtin-float-log1p-1.0.generated: fail
+program/execute/builtin/builtin-float-log2-1.0.generated: fail
+program/execute/builtin/builtin-float-logb-1.0.generated: fail
+program/execute/builtin/builtin-float-mad-1.0.generated: fail
+program/execute/builtin/builtin-float-max-1.0.generated: fail
+program/execute/builtin/builtin-float-maxmag-1.1.generated: fail
+program/execute/builtin/builtin-float-min-1.0.generated: fail
+program/execute/builtin/builtin-float-minmag-1.1.generated: fail
+program/execute/builtin/builtin-float-mix-1.0.generated: fail
+program/execute/builtin/builtin-float-modf-1.0.generated: fail
+program/execute/builtin/builtin-float-nextafter-1.0.generated: fail
+program/execute/builtin/builtin-float-pow-1.0.generated: fail
+program/execute/builtin/builtin-float-pown-1.0.generated: fail
+program/execute/builtin/builtin-float-powr-1.0.generated: fail
+program/execute/builtin/builtin-float-radians-1.0.generated: fail
+program/execute/builtin/builtin-float-remainder-1.0.generated: fail
+program/execute/builtin/builtin-float-remquo-1.0.generated: fail
+program/execute/builtin/builtin-float-rint-1.0.generated: fail
+program/execute/builtin/builtin-float-rootn-1.0.generated: fail
+program/execute/builtin/builtin-float-round-1.0.generated: fail
+program/execute/builtin/builtin-float-rsqrt-1.0.generated: fail
+program/execute/builtin/builtin-float-sign-1.0.generated: fail
+program/execute/builtin/builtin-float-signbit-1.0.generated: fail
+program/execute/builtin/builtin-float-sin-1.0.generated: fail
+program/execute/builtin/builtin-float-sincos-1.0.generated: fail
+program/execute/builtin/builtin-float-sinh-1.0.generated: fail
+program/execute/builtin/builtin-float-sinpi-1.0.generated: fail
+program/execute/builtin/builtin-float-smoothstep-1.0.generated: fail
+program/execute/builtin/builtin-float-sqrt-1.0.generated: fail
+program/execute/builtin/builtin-float-step-1.0.generated: fail
+program/execute/builtin/builtin-float-tan-1.0.generated: fail
+program/execute/builtin/builtin-float-tanh-1.0.generated: fail
+program/execute/builtin/builtin-float-tanpi-1.0.generated: fail
+program/execute/builtin/builtin-float-tgamma-1.0.generated: fail
+program/execute/builtin/builtin-float-trunc-1.0.generated: fail
+program/execute/builtin/builtin-int-abs-1.0.generated: fail
+program/execute/builtin/builtin-int-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-int-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-int-clamp-1.1.generated: fail
+program/execute/builtin/builtin-int-clz-1.0.generated: fail
+program/execute/builtin/builtin-int-hadd-1.0.generated: fail
+program/execute/builtin/builtin-int-mad24-1.0.generated: fail
+program/execute/builtin/builtin-int-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-int-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-int-max-1.1.generated: fail
+program/execute/builtin/builtin-int-min-1.1.generated: fail
+program/execute/builtin/builtin-int-mul24-1.0.generated: fail
+program/execute/builtin/builtin-int-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-int-popcount-1.2.generated: skip
+program/execute/builtin/builtin-int-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-int-rotate-1.0.generated: fail
+program/execute/builtin/builtin-int-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-int-upsample-1.0.generated: fail
+program/execute/builtin/builtin-long-abs-1.0.generated: fail
+program/execute/builtin/builtin-long-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-long-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-long-clamp-1.1.generated: fail
+program/execute/builtin/builtin-long-clz-1.0.generated: fail
+program/execute/builtin/builtin-long-hadd-1.0.generated: fail
+program/execute/builtin/builtin-long-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-long-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-long-max-1.1.generated: fail
+program/execute/builtin/builtin-long-min-1.1.generated: fail
+program/execute/builtin/builtin-long-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-long-popcount-1.2.generated: skip
+program/execute/builtin/builtin-long-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-long-rotate-1.0.generated: fail
+program/execute/builtin/builtin-long-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-short-abs-1.0.generated: fail
+program/execute/builtin/builtin-short-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-short-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-short-clamp-1.1.generated: fail
+program/execute/builtin/builtin-short-clz-1.0.generated: fail
+program/execute/builtin/builtin-short-hadd-1.0.generated: fail
+program/execute/builtin/builtin-short-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-short-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-short-max-1.1.generated: fail
+program/execute/builtin/builtin-short-min-1.1.generated: fail
+program/execute/builtin/builtin-short-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-short-popcount-1.2.generated: skip
+program/execute/builtin/builtin-short-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-short-rotate-1.0.generated: fail
+program/execute/builtin/builtin-short-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-short-upsample-1.0.generated: fail
+program/execute/builtin/builtin-shuffle-char-uchar: fail
+program/execute/builtin/builtin-shuffle-double-ulong: fail
+program/execute/builtin/builtin-shuffle-float-uint: fail
+program/execute/builtin/builtin-shuffle-half-ushort: skip
+program/execute/builtin/builtin-shuffle-int-uint: fail
+program/execute/builtin/builtin-shuffle-long-ulong: fail
+program/execute/builtin/builtin-shuffle-short-ushort: fail
+program/execute/builtin/builtin-shuffle-uchar-uchar: fail
+program/execute/builtin/builtin-shuffle-uint-uint: fail
+program/execute/builtin/builtin-shuffle-ulong-ulong: fail
+program/execute/builtin/builtin-shuffle-ushort-ushort: fail
+program/execute/builtin/builtin-shuffle2-char-uchar: fail
+program/execute/builtin/builtin-shuffle2-double-ulong: fail
+program/execute/builtin/builtin-shuffle2-float-uint: fail
+program/execute/builtin/builtin-shuffle2-half-ushort: skip
+program/execute/builtin/builtin-shuffle2-int-uint: fail
+program/execute/builtin/builtin-shuffle2-long-ulong: fail
+program/execute/builtin/builtin-shuffle2-short-ushort: fail
+program/execute/builtin/builtin-shuffle2-uchar-uchar: fail
+program/execute/builtin/builtin-shuffle2-uint-uint: fail
+program/execute/builtin/builtin-shuffle2-ulong-ulong: fail
+program/execute/builtin/builtin-shuffle2-ushort-ushort: fail
+program/execute/builtin/builtin-uchar-abs-1.0.generated: fail
+program/execute/builtin/builtin-uchar-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-uchar-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-uchar-clamp-1.1.generated: fail
+program/execute/builtin/builtin-uchar-clz-1.0.generated: fail
+program/execute/builtin/builtin-uchar-hadd-1.0.generated: fail
+program/execute/builtin/builtin-uchar-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-uchar-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-uchar-max-1.1.generated: fail
+program/execute/builtin/builtin-uchar-min-1.1.generated: fail
+program/execute/builtin/builtin-uchar-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-uchar-popcount-1.2.generated: skip
+program/execute/builtin/builtin-uchar-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-uchar-rotate-1.0.generated: fail
+program/execute/builtin/builtin-uchar-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-uchar-upsample-1.0.generated: fail
+program/execute/builtin/builtin-uint-abs-1.0.generated: fail
+program/execute/builtin/builtin-uint-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-uint-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-uint-clamp-1.1.generated: fail
+program/execute/builtin/builtin-uint-clz-1.0.generated: fail
+program/execute/builtin/builtin-uint-hadd-1.0.generated: fail
+program/execute/builtin/builtin-uint-mad24-1.0.generated: fail
+program/execute/builtin/builtin-uint-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-uint-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-uint-max-1.1.generated: fail
+program/execute/builtin/builtin-uint-min-1.1.generated: fail
+program/execute/builtin/builtin-uint-mul24-1.0.generated: fail
+program/execute/builtin/builtin-uint-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-uint-popcount-1.2.generated: skip
+program/execute/builtin/builtin-uint-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-uint-rotate-1.0.generated: fail
+program/execute/builtin/builtin-uint-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-uint-upsample-1.0.generated: fail
+program/execute/builtin/builtin-ulong-abs-1.0.generated: fail
+program/execute/builtin/builtin-ulong-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-ulong-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-ulong-clamp-1.1.generated: fail
+program/execute/builtin/builtin-ulong-clz-1.0.generated: fail
+program/execute/builtin/builtin-ulong-hadd-1.0.generated: fail
+program/execute/builtin/builtin-ulong-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-ulong-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-ulong-max-1.1.generated: fail
+program/execute/builtin/builtin-ulong-min-1.1.generated: fail
+program/execute/builtin/builtin-ulong-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-ulong-popcount-1.2.generated: skip
+program/execute/builtin/builtin-ulong-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-ulong-rotate-1.0.generated: fail
+program/execute/builtin/builtin-ulong-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-ushort-abs-1.0.generated: fail
+program/execute/builtin/builtin-ushort-abs_diff-1.0.generated: fail
+program/execute/builtin/builtin-ushort-add_sat-1.0.generated: fail
+program/execute/builtin/builtin-ushort-clamp-1.1.generated: fail
+program/execute/builtin/builtin-ushort-clz-1.0.generated: fail
+program/execute/builtin/builtin-ushort-hadd-1.0.generated: fail
+program/execute/builtin/builtin-ushort-mad_hi-1.0.generated: fail
+program/execute/builtin/builtin-ushort-mad_sat-1.0.generated: fail
+program/execute/builtin/builtin-ushort-max-1.1.generated: fail
+program/execute/builtin/builtin-ushort-min-1.1.generated: fail
+program/execute/builtin/builtin-ushort-mul_hi-1.0.generated: fail
+program/execute/builtin/builtin-ushort-popcount-1.2.generated: skip
+program/execute/builtin/builtin-ushort-rhadd-1.0.generated: fail
+program/execute/builtin/builtin-ushort-rotate-1.0.generated: fail
+program/execute/builtin/builtin-ushort-sub_sat-1.0.generated: fail
+program/execute/builtin/builtin-ushort-upsample-1.0.generated: fail
+program/execute/call-clobbers-amdgcn: skip
+program/execute/calls: crash
+program/execute/calls-large-struct: crash
+program/execute/calls-struct: crash
+program/execute/gegl-rgb-gamma-u8-to-ragabaf: crash
+program/execute/global-offset/3d, input dependent: fail
+program/execute/i32-stack-array: crash
+program/execute/image-attributes: skip
+program/execute/image-read-2d: skip
+program/execute/image-write-2d: skip
+program/execute/load-hi16: crash
+program/execute/load-hi16-generic: skip
+program/execute/load-lo16: crash
+program/execute/load-lo16-generic: skip
+program/execute/mad-mix: skip
+program/execute/multiple-stack-objects: crash
+program/execute/negative-private-base-pointer: crash
+program/execute/program-tester-check-local-size-test-should-skip/this test should skip: skip
+program/execute/pyrit-wpa-psk: crash
+program/execute/realign-stack: crash
+program/execute/reference: crash
+program/execute/sampler: skip
+program/execute/scalar-logical-float: skip
+program/execute/store-hi16-generic: skip
+program/execute/v2i32-stack: crash
+program/execute/v3i32-stack: crash
+program/execute/v3i32-stack-array: crash
+program/execute/v4i32-stack: crash
+program/execute/vload/vload-char-global: fail
+program/execute/vload/vload-char-local: fail
+program/execute/vload/vload-char-private: fail
+program/execute/vload/vload-double-global: fail
+program/execute/vload/vload-double-local: fail
+program/execute/vload/vload-double-private: fail
+program/execute/vload/vload-float-global: fail
+program/execute/vload/vload-float-local: fail
+program/execute/vload/vload-float-private: fail
+program/execute/vload/vload-half-constant: skip
+program/execute/vload/vload-half-global: skip
+program/execute/vload/vload-half-local: skip
+program/execute/vload/vload-half-private: skip
+program/execute/vload/vload-int-global: fail
+program/execute/vload/vload-int-local: fail
+program/execute/vload/vload-int-private: fail
+program/execute/vload/vload-long-global: fail
+program/execute/vload/vload-long-local: fail
+program/execute/vload/vload-long-private: fail
+program/execute/vload/vload-short-global: fail
+program/execute/vload/vload-short-local: fail
+program/execute/vload/vload-short-private: fail
+program/execute/vload/vload-uchar-global: fail
+program/execute/vload/vload-uchar-local: fail
+program/execute/vload/vload-uchar-private: fail
+program/execute/vload/vload-uint-global: fail
+program/execute/vload/vload-uint-local: fail
+program/execute/vload/vload-uint-private: fail
+program/execute/vload/vload-ulong-global: fail
+program/execute/vload/vload-ulong-local: fail
+program/execute/vload/vload-ulong-private: fail
+program/execute/vload/vload-ushort-global: fail
+program/execute/vload/vload-ushort-local: fail
+program/execute/vload/vload-ushort-private: fail
+program/execute/vload/vload_half-float-local: crash
+program/execute/vload/vload_half-float-private: crash
+program/execute/vload/vloada_half-float-private: crash
+program/execute/vstore/vstore-char-global: fail
+program/execute/vstore/vstore-char-local: fail
+program/execute/vstore/vstore-char-private: fail
+program/execute/vstore/vstore-double-global: fail
+program/execute/vstore/vstore-double-local: fail
+program/execute/vstore/vstore-double-private: fail
+program/execute/vstore/vstore-float-global: fail
+program/execute/vstore/vstore-float-local: fail
+program/execute/vstore/vstore-float-private: fail
+program/execute/vstore/vstore-half-global: skip
+program/execute/vstore/vstore-half-local: skip
+program/execute/vstore/vstore-half-private: skip
+program/execute/vstore/vstore-int-global: fail
+program/execute/vstore/vstore-int-local: fail
+program/execute/vstore/vstore-int-private: fail
+program/execute/vstore/vstore-long-global: fail
+program/execute/vstore/vstore-long-local: fail
+program/execute/vstore/vstore-long-private: fail
+program/execute/vstore/vstore-short-global: fail
+program/execute/vstore/vstore-short-local: fail
+program/execute/vstore/vstore-short-private: fail
+program/execute/vstore/vstore-uchar-global: fail
+program/execute/vstore/vstore-uchar-local: fail
+program/execute/vstore/vstore-uchar-private: fail
+program/execute/vstore/vstore-uint-global: fail
+program/execute/vstore/vstore-uint-local: fail
+program/execute/vstore/vstore-uint-private: fail
+program/execute/vstore/vstore-ulong-global: fail
+program/execute/vstore/vstore-ulong-local: fail
+program/execute/vstore/vstore-ulong-private: fail
+program/execute/vstore/vstore-ushort-global: fail
+program/execute/vstore/vstore-ushort-local: fail
+program/execute/vstore/vstore-ushort-private: fail
+program/execute/vstore/vstore_half-double-global: crash
+program/execute/vstore/vstore_half-double-local: crash
+program/execute/vstore/vstore_half-double-private: crash
+program/execute/vstore/vstore_half-float-private: crash
+program/execute/vstore/vstorea_half-double-global: crash
+program/execute/vstore/vstorea_half-double-local: crash
+program/execute/vstore/vstorea_half-double-private: crash
+program/execute/vstore/vstorea_half-float-private: crash
+summary:
+       name:  results
+       ----  --------
+       pass:     1418
+       fail:      296
+      crash:       29
+       skip:       79
+    timeout:        0
+       warn:        0
+ incomplete:        0
+ dmesg-warn:        0
+ dmesg-fail:        0
+    changes:        0
+      fixes:        0
+regressions:        0
+      total:     1822
diff --git a/.gitlab-ci/piglit/run_cl.sh b/.gitlab-ci/piglit/run_cl.sh
new file mode 100755 (executable)
index 0000000..57251ea
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -e
+set -o xtrace
+
+VERSION=`cat install/VERSION`
+
+rm -rf results
+cd /piglit
+
+export OCL_ICD_VENDORS=$OLDPWD/install/etc/OpenCL/vendors/
+
+PIGLIT_OPTIONS=$(echo $PIGLIT_OPTIONS | head -n 1)
+set +e
+unset DISPLAY
+export LD_LIBRARY_PATH=$OLDPWD/install/lib
+clinfo
+./piglit run -c -j${FDO_CI_CONCURRENT:-4} $PIGLIT_OPTIONS $PIGLIT_PROFILES $OLDPWD/results
+retVal=$?
+if [ $retVal -ne 0 ]; then
+    echo "Found $(cat /tmp/version.txt), expected $VERSION"
+fi
+set -e
+
+PIGLIT_RESULTS=${PIGLIT_RESULTS:-$PIGLIT_PROFILES}
+mkdir -p .gitlab-ci/piglit
+cp $OLDPWD/install/piglit/$PIGLIT_RESULTS.txt .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.baseline
+./piglit summary console $OLDPWD/results | head -n -1 | grep -v ": pass" >.gitlab-ci/piglit/$PIGLIT_RESULTS.txt
+
+if diff -q .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}; then
+    exit 0
+fi
+
+./piglit summary html --exclude-details=pass $OLDPWD/summary $OLDPWD/results
+
+echo Unexpected change in results:
+diff -u .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}
+exit 1