From 9abd6dd577d96df96a95f97936caabff8f37c84b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Sat, 2 Dec 2023 06:46:08 +0100 Subject: [PATCH] Build zerolibnative.obj for x86 Windows --- .github/workflows/bflat-cicd.yml | 33 +++++++++- bldx86.cmd | 8 +++ .../nativeaot/zerolib.native/x86/stubs.asm | 61 +++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 bldx86.cmd create mode 100644 src/coreclr/nativeaot/zerolib.native/x86/stubs.asm diff --git a/.github/workflows/bflat-cicd.yml b/.github/workflows/bflat-cicd.yml index fc8a6a2596a..374832b7846 100644 --- a/.github/workflows/bflat-cicd.yml +++ b/.github/workflows/bflat-cicd.yml @@ -161,9 +161,30 @@ jobs: shell: cmd run: src\tests\run.cmd runnativeaottests release ${{ matrix.arch }} if: ${{ matrix.vm == 'windows-latest' && github.event.inputs.version == '' && matrix.arch != 'arm64' }} + + build_x86_windows: + runs-on: windows-latest + name: Build and test windows x86 + steps: + - uses: actions/checkout@v3 + - name: Build the product (Windows) + shell: cmd + run: bldx86.cmd + - name: ZIP libs (Windows) + run: | + mkdir artifacts\bflat-libs + copy artifacts\bin\coreclr\Windows.x86.Release\aotsdk\* artifacts\bflat-libs\ + pushd artifacts\bflat-libs\ + Compress-Archive * $Env:GITHUB_WORKSPACE\artifacts\bflat-libs-windows-x86.zip + popd + - name: Archive libs + uses: actions/upload-artifact@v2 + with: + name: libs + path: artifacts/bflat-libs-windows-x86.zip publish: - needs: build_and_test + needs: [ build_and_test, build_x86_windows ] runs-on: ubuntu-latest name: Publish release and NuGet if: ${{ github.event.inputs.version != '' && github.actor == 'MichalStrehovsky' }} @@ -203,6 +224,16 @@ jobs: asset_name: bflat-refs.zip asset_content_type: application/zip + - name: Upload libs (windows-x86) + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: libs/bflat-libs-windows-x86.zip + asset_name: bflat-libs-windows-x86.zip + asset_content_type: application/zip + - name: Upload native compiler (windows-x64) uses: actions/upload-release-asset@v1 env: diff --git a/bldx86.cmd b/bldx86.cmd new file mode 100644 index 00000000000..ee90248d8c7 --- /dev/null +++ b/bldx86.cmd @@ -0,0 +1,8 @@ +@echo off + +for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -find vc\Auxiliary\Build\vcvarsall.bat`) do ( + "%%i" amd64_x86 + mkdir artifacts\bin\coreclr\windows.x86.Release\aotsdk + ml /c /Foartifacts\bin\coreclr\windows.x86.Release\aotsdk\zerolibnative.obj /Zi src\coreclr\nativeaot\zerolib.native\x86\stubs.asm + exit /b !errorlevel! +) \ No newline at end of file diff --git a/src/coreclr/nativeaot/zerolib.native/x86/stubs.asm b/src/coreclr/nativeaot/zerolib.native/x86/stubs.asm new file mode 100644 index 00000000000..6d9e94766e1 --- /dev/null +++ b/src/coreclr/nativeaot/zerolib.native/x86/stubs.asm @@ -0,0 +1,61 @@ +.586 +.xmm +.model flat + +ALTERNATE_ENTRY macro Name + +Name label proc +PUBLIC Name +endm + +.code + +PUBLIC RhpByRefAssignRef +RhpByRefAssignRef PROC + movs dword ptr es:[edi],dword ptr [esi] + ret +RhpByRefAssignRef ENDP + +PUBLIC RhpCheckedAssignRefEAX +ALTERNATE_ENTRY RhpAssignRefEAX +RhpCheckedAssignRefEAX PROC + mov DWORD PTR [edx], eax + ret +RhpCheckedAssignRefEAX ENDP + +PUBLIC RhpCheckedAssignRefEBX +ALTERNATE_ENTRY RhpAssignRefEBX +RhpCheckedAssignRefEBX PROC + mov DWORD PTR [edx], ebx + ret +RhpCheckedAssignRefEBX ENDP + +PUBLIC RhpCheckedAssignRefECX +ALTERNATE_ENTRY RhpAssignRefECX +RhpCheckedAssignRefECX PROC + mov DWORD PTR [edx], ecx + ret +RhpCheckedAssignRefECX ENDP + +PUBLIC RhpCheckedAssignRefESI +ALTERNATE_ENTRY RhpAssignRefESI +RhpCheckedAssignRefESI PROC + mov DWORD PTR [edx], esi + ret +RhpCheckedAssignRefESI ENDP + +PUBLIC RhpCheckedAssignRefEDI +ALTERNATE_ENTRY RhpAssignRefEDI +RhpCheckedAssignRefEDI PROC + mov DWORD PTR [edx], edi + ret +RhpCheckedAssignRefEDI ENDP + +PUBLIC RhpCheckedAssignRefEBP +ALTERNATE_ENTRY RhpAssignRefEBP +RhpCheckedAssignRefEBP PROC + mov DWORD PTR [edx], ebp + ret +RhpCheckedAssignRefEBP ENDP + +end