diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index 9b549598846..6eca4c58201 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -5,7 +5,7 @@ on: pull_request: branches: [ develop ] env: - cvc5-version: "1.1.2" + cvc5-version: "1.2.0" linux-vcpus: 4 windows-vcpus: 4 @@ -36,9 +36,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 diff --git a/.github/workflows/pull-request-checks.yaml b/.github/workflows/pull-request-checks.yaml index 8ab4a9e7e86..8704d6bc78f 100644 --- a/.github/workflows/pull-request-checks.yaml +++ b/.github/workflows/pull-request-checks.yaml @@ -5,7 +5,7 @@ on: pull_request: branches: [ develop ] env: - cvc5-version: "1.1.2" + cvc5-version: "1.2.0" linux-vcpus: 4 windows-vcpus: 4 @@ -29,9 +29,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -115,9 +115,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -225,9 +225,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -297,9 +297,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -363,9 +363,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -423,9 +423,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -451,6 +451,60 @@ jobs: - name: Run tests run: cd build; ctest . -V -L CORE -j${{env.linux-vcpus}} + # This job takes approximately 17 to 41 minutes + check-ubuntu-24_04-arm-cmake-gcc: + runs-on: ubuntu-24.04-arm + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Fetch dependencies + env: + # This is needed in addition to -yq to prevent apt-get from asking for + # user input + DEBIAN_FRONTEND: noninteractive + run: | + sudo apt-get update + sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc gdb g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen graphviz z3 + - name: Confirm z3 solver is available and log the version installed + run: z3 --version + - name: Download cvc-5 from the releases page and make sure it can be deployed + run: | + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-arm64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-arm64-static.zip cvc5-Linux-arm64-static/bin/cvc5 + rm cvc5-Linux-arm64-static.zip + cvc5 --version + - name: Prepare ccache + uses: actions/cache@v4 + with: + save-always: true + path: .ccache + key: ${{ runner.os }}-24.04-Arm-Release-${{ github.ref }}-${{ github.sha }}-PR + restore-keys: | + ${{ runner.os }}-24.04-Arm-Release-${{ github.ref }} + ${{ runner.os }}-24.04-Arm-Release + - name: ccache environment + run: | + echo "CCACHE_BASEDIR=$PWD" >> $GITHUB_ENV + echo "CCACHE_DIR=$PWD/.ccache" >> $GITHUB_ENV + - name: Configure using CMake + run: cmake -S . -Bbuild -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -Dsat_impl="minisat2;cadical" + - name: Check that doc task works + run: ninja -C build doc + - name: Zero ccache stats and limit in size + run: ccache -z --max-size=500M + - name: Build with Ninja + run: ninja -C build -j${{env.linux-vcpus}} + - name: Print ccache stats + run: ccache -s + - name: Check if package building works + run: | + cd build + ninja package + ls *.deb + - name: Run tests + run: cd build; ctest . -V -L CORE -j${{env.linux-vcpus}} + # This job takes approximately 14 to 60 minutes check-ubuntu-22_04-cmake-gcc-32bit: runs-on: ubuntu-22.04 @@ -470,9 +524,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -600,9 +654,9 @@ jobs: run: z3 --version - name: Download cvc5 binary and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-macOS-static.zip - unzip -j -d /usr/local/bin cvc5-macOS-static.zip cvc5-macOS-static/bin/cvc5 - rm cvc5-macOS-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-macOS-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-macOS-x86_64-static.zip cvc5-macOS-x86_64-static/bin/cvc5 + rm cvc5-macOS-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -652,9 +706,9 @@ jobs: run: z3 --version - name: Download cvc5 binary and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-macOS-static.zip - unzip -j -d /usr/local/bin cvc5-macOS-static.zip cvc5-macOS-static/bin/cvc5 - rm cvc5-macOS-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-macOS-arm64-static.zip + unzip -j -d /usr/local/bin cvc5-macOS-arm64-static.zip cvc5-macOS-arm64-static/bin/cvc5 + rm cvc5-macOS-arm64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -708,9 +762,9 @@ jobs: Expand-Archive -LiteralPath '.\z3.Zip' -DestinationPath C:\tools echo "c:\tools\z3-4.8.10-x64-win\bin;" >> $env:GITHUB_PATH New-Item -ItemType directory "C:\tools\cvc5" - Invoke-WebRequest -Uri https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Win64-static.zip -OutFile .\cvc5-Win64-static.zip - Expand-Archive -LiteralPath '.\cvc5-Win64-static.Zip' - Move-Item -Path .\cvc5-Win64-static\cvc5-Win64-static\bin\cvc5.exe c:\tools\cvc5\cvc5.exe + Invoke-WebRequest -Uri https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Win64-x86_64-static.zip -OutFile .\cvc5-Win64-x86_64-static.zip + Expand-Archive -LiteralPath '.\cvc5-Win64-x86_64-static.Zip' + Move-Item -Path .\cvc5-Win64-x86_64-static\cvc5-Win64-x86_64-static\bin\cvc5.exe c:\tools\cvc5\cvc5.exe echo "c:\tools\cvc5;" >> $env:GITHUB_PATH - name: Confirm z3 solver is available and log the version installed run: z3 --version @@ -771,9 +825,9 @@ jobs: Expand-Archive -LiteralPath '.\z3.Zip' -DestinationPath C:\tools echo "c:\tools\z3-4.8.10-x64-win\bin;" >> $env:GITHUB_PATH New-Item -ItemType directory "C:\tools\cvc5" - Invoke-WebRequest -Uri https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Win64-static.zip -OutFile .\cvc5-Win64-static.zip - Expand-Archive -LiteralPath '.\cvc5-Win64-static.Zip' - Move-Item -Path .\cvc5-Win64-static\cvc5-Win64-static\bin\cvc5.exe c:\tools\cvc5\cvc5.exe + Invoke-WebRequest -Uri https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Win64-x86_64-static.zip -OutFile .\cvc5-Win64-x86_64-static.zip + Expand-Archive -LiteralPath '.\cvc5-Win64-x86_64-static.Zip' + Move-Item -Path .\cvc5-Win64-x86_64-static\cvc5-Win64-x86_64-static\bin\cvc5.exe c:\tools\cvc5\cvc5.exe echo "c:\tools\cvc5;" >> $env:GITHUB_PATH New-Item -ItemType directory "C:\tools\parallel" wget.exe -O c:\tools\parallel\parallel https://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel diff --git a/.github/workflows/release-packages.yaml b/.github/workflows/release-packages.yaml index 0e7fab7e1b3..e9687f766b1 100644 --- a/.github/workflows/release-packages.yaml +++ b/.github/workflows/release-packages.yaml @@ -2,7 +2,7 @@ on: release: types: [created] env: - cvc5-version: "1.1.2" + cvc5-version: "1.2.0" name: Upload additional release assets jobs: @@ -22,9 +22,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -77,6 +77,77 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_MESSAGE: "${{ job.status == 'success' && 'Ubuntu 24.04 package built and uploaded successfully' || 'Ubuntu 24.04 package build failed' }}" + ubuntu-24_04-arm-package: + runs-on: ubuntu-24.04-arm + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Fetch dependencies + run: | + sudo apt-get update + sudo apt-get install --no-install-recommends -y g++ gdb flex bison cmake ninja-build maven jq libxml2-utils dpkg-dev ccache z3 + - name: Confirm z3 solver is available and log the version installed + run: z3 --version + - name: Download cvc-5 from the releases page and make sure it can be deployed + run: | + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-arm64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-arm64-static.zip cvc5-Linux-arm64-static/bin/cvc5 + rm cvc5-Linux-arm64-static.zip + cvc5 --version + - name: Prepare ccache + uses: actions/cache@v4 + with: + save-always: true + path: .ccache + key: ${{ runner.os }}-24.04-Arm-Release-${{ github.ref }}-${{ github.sha }}-RELEASEPKG + restore-keys: + ${{ runner.os }}-24.04-Arm-Release-${{ github.ref }} + ${{ runner.os }}-24.04-Arm-Release + - name: ccache environment + run: | + echo "CCACHE_BASEDIR=$PWD" >> $GITHUB_ENV + echo "CCACHE_DIR=$PWD/.ccache" >> $GITHUB_ENV + - name: Configure CMake + run: cmake -S . -Bbuild -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -Dsat_impl="minisat2;cadical" + - name: Zero ccache stats and limit in size + run: ccache -z --max-size=500M + - name: Build using Ninja + run: ninja -C build -j4 + - name: Print ccache stats + run: ccache -s + - name: Run CTest + run: cd build; ctest . -V -L CORE -C Release -j4 + - name: Create packages + id: create_packages + run: | + cd build + ninja package + deb_package_name="$(ls *.deb)" + echo "deb_package=./build/$deb_package_name" >> $GITHUB_OUTPUT + echo "deb_package_name=ubuntu-24.04-arm64-$deb_package_name" >> $GITHUB_OUTPUT + - name: Get release info + id: get_release_info + uses: bruceadams/get-release@v1.3.2 + - name: Upload binary packages + uses: actions/upload-release-asset@v1 + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ steps.create_packages.outputs.deb_package }} + asset_name: ${{ steps.create_packages.outputs.deb_package_name }} + asset_content_type: application/x-deb + - name: Slack notification of CI status + uses: rtCamp/action-slack-notify@v2 + if: success() || failure() + env: + SLACK_CHANNEL: aws-cbmc + SLACK_COLOR: ${{ job.status }} + SLACK_USERNAME: Github Actions CI bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + SLACK_MESSAGE: "${{ job.status == 'success' && 'Ubuntu 24.04 Arm package built and uploaded successfully' || 'Ubuntu 24.04 Arm package build failed' }}" + ubuntu-22_04-package: runs-on: ubuntu-22.04 env: @@ -93,9 +164,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 @@ -164,9 +235,9 @@ jobs: run: z3 --version - name: Download cvc-5 from the releases page and make sure it can be deployed run: | - wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-static.zip - unzip -j -d /usr/local/bin cvc5-Linux-static.zip cvc5-Linux-static/bin/cvc5 - rm cvc5-Linux-static.zip + wget https://github.com/cvc5/cvc5/releases/download/cvc5-${{env.cvc5-version}}/cvc5-Linux-x86_64-static.zip + unzip -j -d /usr/local/bin cvc5-Linux-x86_64-static.zip cvc5-Linux-x86_64-static/bin/cvc5 + rm cvc5-Linux-x86_64-static.zip cvc5 --version - name: Prepare ccache uses: actions/cache@v4 diff --git a/regression/cbmc-concurrency/memory_barrier2/msvc.desc b/regression/cbmc-concurrency/memory_barrier2/msvc.desc index 9327f8de9a5..91f366f8aeb 100644 --- a/regression/cbmc-concurrency/memory_barrier2/msvc.desc +++ b/regression/cbmc-concurrency/memory_barrier2/msvc.desc @@ -1,5 +1,5 @@ CORE -msvc.c +msvc.i --mm tso --winx64 ^EXIT=0$ ^SIGNAL=0$ diff --git a/regression/cbmc-concurrency/memory_barrier2/msvc.c b/regression/cbmc-concurrency/memory_barrier2/msvc.i similarity index 100% rename from regression/cbmc-concurrency/memory_barrier2/msvc.c rename to regression/cbmc-concurrency/memory_barrier2/msvc.i diff --git a/regression/cbmc-library/__asm_fstcw-01/msvc.desc b/regression/cbmc-library/__asm_fstcw-01/msvc.desc index 0275139a2df..780e6502916 100644 --- a/regression/cbmc-library/__asm_fstcw-01/msvc.desc +++ b/regression/cbmc-library/__asm_fstcw-01/msvc.desc @@ -1,5 +1,5 @@ CORE -msvc.c +msvc.i --pointer-check --bounds-check --winx64 ^EXIT=0$ ^SIGNAL=0$ diff --git a/regression/cbmc-library/__asm_fstcw-01/msvc.c b/regression/cbmc-library/__asm_fstcw-01/msvc.i similarity index 100% rename from regression/cbmc-library/__asm_fstcw-01/msvc.c rename to regression/cbmc-library/__asm_fstcw-01/msvc.i diff --git a/regression/cbmc/Quantifiers-type2/main.c b/regression/cbmc/Quantifiers-type2/main.c index 73bd1913906..505568cc0af 100644 --- a/regression/cbmc/Quantifiers-type2/main.c +++ b/regression/cbmc/Quantifiers-type2/main.c @@ -5,7 +5,7 @@ int main() // clang-format off // clang-format would rewrite the "==>" as "== >" - __CPROVER_assume( __CPROVER_forall { char i; (i>=0 && i<2) ==> b[i]>=10 && b[i]<=10 } ); + __CPROVER_assume( __CPROVER_forall { signed char i; (i>=0 && i<2) ==> b[i]>=10 && b[i]<=10 } ); __CPROVER_assume( __CPROVER_forall { unsigned i; (i>=0 && i<2) ==> c[i]>=10 && c[i]<=10 } ); // clang-format on @@ -14,3 +14,29 @@ int main() return 0; } + +#if 0 +We should really teach the simplifier to process + + 0: >= + * type: bool + 0: typecast + * type: signedbv + * width: 32 + 0: zero_extend + * type: unsignedbv + * width: 32 + 0: symbol + * type: unsignedbv + * width: 8 + * identifier: main::1::1::i!0@2#0 + * #quoted: 1 + 1: typecast + * type: signedbv + * width: 32 + 0: constant + * type: unsignedbv + * width: 32 + * value: 0 + +#endif diff --git a/src/ansi-c/compiler_headers/gcc_builtin_headers_types.h b/src/ansi-c/compiler_headers/gcc_builtin_headers_types.h index 8920a952f1d..348c245891c 100644 --- a/src/ansi-c/compiler_headers/gcc_builtin_headers_types.h +++ b/src/ansi-c/compiler_headers/gcc_builtin_headers_types.h @@ -45,4 +45,13 @@ enum __gcc_atomic_memmodels { }; typedef unsigned char __tile __attribute__ ((__vector_size__ (1024))); + +// GCC and Clang use the following on ARM: +typedef float __Float32x4_t __attribute__ ((__vector_size__ (16))); +typedef double __Float64x2_t __attribute__ ((__vector_size__ (16))); +// The following ARM (scalable vector) extensions define vectors the size of +// which is not known at compile time. +typedef float *__SVFloat32_t; +typedef double *__SVFloat64_t; +typedef __CPROVER_bool *__SVBool_t; // clang-format on