mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 13:00:41 +02:00
The dispatcher was saving AVX state even though FEX doesn't support it currently. This is due to it checking for the config option rather than the HostFeatures option. The `EnableAVX` config option is supposed to be used to inform FEXCore if we want AVX disabled or not when the host supports the feature. In this case it is universally enabled because we haven't encountered any games that have issues with AVX state being saved with signals. (We know they exist, we just don't have configurations for them). The HostFeatures option `SupportsAVX` is the option that is supposed to be getting used for determining if the runtime AVX feature is enabled. This also had an issue though that this was **also** always enabled if running on an x86 host with AVX, or an ARM host with SVE2-256bit. It was then disabled if the config option was disabled; But, since FEX-Emu doesn't support AVX fully yet, we need to ensure this isn't yet enabled. But this only solves half the problem. In order for our CI to test AVX features before fully supporting AVX, it needs to be able to enable AVX so that the CPU state is correctly saved. So we need to change the default configuration option to be false, and have CI enable it for the tests that matter before AVX is fully implemented.
120 lines
4.1 KiB
YAML
120 lines
4.1 KiB
YAML
name: Vixl Simulator run
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
env:
|
|
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
|
BUILD_TYPE: Release
|
|
CC: clang
|
|
CXX: clang++
|
|
FEX_ENABLEAVX: 1
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.arch }}
|
|
strategy:
|
|
matrix:
|
|
# Only the x86-64 runner is fast enough to run this
|
|
arch: [[self-hosted, x64], [self-hosted, ARMv8.4]]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Set runner label
|
|
run: echo "runner_label=${{ matrix.arch[1] }}" >> $GITHUB_ENV
|
|
|
|
- name: Set rootfs paths
|
|
run: |
|
|
echo "FEX_ROOTFS_MOUNT=/mnt/AutoNFS/rootfs/" >> $GITHUB_ENV
|
|
echo "FEX_ROOTFS_PATH=$HOME/Rootfs/" >> $GITHUB_ENV
|
|
echo "FEX_ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV
|
|
echo "ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV
|
|
|
|
- name: Update RootFS cache
|
|
# Use a bash shell so we can use the same syntax for environment variable
|
|
# access regardless of the host operating system
|
|
shell: bash
|
|
run: $GITHUB_WORKSPACE/Scripts/CI_FetchRootFS.py
|
|
|
|
- name : submodule checkout
|
|
# Need to update submodules
|
|
run: |
|
|
git submodule sync --recursive
|
|
git submodule update --init --depth 1
|
|
|
|
- name: Clean Build Environment
|
|
run: rm -Rf ${{runner.workspace}}/build
|
|
|
|
- name: Create Build Environment
|
|
# Some projects don't allow in-source building, so create a separate build directory
|
|
# We'll use this as our working directory for all subsequent commands
|
|
run: cmake -E make_directory ${{runner.workspace}}/build
|
|
|
|
- name: Configure CMake
|
|
# Use a bash shell so we can use the same syntax for environment variable
|
|
# access regardless of the host operating system
|
|
shell: bash
|
|
working-directory: ${{runner.workspace}}/build
|
|
# Note the current convention is to use the -S and -B options here to specify source
|
|
# and build directories, but this is only available with CMake 3.13 and higher.
|
|
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DENABLE_VIXL_SIMULATOR=True -DENABLE_LTO=False -DENABLE_ASSERTIONS=True -DENABLE_X86_HOST_DEBUG=True
|
|
|
|
- name: Build
|
|
working-directory: ${{runner.workspace}}/build
|
|
shell: bash
|
|
# Execute the build. You can specify a specific target with "--target <NAME>"
|
|
run: cmake --build . --config $BUILD_TYPE
|
|
|
|
- name: ASM Tests
|
|
working-directory: ${{runner.workspace}}/build
|
|
shell: bash
|
|
# Execute the unit tests
|
|
run: cmake --build . --config $BUILD_TYPE --target asm_tests
|
|
|
|
- name: ASM Test Results move
|
|
if: ${{ always() }}
|
|
shell: bash
|
|
working-directory: ${{runner.workspace}}/build
|
|
run: mv ${{runner.workspace}}/build/Testing/Temporary/LastTest.log ${{runner.workspace}}/build/Testing/Temporary/LastTest_ASM.log || true
|
|
|
|
- name: IR Tests
|
|
working-directory: ${{runner.workspace}}/build
|
|
shell: bash
|
|
# Execute the unit tests
|
|
run: cmake --build . --config $BUILD_TYPE --target ir_tests
|
|
|
|
- name: IR Test Results move
|
|
if: ${{ always() }}
|
|
shell: bash
|
|
working-directory: ${{runner.workspace}}/build
|
|
run: mv ${{runner.workspace}}/build/Testing/Temporary/LastTest.log ${{runner.workspace}}/build/Testing/Temporary/LastTest_IR.log || true
|
|
|
|
- name: Truncate test results
|
|
if: ${{ always() }}
|
|
shell: bash
|
|
working-directory: ${{runner.workspace}}/build
|
|
# Cap out the log files at 20M in case something crash spins and dumps fault text
|
|
# ASM tests get quite close to 10MB
|
|
run: truncate --size=<20M ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log || true
|
|
|
|
- name: Set runner name
|
|
if: ${{ always() }}
|
|
run: echo "runner_name=$(hostname)" >> $GITHUB_ENV
|
|
|
|
- name: Upload results
|
|
if: ${{ always() }}
|
|
uses: 'actions/upload-artifact@v2'
|
|
with:
|
|
name: Results-${{ env.runner_name }}
|
|
path: ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log
|
|
retention-days: 3
|
|
|