Skip to content

Commit

Permalink
Merge branch 'master' of jsoftware.com:jsource
Browse files Browse the repository at this point in the history
  • Loading branch information
HenryHRich committed Oct 27, 2024
2 parents 4bff202 + 5f54e13 commit 7d7db01
Show file tree
Hide file tree
Showing 13 changed files with 303 additions and 97 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/jsource.yml
Original file line number Diff line number Diff line change
Expand Up @@ -926,6 +926,50 @@ jobs:
path: testwin32.txt
overwrite: true

# windows --------------------------------------------------------------
jewinarm64:
name: JE (Windows arm64)
if: ${{ false }}
runs-on: windows-2022
steps:
- name: Checkout Git repository
uses: actions/checkout@v4

- name: Setup Environment (Windows arm64)
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_arm64

- name: Build JE (Windows arm64)
shell: cmd
run: |
script\buildga.cmd arm64
- name: Test JE (Windows arm64)
shell: cmd
run: |
script\testga.cmd arm64
- name: Compress Files (Windows arm64)
shell: pwsh
run: Compress-Archive jarm64 warm64.zip

- name: Release JE (Windows arm64)
uses: ncipollo/release-action@v1
with:
tag: build
artifacts: "warm64.zip"
token: ${{ secrets.GITHUB_TOKEN }}
allowUpdates: true
replacesArtifacts: true

- name: Copy Test (Windows arm64)
uses: actions/upload-artifact@v4
with:
name: dist
path: testwinarm64.txt
overwrite: true

# get tests ------------------------------------------------------------
tests:
name: Test Results
Expand Down
2 changes: 1 addition & 1 deletion jsrc/sse2neon.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ FORCE_INLINE int64_t sse2neon_recast_f64_s64(double f64)
#include <windows.h>
#endif

#if !defined(__cplusplus)
#if !defined(__cplusplus) && (!defined(__clang__))
#error SSE2NEON only supports C++ compilation with this compiler
#endif

Expand Down
52 changes: 37 additions & 15 deletions makemsvc/jamalgam/makefile
Original file line number Diff line number Diff line change
@@ -1,43 +1,47 @@
ifeq (1,$(JAVX512))
FAVX512= /DC_AVX2=1 /DC_AVX512=1 -DHAVE_AVX2=1 -DBASE64_AVX2_USE_ASM=1 -march=skylake-avx512 -mno-vzeroupper
else
ifeq (1,$(JAVX2))
else ifeq (1,$(JAVX2))
FAVX2= /DC_AVX2=1 -DHAVE_AVX2=1 -DBASE64_AVX2_USE_ASM=1 -march=haswell -mno-vzeroupper
endif
endif
ifeq (1,$(USE_OPENMP))
FOPENMP= -Xclang -fopenmp
ifeq (1,$(x64))
ifeq (1,$(JARM64))
OBJS_OPENMP=../../openmp/obj/windows/libomparm64.lib
else ifeq (1,$(x64))
OBJS_OPENMP=../../openmp/obj/windows/libomp.lib
else
OBJS_OPENMP=../../openmp/obj/windows/libomp32.lib
endif
endif
USE_SLEEF=1
ifeq (1,$(x64))
ifeq (1,$(JARM64))
FSLEEF= /DSLEEF=1 /DENABLE_ADVSIMD /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
else ifeq (1,$(x64))
ifeq (1,$(JAVX512))
FSLEEF= /DSLEEF=1 /DENABLE_AVX2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
else
ifeq (1,$(JAVX2))
else ifeq (1,$(JAVX2))
FSLEEF= /DSLEEF=1 /DENABLE_AVX2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
else
FSLEEF= /DSLEEF=1 /DENABLE_SSE2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
endif
endif
else
FSLEEF= /DSLEEF=1 /DENABLE_SSE2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
endif
ifeq (1,$(USE_PYXES))
PTHREADINC = -I../../pthreads4w/include -DPYXES=1
ifeq (1,$(x64))
ifeq (1,$(JARM64))
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3-arm64.lib
else ifeq (1,$(x64))
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3.lib
else
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3-w32.lib
endif
endif
MPIRINC = -I../../mpir/include

ifeq (1,$(x64))
ifeq (1,$(JARM64))
# MPIRLIB = ../../mpir/dll/arm64/mpir.lib
else ifeq (1,$(x64))
# MPIRLIB = ../../mpir/dll/x64/mpir.lib
else
# MPIRLIB = ../../mpir/dll/win32/mpir.lib
Expand All @@ -54,7 +58,12 @@ ifeq (1,$(USE_BOXEDSPARSE))
FBOXEDSPARSE = /DBOXEDSPARSE
endif

ifeq (1,$(x64))
ifeq (1,$(JARM64))
CF1= -fno-strict-aliasing -Wno-unknown-warning-option -Wsign-compare -Wno-int-conversion -Wno-incompatible-function-pointer-types -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-null-pointer-arithmetic -Wno-char-subscripts -Wno-pointer-to-int-cast -Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor -Wno-deprecated-non-prototype
CFLAGS= $(FDEBUG) -target arm64-pc-windows-msvc /D JAMALGAM /DC_NA=0 /DEMU_AVX2=1 $(FAVX2) $(FAVX512) $(FOPENMP) $(FSLEEF) $(FNOSYNCHLIB) $(FBOXEDSPARSE) $(PTHREADINC) $(MPIRINC) /WX /W3 /O2 /GS- /Zc:strictStrings /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /NOLOGO /STACK:0xc00000 /MACHINE:ARM64 /SUBSYSTEM:CONSOLE,5.02
ASMFLAGS= /Cx
else ifeq (1,$(x64))
CF1= -maes -msse3 -fno-strict-aliasing -Wno-unknown-warning-option -Wsign-compare -Wno-int-conversion -Wno-incompatible-function-pointer-types -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-null-pointer-arithmetic -Wno-char-subscripts -Wno-pointer-to-int-cast -Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor -Wno-deprecated-non-prototype
CFLAGS= $(FDEBUG) /D JAMALGAM /DC_NA=0 /DEMU_AVX2=1 $(FAVX2) $(FAVX512) $(FOPENMP) $(FSLEEF) $(FNOSYNCHLIB) $(FBOXEDSPARSE) $(PTHREADINC) $(MPIRINC) /WX /W3 /O2 /GS- /Zc:strictStrings /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /NOLOGO /STACK:0xc00000 /MACHINE:X64 /SUBSYSTEM:CONSOLE,5.02
Expand Down Expand Up @@ -251,8 +260,14 @@ OBJS= \

ifdef NO_SHA_ASM
CFLAGS1= /DNO_SHA_ASM
else
ifeq (1,$(x64))
else ifeq (1,$(JARM64))
OBJS_ASM= \
../../openssl-asm/md5-aarch64-nasm.o \
../../openssl-asm/keccak1600-armv8-nasm.o \
../../openssl-asm/sha1-armv8-nasm.o \
../../openssl-asm/sha256-armv8-nasm.o \
../../openssl-asm/sha512-armv8-nasm.o "
else ifeq (1,$(x64))
OBJS_ASM= \
../../openssl-asm/md5-x86_64-nasm.o \
../../openssl-asm/keccak1600-x86_64-nasm.o \
Expand All @@ -267,7 +282,6 @@ OBJS_ASM= \
../../openssl-asm/sha256-586-nasm.o \
../../openssl-asm/sha512-586-nasm.o
endif
endif

ifeq (1,$(USE_SLEEF))
OBJS_SLEEF= \
Expand All @@ -279,6 +293,12 @@ OBJS_SLEEF= \
../../sleef/src/quad/sleefsimdqp.o
endif

ifeq (1,$(JAVX512))
OBJS_SIMDUTF8= \
../../jsrc/utf/utf8_to_utf16le_avx512.o \
../../jsrc/utf/utf16le_to_utf8_avx512.o
endif

ifdef READLINE
OBJSLN= ../../jsrc/linenoise.o
CFLAGSLN= -DREADLINE -DUSE_LINENOISE
Expand All @@ -300,7 +320,9 @@ endif
%.o: %.asm
$(ML) $(ASMFLAGS) /Fo$@ /c $<

ifeq (1,$(x64))
ifeq (1,$(JARM64))
TARGET= jamalgam-arm64.exe
else ifeq (1,$(x64))
ifeq (1,$(JAVX2))
TARGET= jamalgam-avx2.exe
else
Expand Down
52 changes: 37 additions & 15 deletions makemsvc/jamalgam/makefile.win
Original file line number Diff line number Diff line change
@@ -1,43 +1,47 @@
!if "1"=="$(JAVX512)"
FAVX512= /DC_AVX2=1 /DC_AVX512=1 -DHAVE_AVX2=1 -DBASE64_AVX2_USE_ASM=1 -march=skylake-avx512 -mno-vzeroupper
!else
!if "1"=="$(JAVX2)"
!elseif "1"=="$(JAVX2)"
FAVX2= /DC_AVX2=1 -DHAVE_AVX2=1 -DBASE64_AVX2_USE_ASM=1 -march=haswell -mno-vzeroupper
!endif
!endif
!if "1"=="$(USE_OPENMP)"
FOPENMP= -Xclang -fopenmp
!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
OBJS_OPENMP=../../openmp/obj/windows/libomparm64.lib
!elseif "1"=="$(x64)"
OBJS_OPENMP=../../openmp/obj/windows/libomp.lib
!else
OBJS_OPENMP=../../openmp/obj/windows/libomp32.lib
!endif
!endif
USE_SLEEF=1
!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
FSLEEF= /DSLEEF=1 /DENABLE_ADVSIMD /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
!elseif "1"=="$(x64)"
!if "1"=="$(JAVX512)"
FSLEEF= /DSLEEF=1 /DENABLE_AVX2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
!else
!if "1"=="$(JAVX2)"
!elseif "1"=="$(JAVX2)"
FSLEEF= /DSLEEF=1 /DENABLE_AVX2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
!else
FSLEEF= /DSLEEF=1 /DENABLE_SSE2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
!endif
!endif
!else
FSLEEF= /DSLEEF=1 /DENABLE_SSE2 /DSLEEF_STATIC_LIBS /DDORENAME=1 -I../../sleef/src/common -I../../sleef/src/arch
!endif
!if "1"=="$(USE_PYXES)"
PTHREADINC = -I../../pthreads4w/include -DPYXES=1
!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3-arm64.lib
!elseif "1"=="$(x64)"
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3.lib
!else
PTHREADLIB = ../../pthreads4w/lib/pthreadVC3-w32.lib
!endif
!endif
MPIRINC = -I../../mpir/include

!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
# MPIRLIB = ../../mpir/dll/arm64/mpir.lib
!elseif "1"=="$(x64)"
# MPIRLIB = ../../mpir/dll/x64/mpir.lib
!else
# MPIRLIB = ../../mpir/dll/win32/mpir.lib
Expand All @@ -54,7 +58,12 @@ LDEBUG = /DEBUG
FBOXEDSPARSE = /DBOXEDSPARSE
!endif

!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
CF1= -fno-strict-aliasing -Wno-unknown-warning-option -Wsign-compare -Wno-int-conversion -Wno-incompatible-function-pointer-types -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-null-pointer-arithmetic -Wno-char-subscripts -Wno-pointer-to-int-cast -Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor -Wno-deprecated-non-prototype
CFLAGS= $(FDEBUG) -target arm64-pc-windows-msvc /D JAMALGAM /DC_NA=0 /DEMU_AVX2=1 $(FAVX2) $(FAVX512) $(FOPENMP) $(FSLEEF) $(FNOSYNCHLIB) $(FBOXEDSPARSE) $(PTHREADINC) $(MPIRINC) /WX /W3 /O2 /GS- /Zc:strictStrings /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /NOLOGO /STACK:0xc00000 /MACHINE:ARM64 /SUBSYSTEM:CONSOLE,5.02
ASMFLAGS= /Cx
!elseif "1"=="$(x64)"
CF1= -maes -msse3 -fno-strict-aliasing -Wno-unknown-warning-option -Wsign-compare -Wno-int-conversion -Wno-incompatible-function-pointer-types -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-null-pointer-arithmetic -Wno-char-subscripts -Wno-pointer-to-int-cast -Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor -Wno-deprecated-non-prototype
CFLAGS= $(FDEBUG) /D JAMALGAM /DC_NA=0 /DEMU_AVX2=1 $(FAVX2) $(FAVX512) $(FOPENMP) $(FSLEEF) $(FNOSYNCHLIB) $(FBOXEDSPARSE) $(PTHREADINC) $(MPIRINC) /WX /W3 /O2 /GS- /Zc:strictStrings /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /NOLOGO /STACK:0xc00000 /MACHINE:X64 /SUBSYSTEM:CONSOLE,5.02
Expand Down Expand Up @@ -252,8 +261,14 @@ OBJS= \

!ifdef NO_SHA_ASM
CFLAGS1= /D NO_SHA_ASM
!else
!if "1"=="$(x64)"
!elseif "1"=="$(JARM64)"
OBJS_ASM= \
../../openssl-asm/md5-aarch64-nasm.o \
../../openssl-asm/keccak1600-armv8-nasm.o \
../../openssl-asm/sha1-armv8-nasm.o \
../../openssl-asm/sha256-armv8-nasm.o \
../../openssl-asm/sha512-armv8-nasm.o "
!elseif "1"=="$(x64)"
OBJS_ASM= \
../../openssl-asm/md5-x86_64-nasm.o \
../../openssl-asm/keccak1600-x86_64-nasm.o \
Expand All @@ -268,7 +283,6 @@ OBJS_ASM= \
../../openssl-asm/sha256-586-nasm.o \
../../openssl-asm/sha512-586-nasm.o
!endif
!endif

!if "1"=="$(USE_SLEEF)"
OBJS_SLEEF= \
Expand All @@ -280,6 +294,12 @@ OBJS_SLEEF= \
../../sleef/src/quad/sleefsimdqp.o
!endif

!if "1"=="$(JAVX512)"
OBJS_SIMDUTF8= \
../../jsrc/utf/utf8_to_utf16le_avx512.o \
../../jsrc/utf/utf16le_to_utf8_avx512.o
!endif

!ifdef READLINE
OBJSLN= ../../jsrc/linenoise.o
CFLAGSLN= -DREADLINE -DUSE_LINENOISE
Expand All @@ -301,7 +321,9 @@ LD=link
.asm.o:
$(ML) $(ASMFLAGS) /Fo$@ /c $<

!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
TARGET= jamalgam-arm64.exe
!elseif "1"=="$(x64)"
!if "1"=="$(JAVX2)"
TARGET= jamalgam-avx2.exe
!else
Expand Down
10 changes: 8 additions & 2 deletions makemsvc/jconsole/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ FDEBUG = /FS /Zi /DDEBUG=1
LDEBUG = /DEBUG
endif

ifeq (1,$(x64))
ifeq (1,$(JARM64))
CF1= -fno-strict-aliasing -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-char-subscripts -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor
CFLAGS= $(PTHREADINC) $(MPIRINC) $(FDEBUG) -target arm64-pc-windows-msvc /DEMU_AVX2=1 /WX /W3 /O2 /GS /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /STACK:0xc00000 /MACHINE:ARM64 /SUBSYSTEM:CONSOLE,5.02
else ifeq (1,$(x64))
CF1= -maes -msse3 -fno-strict-aliasing -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-char-subscripts -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor
CFLAGS= $(PTHREADINC) $(MPIRINC) $(FDEBUG) /DEMU_AVX2=1 /WX /W3 /O2 /GS /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /STACK:0xc00000 /MACHINE:X64 /SUBSYSTEM:CONSOLE,5.02
Expand Down Expand Up @@ -38,7 +42,9 @@ endif
%.o: %.c
$(CC) $(CFLAGS) $(CFLAGSLN) /Fo$@ /c $<

ifeq (1,$(x64))
ifeq (1,$(JARM64))
TARGET= jconsolearm64.exe
else ifeq (1,$(x64))
TARGET= jconsole.exe
else
TARGET= jconsole32.exe
Expand Down
10 changes: 8 additions & 2 deletions makemsvc/jconsole/makefile.win
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ FDEBUG = /FS /Zi /DDEBUG=1
LDEBUG = /DEBUG
!endif

!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
CF1= -fno-strict-aliasing -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-char-subscripts -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor
CFLAGS= $(PTHREADINC) $(MPIRINC) $(FDEBUG) -target arm64-pc-windows-msvc /DEMU_AVX2=1 /WX /W3 /O2 /GS /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /STACK:0xc00000 /MACHINE:ARM64 /SUBSYSTEM:CONSOLE,5.02
!elseif "1"=="$(x64)"
CF1= -maes -msse3 -fno-strict-aliasing -Wno-parentheses -Wno-unused-variable -Wno-pointer-sign -Wno-missing-braces -Wno-missing-field-initializers -Wno-char-subscripts -Wno-unused-value -Wno-unused-function -Wno-empty-body -Wno-sometimes-uninitialized -Wno-string-plus-int -Wno-unknown-pragmas -Wno-delete-non-abstract-non-virtual-dtor
CFLAGS= $(PTHREADINC) $(MPIRINC) $(FDEBUG) /DEMU_AVX2=1 /WX /W3 /O2 /GS /D_USING_V110_SDK71_ /D_CRT_SECURE_NO_WARNINGS /MT $(CF1)
FLAGS= $(LDEBUG) /STACK:0xc00000 /MACHINE:X64 /SUBSYSTEM:CONSOLE,5.02
Expand Down Expand Up @@ -38,7 +42,9 @@ LD=lld-link
.c.o:
$(CC) $(CFLAGS) $(CFLAGSLN) /Fo$@ /c $<

!if "1"=="$(x64)"
!if "1"=="$(JARM64)"
TARGET= jconsolearm64.exe
!elseif "1"=="$(x64)"
TARGET= jconsole.exe
!else
TARGET= jconsole32.exe
Expand Down
Loading

0 comments on commit 7d7db01

Please sign in to comment.