Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package orc for openSUSE:Factory checked in at 2025-02-19 15:58:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/orc (Old) and /work/SRC/openSUSE:Factory/.orc.new.25061 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orc" Wed Feb 19 15:58:28 2025 rev:49 rq:1246681 version:0.4.41 Changes: -------- --- /work/SRC/openSUSE:Factory/orc/orc.changes 2024-09-25 21:51:25.675628626 +0200 +++ /work/SRC/openSUSE:Factory/.orc.new.25061/orc.changes 2025-02-19 15:59:12.497723599 +0100 @@ -1,0 +2,19 @@ +Tue Feb 18 11:52:33 UTC 2025 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 0.4.41: + + orccodemem: Don't modify the process umask, which caused race + conditions with other threads + + x86: various SSE and MMX fixes + + avx: Fix sqrtps encoding causing an illegal instruction crash + + Hide internal symbols from ABI and do not install internal + headers + + Rename backend to target, including `orc-backend` meson option + and `ORC_BACKEND` environment variable + + Testsuite, tools: Disambiguate OrcProgram naming conventions + + Build: Fix `_clear_cache` call for Clang and error out on + implicit function declarations + + opcodes: Use MIN instead of CLAMP for known unsigned values to + fix compiler warnings + + Spelling fix in debug log message + +------------------------------------------------------------------- Old: ---- orc-0.4.40.tar.xz New: ---- orc-0.4.41.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ orc.spec ++++++ --- /var/tmp/diff_new_pack.q6PUHu/_old 2025-02-19 15:59:13.149750791 +0100 +++ /var/tmp/diff_new_pack.q6PUHu/_new 2025-02-19 15:59:13.149750791 +0100 @@ -1,7 +1,7 @@ # # spec file for package orc # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands. # # All modifications and additions to the file contributed by third parties @@ -18,7 +18,7 @@ Name: orc -Version: 0.4.40 +Version: 0.4.41 Release: 0 Summary: The Oil Runtime Compiler License: BSD-3-Clause ++++++ orc-0.4.40.tar.xz -> orc-0.4.41.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/.gitlab-ci.yml new/orc-0.4.41/.gitlab-ci.yml --- old/orc-0.4.40/.gitlab-ci.yml 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/.gitlab-ci.yml 2025-02-17 21:02:18.000000000 +0100 @@ -54,6 +54,8 @@ when: 'always' paths: - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" alpine 3.20 ppc64le: stage: build @@ -61,7 +63,7 @@ - 'orc-alpine-ppc64' script: - apk add git build-base linux-headers meson - - meson setup $MESON_ARGS -Dorc-backend=altivec build/ + - meson setup $MESON_ARGS -Dorc-target=altivec build/ - meson compile --verbose -C build/ - meson test -C build/ - ORC_DEBUG=2 ./build/tools/orc-bugreport @@ -72,6 +74,8 @@ when: 'always' paths: - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" debian sid: extends: '.debian' @@ -82,12 +86,36 @@ image: 'debian:sid-slim' tags: - 'gstreamer-arm64-linux-docker' + variables: + DEPENDENCIES: > + pipx + build-essential + before_script: + - apt-get update + - apt-get install --yes ${DEPENDENCIES} + # Make sure meson is up to date, so we don't need to rebuild the image with each release + - export PATH="$HOME/.local/bin:$PATH" + - pipx install meson + - pipx install ninja debian bullseye arm64: extends: '.debian' image: 'debian:bullseye-slim' tags: - 'gstreamer-arm64-linux-docker' + variables: + DEPENDENCIES: > + pipx + build-essential + before_script: + # In bullseye, pipx is not available, only in the backports + - echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list + - apt-get update + - apt-get install --yes ${DEPENDENCIES} + # Make sure meson is up to date, so we don't need to rebuild the image with each release + - export PATH="$HOME/.local/bin:$PATH" + - pipx install meson + - pipx install ninja debian bookworm arm64: extends: '.debian' @@ -98,12 +126,18 @@ # https://gitlab.freedesktop.org/gstreamer/orc/-/issues/45 variables: DEPENDENCIES: > - meson - ninja-build + pipx build-essential gcc-11 CC: gcc-11 CXX: g++-11 + before_script: + - apt-get update + - apt-get install --yes ${DEPENDENCIES} + # Make sure meson is up to date, so we don't need to rebuild the image with each release + - export PATH="$HOME/.local/bin:$PATH" + - pipx install meson + - pipx install ninja .build windows: image: 'registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-04-21.0-main' @@ -112,6 +146,14 @@ - 'docker' - 'windows' - '2022' + artifacts: + name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}" + expire_in: '5 days' + when: 'always' + paths: + - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" variables: # Make sure any failure in PowerShell scripts is fatal # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6 @@ -203,6 +245,8 @@ when: 'always' paths: - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" before_script: - pip3 install --upgrade pip - export PATH=${PATH}:/Users/gst-ci/Library/Python/3.9/bin @@ -229,6 +273,8 @@ when: 'always' paths: - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" before_script: - pip3 install --upgrade pip # Need to install certificates for python @@ -255,6 +301,8 @@ when: 'always' paths: - "build/meson-logs/*txt" + - "build/*.bin" + - "build/*.S" before_script: - pip3 install --upgrade pip # Need to install certificates for python @@ -299,6 +347,8 @@ when: 'always' paths: - "build/meson-logs/*.txt" + - "build/*.bin" + - "build/*.S" variables: ANDROID_SDK: '/android/sdk' ANDROID_NDK: '/android/ndk' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/CONTRIBUTING.md new/orc-0.4.41/CONTRIBUTING.md --- old/orc-0.4.40/CONTRIBUTING.md 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/CONTRIBUTING.md 2025-02-17 21:02:18.000000000 +0100 @@ -88,7 +88,7 @@ ### Registering the target You need to call up your target registration function in `orc_init` inside the -file `orc.c`. Make sure to guard it with `#ifdef ENABLE_BACKEND_YOUR_ARCH_HERE` +file `orc.c`. Make sure to guard it with `#ifdef ENABLE_TARGET_<YOUR_ARCH_HERE>` so that it's only inserted if your new backend is being built. The target registration function must create the `OrcTarget` structure described diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/RELEASE new/orc-0.4.41/RELEASE --- old/orc-0.4.40/RELEASE 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/RELEASE 2025-02-17 21:02:18.000000000 +0100 @@ -1,3 +1,24 @@ +0.4.41 +====== + + - orccodemem: Don't modify the process umask, which caused race conditions + with other threads (L. E. Segovia) + - Require glibc >= 2.07 (L. E. Segovia) + - x86: various SSE and MMX fixes (L. E. Segovia) + - avx: Fix sqrtps encoding causing an illegal instruction crash (L. E. Segovia) + - Hide internal symbols from ABI and do not install internal headers + (L. E. Segovia) + - Rename backend to target, including orc-backend meson option and ORC_BACKEND + environment variable (Jorge Zapata) + - Testsuite, tools: Disambiguate OrcProgram naming conventions (L. E. Segovia) + - Build: Fix _clear_cache call for Clang and error out on implicit function + declarations (Sam James) + - opcodes: Use MIN instead of CLAMP for known unsigned values to fix + compiler warnings (Edward Hervey) + - Spelling fix in debug log message (Marc Leeman) + - ci improvements: Upload the generated .S and .bin and include Windows + artifacts (Jorge Zapata) + 0.4.40 ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/examples/meson.build new/orc-0.4.41/examples/meson.build --- old/orc-0.4.40/examples/meson.build 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/examples/meson.build 2025-02-17 21:02:18.000000000 +0100 @@ -24,7 +24,7 @@ endforeach - if backend == 'mmx' or backend == 'all' + if target == 'mmx' or target == 'all' executable ('volscale', 'volscale.c', install: false, dependencies: [libm, orc_dep, orc_test_dep]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/meson.build new/orc-0.4.41/meson.build --- old/orc-0.4.40/meson.build 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/meson.build 2025-02-17 21:02:18.000000000 +0100 @@ -1,5 +1,5 @@ -project ('orc', 'c', version : '0.4.40', - meson_version : '>= 0.55.0', +project ('orc', 'c', version : '0.4.41', + meson_version : '>= 0.60.0', default_options : ['buildtype=debugoptimized', 'warning_level=1'] ) @@ -21,8 +21,8 @@ # Error out if a function's missing add_project_arguments(cc.get_supported_arguments([ '-we4013', - '-Wno-implicit-int', - '-Wno-implicit-function-declaration', + '-Werror=implicit-int', + '-Werror=implicit-function-declaration', ]), language : 'c') orc_inc = include_directories('.') @@ -41,20 +41,30 @@ add_project_arguments('-fvisibility=hidden', language: 'c') endif -all_backends = ['avx', 'sse', 'mmx'] -extra_backends = ['altivec', 'neon', 'mips', 'c64x'] # 'arm' -enabled_backends = [] +all_targets = ['avx', 'sse', 'mmx'] +extra_targets = ['altivec', 'neon', 'mips', 'c64x'] # 'arm' +enabled_targets = [] host_system = host_machine.system() if host_system != 'windows' - all_backends += extra_backends + all_targets += extra_targets endif +# To be removed once the orc-target option becomes mainstream backend = get_option('orc-backend') -foreach b : all_backends - if backend == 'all' or backend == b - cdata.set('ENABLE_BACKEND_' + b.to_upper(), 1) - enabled_backends += [b] +if backend != 'all' + warning('Setting old orc-backend option, please update your tools to use orc-target instead') +endif + +target = get_option('orc-target') +if target == 'all' and backend != 'all' + target = backend +endif + +foreach b : all_targets + if target == 'all' or target == b + cdata.set('ENABLE_TARGET_' + b.to_upper(), 1) + enabled_targets += [b] endif endforeach @@ -82,6 +92,19 @@ libm = cc.find_library('m', required : false) +# glibc <= 2.06 has mkstemp(2) with permissions 0666 +glibc_needs_posix = '''#ifdef __GLIBC__ +#include <features.h> +#if !__GLIBC_PREREQ(2, 7) + #error Too old glibc +#endif +#endif +int main () { return 0; } +''' +if not cc.compiles(glibc_needs_posix, name: 'Has glibc >= 2.07 (or no glibc at all)') + error('This requires glibc >= 2.07 to avoid a mkstemp(2) permissions bug, aborting') +endif + librt = [] if cc.has_function('clock_gettime') cdata.set('HAVE_CLOCK_GETTIME', true) @@ -227,14 +250,14 @@ # summary summary({ - 'AVX': 'avx' in enabled_backends, - 'SSE': 'sse' in enabled_backends, - 'MMX': 'mmx' in enabled_backends, - 'NEON': 'neon' in enabled_backends, - 'MIPS': 'mips' in enabled_backends, - 'c64x': 'c64x' in enabled_backends, - 'Altivec': 'altivec' in enabled_backends, - }, section: 'Backends', bool_yn: true) + 'AVX': 'avx' in enabled_targets, + 'SSE': 'sse' in enabled_targets, + 'MMX': 'mmx' in enabled_targets, + 'NEON': 'neon' in enabled_targets, + 'MIPS': 'mips' in enabled_targets, + 'c64x': 'c64x' in enabled_targets, + 'Altivec': 'altivec' in enabled_targets, + }, section: 'Targets', bool_yn: true) if not have_docs doc_summary = [have_docs, gtk_doc_disabled_reason] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/meson_options.txt new/orc-0.4.41/meson_options.txt --- old/orc-0.4.40/meson_options.txt 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/meson_options.txt 2025-02-17 21:02:18.000000000 +0100 @@ -1,4 +1,5 @@ -option('orc-backend', type : 'combo', choices : ['avx', 'sse', 'mmx', 'neon', 'mips', 'altivec', 'c64x', 'all'], value : 'all') +option('orc-target', type : 'combo', choices : ['avx', 'sse', 'mmx', 'neon', 'mips', 'altivec', 'c64x', 'all'], value : 'all') +option('orc-backend', type : 'combo', choices : ['avx', 'sse', 'mmx', 'neon', 'mips', 'altivec', 'c64x', 'all'], value : 'all', deprecated: true) # Orc feature options option('orc-test', type : 'feature', value : 'auto', description : 'Build the orc-test library used for unit testing and by the orc-bugreport tool') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/meson.build new/orc-0.4.41/orc/meson.build --- old/orc-0.4.40/orc/meson.build 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/meson.build 2025-02-17 21:02:18.000000000 +0100 @@ -31,11 +31,9 @@ 'orcconstant.h', 'orccpu.h', 'orcdebug.h', - 'orcemulateopcodes.h', # FIXME: this probably shouldn't be installed, symbols are not exported or useful 'orcexecutor.h', 'orcfunctions.h', 'orcinstruction.h', - 'orcinternal.h', # FIXME: this probably shouldn't be installed, symbols are not exported or useful 'orclimits.h', 'orcmmx.h', 'orcneon.h', @@ -56,42 +54,42 @@ ] install_headers(orc_headers, subdir : 'orc-' + orc_api + '/orc') -if 'avx' in enabled_backends or 'sse' in enabled_backends or 'mmx' in enabled_backends +if 'avx' in enabled_targets or 'sse' in enabled_targets or 'mmx' in enabled_targets orc_sources += ['orcx86.c', 'orcx86insn.c', 'orcprogram-x86.c'] endif -if 'avx' in enabled_backends +if 'avx' in enabled_targets orc_sources += ['orcavx.c', 'orcrules-avx.c', 'orcprogram-avx.c'] endif -if 'sse' in enabled_backends +if 'sse' in enabled_targets orc_sources += ['orcsse.c', 'orcrules-sse.c', 'orcprogram-sse.c'] endif -if 'mmx' in enabled_backends +if 'mmx' in enabled_targets orc_sources += ['orcmmx.c', 'orcrules-mmx.c', 'orcprogram-mmx.c'] endif -if 'altivec' in enabled_backends +if 'altivec' in enabled_targets orc_sources += ['orcrules-altivec.c', 'orcprogram-altivec.c', 'orcpowerpc.c'] endif -if 'neon' in enabled_backends +if 'neon' in enabled_targets orc_sources += ['orcprogram-neon.c', 'orcrules-neon.c', 'orcarm.c'] endif -# ARM backend is disabled until it has decent coverage -if 'arm' in enabled_backends +# ARM target is disabled until it has decent coverage +if 'arm' in enabled_targets # we assume it is ok to include the same file (orcarm) twice - # in case all backends are selected (ie neon and arm) + # in case all targets are selected (ie neon and arm) # orc_sources += ['orcprogram-arm.c', 'orcrules-arm.c', 'orcarm.c'] endif -if 'c64x' in enabled_backends +if 'c64x' in enabled_targets orc_sources += ['orcprogram-c64x-c.c'] endif -if 'mips' in enabled_backends +if 'mips' in enabled_targets orc_sources += ['orcmips.c', 'orcprogram-mips.c', 'orcrules-mips.c'] endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/opcodes.h new/orc-0.4.41/orc/opcodes.h --- old/orc-0.4.40/orc/opcodes.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/opcodes.h 2025-02-17 21:02:18.000000000 +0100 @@ -110,16 +110,16 @@ UNARY_WB(convhlw, "((orc_uint32)%s)>>16") UNARY_LW(convssslw, "ORC_CLAMP_SW(%s)") UNARY_LW(convsuslw, "ORC_CLAMP_UW(%s)") -UNARY_LW(convusslw, "ORC_CLAMP((orc_uint32)%s,0,ORC_SW_MAX)") -UNARY_LW(convuuslw, "ORC_CLAMP_UW((orc_uint32)%s)") +UNARY_LW(convusslw, "ORC_MIN((orc_uint32)%s, ORC_SW_MAX)") +UNARY_LW(convuuslw, "ORC_MIN((orc_uint32)%s, ORC_UW_MAX)") UNARY_LQ(convslq, "%s") UNARY_LQ(convulq, "(orc_uint32)%s") UNARY_LW(convql, "%s") UNARY_LW(convsssql, "ORC_CLAMP_SL(%s)") UNARY_LW(convsusql, "ORC_CLAMP_UL(%s)") -UNARY_LW(convussql, "ORC_CLAMP_SL((orc_uint64)%s)") -UNARY_LW(convuusql, "ORC_CLAMP_UL((orc_uint64)%s)") +UNARY_LW(convussql, "ORC_MIN((orc_uint64)%s, ORC_SL_MAX)") +UNARY_LW(convuusql, "ORC_MIN((orc_uint64)%s, ORC_UL_MAX)") BINARY_BW(mulsbw, "%s * %s") BINARY_BW(mulubw, "((orc_uint16)((orc_uint8)%s)) * ((orc_uint16)((orc_uint8)%s))") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orc.c new/orc-0.4.41/orc/orc.c --- old/orc-0.4.40/orc/orc.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orc.c 2025-02-17 21:02:18.000000000 +0100 @@ -50,28 +50,28 @@ _orc_compiler_init(); orc_opcode_init(); orc_c_init(); -#ifdef ENABLE_BACKEND_C64X +#ifdef ENABLE_TARGET_C64X orc_c64x_c_init(); #endif -#ifdef ENABLE_BACKEND_MMX +#ifdef ENABLE_TARGET_MMX orc_mmx_init(); #endif -#ifdef ENABLE_BACKEND_SSE +#ifdef ENABLE_TARGET_SSE orc_sse_init(); #endif -#ifdef ENABLE_BACKEND_AVX +#ifdef ENABLE_TARGET_AVX orc_avx_init(); #endif -#ifdef ENABLE_BACKEND_ALTIVEC +#ifdef ENABLE_TARGET_ALTIVEC orc_powerpc_init(); #endif -#ifdef ENABLE_BACKEND_ARM +#ifdef ENABLE_TARGET_ARM orc_arm_init(); #endif -#ifdef ENABLE_BACKEND_NEON +#ifdef ENABLE_TARGET_NEON orc_neon_init(); #endif -#ifdef ENABLE_BACKEND_MIPS +#ifdef ENABLE_TARGET_MIPS orc_mips_init(); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcarm.c new/orc-0.4.41/orc/orcarm.c --- old/orc-0.4.40/orc/orcarm.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcarm.c 2025-02-17 21:02:18.000000000 +0100 @@ -1077,7 +1077,7 @@ return; } if (val & 0xfff) { - ORC_WARNING("offset is trucated %llx", val); + ORC_WARNING("offset is truncated %llx", val); } imm >>= 12; shift = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcavx.h new/orc-0.4.41/orc/orcavx.h --- old/orc-0.4.40/orc/orcavx.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcavx.h 2025-02-17 21:02:18.000000000 +0100 @@ -224,8 +224,8 @@ #define orc_avx_emit_mulps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_mulps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX) #define orc_avx_sse_emit_divps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_divps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_emit_divps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_divps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX) -#define orc_avx_sse_emit_sqrtps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX) -#define orc_avx_emit_sqrtps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX) +#define orc_avx_sse_emit_sqrtps(p,s1,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, 0, d, ORC_X86_AVX_VEX128_PREFIX) +#define orc_avx_emit_sqrtps(p,s1,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, 0, d, ORC_X86_AVX_VEX256_PREFIX) #define orc_avx_sse_emit_andps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_andps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_emit_andps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_andps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX) #define orc_avx_sse_emit_orps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_orps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX) @@ -310,7 +310,7 @@ #define orc_avx_sse_emit_pextrb_memoffset(p,imm,offset,a,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrb, 8, imm, offset, a, b, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_sse_emit_pextrw_memoffset(p,imm,offset,a,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrw, 16, imm, offset, a, b, ORC_X86_AVX_VEX128_PREFIX) -#define orc_avx_sse_emit_movd_store_memoffset(p,a,offset,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 16, 0, a, offset, b, ORC_X86_AVX_VEX128_PREFIX) +#define orc_avx_sse_emit_movd_store_memoffset(p,a,offset,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 4, 0, a, offset, b, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_sse_emit_movq_store_memoffset(p,a,offset,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_movq_sse_store, 16, 0, a, offset, b, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_sse_emit_movdqa_store_memoffset(p,a,offset,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqa_store, 16, 0, a, offset, b, ORC_X86_AVX_VEX128_PREFIX) #define orc_avx_emit_movdqa_store_memoffset(p,a,offset,b) orc_vex_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqa_store, 32, 0, a, offset, b, ORC_X86_AVX_VEX256_PREFIX) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orccodemem.c new/orc-0.4.41/orc/orccodemem.c --- old/orc-0.4.40/orc/orccodemem.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orccodemem.c 2025-02-17 21:02:18.000000000 +0100 @@ -218,7 +218,7 @@ void orc_code_chunk_free (OrcCodeChunk *chunk) { - if (_orc_compiler_flag_debug) { + if (orc_compiler_is_debug ()) { /* If debug is turned on, don't free code */ return; } @@ -242,10 +242,9 @@ int fd; int n; char *filename; - mode_t mask; int exec_prot = PROT_READ | PROT_EXEC; - if (_orc_compiler_flag_debug) + if (orc_compiler_is_debug ()) exec_prot |= PROT_WRITE; filename = malloc (strlen ("/orcexec..") + @@ -255,15 +254,13 @@ return FALSE; sprintf(filename, "%s/orcexec.XXXXXX", dir); - mask = umask (0066); fd = mkstemp (filename); - umask (mask); if (fd == -1) { ORC_WARNING ("failed to create temp file '%s'. err=%i", filename, errno); free (filename); return FALSE; } - if (force_unlink || !_orc_compiler_flag_debug) { + if (force_unlink || !orc_compiler_is_debug ()) { unlink (filename); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orccompiler.c new/orc-0.4.41/orc/orccompiler.c --- old/orc-0.4.40/orc/orccompiler.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orccompiler.c 2025-02-17 21:02:18.000000000 +0100 @@ -110,10 +110,10 @@ static void orc_compiler_check_sizes (OrcCompiler *compiler); static char **_orc_compiler_flag_list; -int _orc_compiler_flag_backup; -int _orc_compiler_flag_emulate; -int _orc_compiler_flag_debug; -int _orc_compiler_flag_randomize; +static orc_bool _orc_compiler_flag_backup; +static orc_bool _orc_compiler_flag_emulate; +static orc_bool _orc_compiler_flag_debug; +static orc_bool _orc_compiler_flag_randomize; /* For Windows */ int _orc_codemem_alignment; @@ -128,6 +128,12 @@ } #endif +orc_bool +orc_compiler_is_debug () +{ + return _orc_compiler_flag_debug != FALSE; +} + void _orc_compiler_init (void) { @@ -215,7 +221,7 @@ } } -int +orc_bool orc_compiler_flag_check (const char *flag) { int i; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orccompiler.h new/orc-0.4.41/orc/orccompiler.h --- old/orc-0.4.40/orc/orccompiler.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orccompiler.h 2025-02-17 21:02:18.000000000 +0100 @@ -160,15 +160,9 @@ #ifdef ORC_ENABLE_UNSTABLE_API -ORC_API int orc_compiler_flag_check (const char *flag); +ORC_API orc_bool orc_compiler_flag_check (const char *flag); ORC_API OrcCompileResult orc_compiler_compile_program (OrcCompiler *compiler, OrcProgram *program, OrcTarget *target, unsigned int flags); -/* FIXME: remove, these were never actually exported as public symbols, so unusable */ -extern int _orc_compiler_flag_backup; -extern int _orc_compiler_flag_emulate; -extern int _orc_compiler_flag_debug; -extern int _orc_compiler_flag_randomize; - #endif ORC_END_DECLS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcemulateopcodes.h new/orc-0.4.41/orc/orcemulateopcodes.h --- old/orc-0.4.40/orc/orcemulateopcodes.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcemulateopcodes.h 2025-02-17 21:02:18.000000000 +0100 @@ -4,203 +4,203 @@ #ifndef _ORC_EMULATE_OPCODES_H_ #define _ORC_EMULATE_OPCODES_H_ -void emulate_absb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addssb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addusb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andnb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avgsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avgub (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeqb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpgtsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_copyb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadoffb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadupdb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadupib (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadpb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_ldresnearb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_ldresnearl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_ldreslinb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_ldreslinl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxub (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minub (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mullb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhub (OrcOpcodeExecutor *ex, int i, int n); -void emulate_orb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shlb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrsb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrub (OrcOpcodeExecutor *ex, int i, int n); -void emulate_signb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_storeb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subssb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subusb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_xorb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_absw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addssw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addusw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andnw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avgsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avguw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeqw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpgtsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_copyw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_div255w (OrcOpcodeExecutor *ex, int i, int n); -void emulate_divluw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadoffw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadpw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxuw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minuw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mullw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhuw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_orw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shlw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrsw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shruw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_signw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_storew (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subssw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subusw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_xorw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_absl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addssl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addusl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andnl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avgsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_avgul (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpgtsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_copyl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadoffl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadpl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxul (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minul (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulll (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulhul (OrcOpcodeExecutor *ex, int i, int n); -void emulate_orl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shll (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrsl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrul (OrcOpcodeExecutor *ex, int i, int n); -void emulate_signl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_storel (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subssl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subusl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_xorl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_loadpq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_storeq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splatw3q (OrcOpcodeExecutor *ex, int i, int n); -void emulate_copyq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeqq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpgtsq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andnq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_orq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_xorq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shlq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shrsq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_shruq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convsbw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convubw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splatbw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splatbl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convswl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convuwl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convslq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convulq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convwb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convhwb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convssswb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convsuswb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convusswb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convuuswb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convlw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convhlw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convssslw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convsuslw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convusslw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convuuslw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convsssql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convsusql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convussql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convuusql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulsbw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulubw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulswl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_muluwl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulslq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mululq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_accw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_accl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_accsadubl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_swapw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_swapl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_swapwl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_swapq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_swaplq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select0wb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select1wb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select0lw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select1lw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select0ql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_select1ql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mergelq (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mergewl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mergebw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splitql (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splitlw (OrcOpcodeExecutor *ex, int i, int n); -void emulate_splitwb (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mulf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_divf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_sqrtf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_minf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeqf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpltf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmplef (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convfl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convlf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_addd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_subd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_muld (OrcOpcodeExecutor *ex, int i, int n); -void emulate_divd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_sqrtd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_maxd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_mind (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpeqd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpltd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_cmpled (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convdl (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convld (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convfd (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convdf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_orf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_andf (OrcOpcodeExecutor *ex, int i, int n); -void emulate_convwf (OrcOpcodeExecutor *ex, int offset, int n); +ORC_INTERNAL void emulate_absb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addssb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addusb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andnb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avgsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avgub (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeqb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpgtsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_copyb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadoffb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadupdb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadupib (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadpb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_ldresnearb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_ldresnearl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_ldreslinb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_ldreslinl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxub (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minub (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mullb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhub (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_orb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shlb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrsb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrub (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_signb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_storeb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subssb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subusb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_xorb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_absw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addssw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addusw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andnw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avgsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avguw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeqw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpgtsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_copyw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_div255w (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_divluw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadoffw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadpw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxuw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minuw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mullw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhuw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_orw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shlw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrsw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shruw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_signw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_storew (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subssw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subusw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_xorw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_absl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addssl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addusl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andnl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avgsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_avgul (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpgtsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_copyl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadoffl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadpl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxul (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minul (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulll (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulhul (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_orl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shll (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrsl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrul (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_signl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_storel (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subssl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subusl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_xorl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_loadpq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_storeq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splatw3q (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_copyq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeqq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpgtsq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andnq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_orq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_xorq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shlq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shrsq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_shruq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convsbw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convubw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splatbw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splatbl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convswl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convuwl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convslq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convulq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convwb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convhwb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convssswb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convsuswb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convusswb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convuuswb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convlw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convhlw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convssslw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convsuslw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convusslw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convuuslw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convsssql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convsusql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convussql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convuusql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulsbw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulubw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulswl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_muluwl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulslq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mululq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_accw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_accl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_accsadubl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_swapw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_swapl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_swapwl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_swapq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_swaplq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select0wb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select1wb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select0lw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select1lw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select0ql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_select1ql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mergelq (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mergewl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mergebw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splitql (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splitlw (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_splitwb (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mulf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_divf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_sqrtf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_minf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeqf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpltf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmplef (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convfl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convlf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_addd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_subd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_muld (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_divd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_sqrtd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_maxd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_mind (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpeqd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpltd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_cmpled (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convdl (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convld (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convfd (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convdf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_orf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_andf (OrcOpcodeExecutor *ex, int i, int n); +ORC_INTERNAL void emulate_convwf (OrcOpcodeExecutor *ex, int i, int n); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcinternal.h new/orc-0.4.41/orc/orcinternal.h --- old/orc-0.4.40/orc/orcinternal.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcinternal.h 2025-02-17 21:02:18.000000000 +0100 @@ -10,16 +10,16 @@ #ifdef ORC_ENABLE_UNSTABLE_API /* The function prototypes need to be visible to orc.c */ -void orc_mmx_init (void); -void orc_sse_init (void); -void orc_avx_init (void); -void orc_arm_init (void); -void orc_powerpc_init (void); -void orc_c_init (void); -void orc_neon_init (void); -void orc_c64x_init (void); -void orc_c64x_c_init (void); -void orc_mips_init (void); +ORC_INTERNAL void orc_mmx_init (void); +ORC_INTERNAL void orc_sse_init (void); +ORC_INTERNAL void orc_avx_init (void); +ORC_INTERNAL void orc_arm_init (void); +ORC_INTERNAL void orc_powerpc_init (void); +ORC_INTERNAL void orc_c_init (void); +ORC_INTERNAL void orc_neon_init (void); +ORC_INTERNAL void orc_c64x_init (void); +ORC_INTERNAL void orc_c64x_c_init (void); +ORC_INTERNAL void orc_mips_init (void); typedef struct _OrcCodeRegion OrcCodeRegion; typedef struct _OrcCodeChunk OrcCodeChunk; @@ -29,19 +29,21 @@ OrcCodeRegion * orc_code_region_alloc (void); void orc_code_chunk_free (OrcCodeChunk *chunk); -extern int _orc_data_cache_size_level1; -extern int _orc_data_cache_size_level2; -extern int _orc_data_cache_size_level3; -extern int _orc_cpu_family; -extern int _orc_cpu_model; -extern int _orc_cpu_stepping; -extern const char *_orc_cpu_name; +ORC_INTERNAL orc_bool orc_compiler_is_debug (); -void orc_compiler_emit_invariants (OrcCompiler *compiler); -int orc_program_has_float (OrcCompiler *compiler); +ORC_INTERNAL extern int _orc_data_cache_size_level1; +ORC_INTERNAL extern int _orc_data_cache_size_level2; +ORC_INTERNAL extern int _orc_data_cache_size_level3; +ORC_INTERNAL extern int _orc_cpu_family; +ORC_INTERNAL extern int _orc_cpu_model; +ORC_INTERNAL extern int _orc_cpu_stepping; +ORC_INTERNAL extern const char *_orc_cpu_name; -char* _orc_getenv (const char *var); -void orc_opcode_sys_init (void); +ORC_INTERNAL void orc_compiler_emit_invariants (OrcCompiler *compiler); +ORC_INTERNAL int orc_program_has_float (OrcCompiler *compiler); + +ORC_INTERNAL char* _orc_getenv (const char *var); +ORC_INTERNAL void orc_opcode_sys_init (void); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcmmx.h new/orc-0.4.41/orc/orcmmx.h --- old/orc-0.4.40/orc/orcmmx.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcmmx.h 2025-02-17 21:02:18.000000000 +0100 @@ -195,24 +195,24 @@ #define orc_mmx_emit_movq_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movq_mmx_load, 4, 0, offset, a, b) #define orc_mmx_emit_pextrw_memoffset(p,imm,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrw, 8, imm, a, offset, b) -#define orc_mmx_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 8, 0, a, offset, b) +#define orc_mmx_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 4, 0, a, offset, b) #define orc_mmx_emit_movq_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movq_mmx_store, 8, 0, a, offset, b) #define orc_mmx_emit_pinsrw_memindex(p,imm,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_pinsrw, 4, imm, offset, a, a_index, shift, b) #define orc_mmx_emit_movd_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movd_load, 4, 0, offset, a, a_index, shift, b) -#define orc_mmx_emit_movq_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movq_mmx_load, 4, 0, offset, a, a_index, shift, b) +#define orc_mmx_emit_movq_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movq_mmx_load, 8, 0, offset, a, a_index, shift, b) #define orc_mmx_emit_pextrw_memindex(p,imm,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_pextrw, imm, a, offset, b, b_index, shift) -#define orc_mmx_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 0, a, offset, b, b_index, shift) +#define orc_mmx_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 4, a, offset, b, b_index, shift) #define orc_mmx_emit_movq_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movq_mmx_store, 0, a, offset, b, b_index, shift) #define orc_mmx_emit_pinsrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pinsrw, imm, a, b) #define orc_mmx_emit_movd_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_load, 4, a, b) -#define orc_mmx_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_load, 4, a, b) +#define orc_mmx_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_load, 8, a, b) #define orc_mmx_emit_pextrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pextrw, imm, a, b) #define orc_mmx_emit_movd_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_store, 4, a, b) -#define orc_mmx_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_store, 4, a, b) +#define orc_mmx_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_mmx_store, 8, a, b) #define orc_mmx_emit_pshufw(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pshufw, imm, a, b) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-avx.c new/orc-0.4.41/orc/orcprogram-avx.c --- old/orc-0.4.40/orc/orcprogram-avx.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-avx.c 2025-02-17 21:02:18.000000000 +0100 @@ -25,7 +25,7 @@ #if defined(HAVE_AMD64) flags |= ORC_TARGET_SSE_64BIT; #endif - if (_orc_compiler_flag_debug) { + if (orc_compiler_is_debug ()) { flags |= ORC_TARGET_SSE_FRAME_POINTER; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-c.c new/orc-0.4.41/orc/orcprogram-c.c --- old/orc-0.4.40/orc/orcprogram-c.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-c.c 2025-02-17 21:02:18.000000000 +0100 @@ -106,6 +106,7 @@ { return "\n" "/* begin Orc C target preamble */\n" + "#include <math.h>\n" "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n" "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n" "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-mips.c new/orc-0.4.41/orc/orcprogram-mips.c --- old/orc-0.4.40/orc/orcprogram-mips.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-mips.c 2025-02-17 21:02:18.000000000 +0100 @@ -101,7 +101,7 @@ { unsigned int flags = ORC_TARGET_MIPS_DSP2; - if (_orc_compiler_flag_debug) { + if (orc_compiler_is_debug ()) { flags |= ORC_TARGET_MIPS_FRAME_POINTER; } return flags; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-mmx.c new/orc-0.4.41/orc/orcprogram-mmx.c --- old/orc-0.4.40/orc/orcprogram-mmx.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-mmx.c 2025-02-17 21:02:18.000000000 +0100 @@ -30,7 +30,7 @@ #if defined(HAVE_AMD64) flags |= ORC_TARGET_MMX_64BIT; #endif - if (_orc_compiler_flag_debug) { + if (orc_compiler_is_debug ()) { flags |= ORC_TARGET_MMX_FRAME_POINTER; } @@ -310,7 +310,7 @@ static void mmx_move_memoffset_to_register (OrcCompiler *compiler, int size, int offset, int reg1, int reg2, int is_aligned) { - orc_x86_emit_mov_memoffset_mmx (compiler, size, reg1, offset, reg2, is_aligned); + orc_x86_emit_mov_memoffset_mmx (compiler, size, offset, reg1, reg2, is_aligned); } static int diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-sse.c new/orc-0.4.41/orc/orcprogram-sse.c --- old/orc-0.4.40/orc/orcprogram-sse.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-sse.c 2025-02-17 21:02:18.000000000 +0100 @@ -28,7 +28,7 @@ #if defined(HAVE_AMD64) flags |= ORC_TARGET_SSE_64BIT; #endif - if (_orc_compiler_flag_debug) { + if (orc_compiler_is_debug ()) { flags |= ORC_TARGET_SSE_FRAME_POINTER; } @@ -318,7 +318,7 @@ static void sse_move_memoffset_to_register (OrcCompiler *compiler, int size, int offset, int reg1, int reg2, int is_aligned) { - orc_x86_emit_mov_memoffset_sse (compiler, size, reg1, offset, reg2, is_aligned); + orc_x86_emit_mov_memoffset_sse (compiler, size, offset, reg1, reg2, is_aligned); } static int diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcprogram-x86.c new/orc-0.4.41/orc/orcprogram-x86.c --- old/orc-0.4.40/orc/orcprogram-x86.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcprogram-x86.c 2025-02-17 21:02:18.000000000 +0100 @@ -11,6 +11,10 @@ #include <orc/orcx86-private.h> #include <orc/orcinternal.h> +#if defined(__APPLE__) +#include <libkern/OSCacheControl.h> +#endif + #if defined(_WIN32) #include <windows.h> #endif @@ -63,12 +67,18 @@ { int i; int n = 2; + const int max_elements = (t->register_size / c->max_var_size); - for (i = 1; i; i++) { - if ((t->register_size / c->max_var_size) == n) - break; - n *= 2; - } + if (max_elements <= 1) { + // MMX fits just the one element + i = 0; + } else { + for (i = 1; i; i++) { + if (max_elements == n) + break; + n *= 2; + } + } c->loop_shift = i; } @@ -1069,10 +1079,10 @@ if ((void *) code->exec != (void *) code->code) FlushInstructionCache(h_proc, code->exec, code->code_size); -#elif __has_builtin(__builtin_clear_cache) - __builtin_clear_cache (code->code, code->code + code->code_size); +#elif __has_builtin(__builtin___clear_cache) + __builtin___clear_cache ((char*)code->code, (char*)code->code + code->code_size); if ((void *) code->exec != (void *) code->code) - __builtin_clear_cache (code->exec, code->exec + code->code_size); + __builtin___clear_cache ((char*)code->exec, (char*)code->exec + code->code_size); #else __clear_cache (code->code, code->code + code->code_size); if ((void *) code->exec != (void *) code->code) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcrules-avx.c new/orc-0.4.41/orc/orcrules-avx.c --- old/orc-0.4.40/orc/orcrules-avx.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcrules-avx.c 2025-02-17 21:02:18.000000000 +0100 @@ -2678,7 +2678,7 @@ BINARY (subf, subps) BINARY (mulf, mulps) BINARY (divf, divps) -BINARY (sqrtf, sqrtps) +UNARY (sqrtf, sqrtps) BINARY (orf, orps) BINARY (andf, andps) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcsse.h new/orc-0.4.41/orc/orcsse.h --- old/orc-0.4.40/orc/orcsse.h 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcsse.h 2025-02-17 21:02:18.000000000 +0100 @@ -205,7 +205,7 @@ #define orc_sse_emit_movhps_load_memoffset(p,offset,a,b) orc_x86_emit_cpuinsn_load_memoffset(p, ORC_X86_movhps_load, 4, 0, offset, a, b) #define orc_sse_emit_pextrb_memoffset(p,imm,offset,a,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrb, 8, imm, offset, a,b) #define orc_sse_emit_pextrw_memoffset(p,imm,offset,a,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_pextrw, 16, imm, offset, a, b) -#define orc_sse_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 16, 0, a, offset, b) +#define orc_sse_emit_movd_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movd_store, 4, 0, a, offset, b) #define orc_sse_emit_movq_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movq_sse_store, 16, 0, a, offset, b) #define orc_sse_emit_movdqa_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqa_store, 16, 0, a, offset, b) #define orc_sse_emit_movdqu_store_memoffset(p,a,offset,b) orc_x86_emit_cpuinsn_store_memoffset(p, ORC_X86_movdqu_store, 16, 0, a, offset, b) @@ -218,7 +218,7 @@ #define orc_sse_emit_movhps_load_memindex(p,offset,a,a_index,shift,b) orc_x86_emit_cpuinsn_load_memindex(p, ORC_X86_movhps_load, 4, 0, offset, a, a_index, shift, b) #define orc_sse_emit_pextrw_memindex(p,imm,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_pextrw, imm, a, offset, b, b_index, shift) -#define orc_sse_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 0, a, offset, b, b_index, shift) +#define orc_sse_emit_movd_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movd_store, 4, a, offset, b, b_index, shift) #define orc_sse_emit_movq_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movq_sse_store, 0, a, offset, b, b_index, shift) #define orc_sse_emit_movdqa_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movdqa_store, 0, a, offset, b, b_index, shift) #define orc_sse_emit_movdqu_store_memindex(p,a,offset,b,b_index,shift) orc_x86_emit_cpuinsn_store_memindex(p, ORC_X86_movdqu_store, 0, a, offset, b, b_index, shift) @@ -226,10 +226,10 @@ #define orc_sse_emit_pinsrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pinsrw, imm, a, b) #define orc_sse_emit_movd_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_load, 4, a, b) -#define orc_sse_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_load, 4, a, b) +#define orc_sse_emit_movq_load_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_load, 8, a, b) #define orc_sse_emit_pextrw_register(p,imm,a,b) orc_x86_emit_cpuinsn_imm(p, ORC_X86_pextrw, imm, a, b) #define orc_sse_emit_movd_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movd_store, 4, a, b) -#define orc_sse_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_store, 4, a, b) +#define orc_sse_emit_movq_store_register(p,a,b) orc_x86_emit_cpuinsn_size(p, ORC_X86_movq_sse_store, 8, a, b) #define orc_sse_emit_blendvpd(p, s1, d) orc_x86_emit_cpuinsn_size (p, ORC_X86_blendvpd_sse, 1, s1, d) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orctarget.c new/orc-0.4.41/orc/orctarget.c --- old/orc-0.4.40/orc/orctarget.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orctarget.c 2025-02-17 21:02:18.000000000 +0100 @@ -43,7 +43,12 @@ OrcTarget * orc_target_get_default (void) { - const char *const envvar = _orc_getenv ("ORC_BACKEND"); + const char *envvar = _orc_getenv ("ORC_TARGET"); + + if (!envvar) { + /* Since version 0.4.39, ORC_BACKEND was used instead */ + envvar = _orc_getenv ("ORC_BACKEND"); + } if (envvar != NULL) { OrcTarget *const target = orc_target_get_by_name (envvar); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/orc/orcx86insn.c new/orc-0.4.41/orc/orcx86insn.c --- old/orc-0.4.40/orc/orcx86insn.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/orc/orcx86insn.c 2025-02-17 21:02:18.000000000 +0100 @@ -565,7 +565,11 @@ src_op[0] = 0; break; case ORC_X86_INSN_TYPE_REG_REGM: - sprintf(src_op, "%%%s, ", orc_x86_get_regname (operand1)); + if (xinsn->type == ORC_X86_RM_REG) { + sprintf(src_op, "%%%s, ", orc_x86_get_regname_size (operand1, xinsn->size)); + } else { + sprintf(src_op, "%%%s, ", orc_x86_get_regname (operand1)); + } break; case ORC_X86_INSN_TYPE_REG8_REGM: sprintf(src_op, "%%%s, ", orc_x86_get_regname_8 (operand1)); @@ -714,7 +718,7 @@ case ORC_X86_INSN_TYPE_REG_REGM: case ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV: if (xinsn->type == ORC_X86_RM_REG) { - sprintf(dst_op, "%%%s", orc_x86_get_regname (xinsn->dest)); + sprintf(dst_op, "%%%s", orc_x86_get_regname_size (xinsn->dest, xinsn->size)); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { sprintf(dst_op, "%d(%%%s)", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->dest)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/testsuite/exec_opcodes_sys.c new/orc-0.4.41/testsuite/exec_opcodes_sys.c --- old/orc-0.4.40/testsuite/exec_opcodes_sys.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/testsuite/exec_opcodes_sys.c 2025-02-17 21:02:18.000000000 +0100 @@ -429,7 +429,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_2d_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); @@ -491,7 +491,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_const_n_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_constant_n (p, 8); @@ -553,7 +553,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_const_n_2d_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); orc_program_set_constant_n (p, 8); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/testsuite/meson.build new/orc-0.4.41/testsuite/meson.build --- old/orc-0.4.40/testsuite/meson.build 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/testsuite/meson.build 2025-02-17 21:02:18.000000000 +0100 @@ -11,13 +11,13 @@ 'test_parse' ] -runnable_backends = [] +runnable_targets = [] # Enable per-target runs only for Intel if cpu_family == 'x86' or cpu_family == 'x86_64' - foreach i : enabled_backends + foreach i : enabled_targets if ['mmx', 'sse'].contains(i) - runnable_backends += [i] + runnable_targets += [i] endif endforeach endif @@ -27,7 +27,7 @@ install: false, dependencies: [libm, orc_dep, orc_test_dep]) - foreach i: runnable_backends + foreach i: runnable_targets test( test, t, @@ -52,15 +52,15 @@ noinst_bins = [] -if backend == 'neon' or backend == 'all' +if target == 'neon' or target == 'all' noinst_bins += ['compile_opcodes_sys_neon', 'compile_parse_neon'] endif -if backend == 'c64x' or backend == 'all' +if target == 'c64x' or target == 'all' noinst_bins += ['compile_opcodes_sys_c64x'] endif -if backend == 'mips' or backend == 'all' +if target == 'mips' or target == 'all' noinst_bins += ['compile_opcodes_sys_mips'] endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/testsuite/test.orc new/orc-0.4.41/testsuite/test.orc --- old/orc-0.4.40/testsuite/test.orc 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/testsuite/test.orc 2025-02-17 21:02:18.000000000 +0100 @@ -2806,3 +2806,11 @@ mulslq t1, d1, p1 shrsq t1, t1, 27 convql d1, t1 + +.function sqrt_nx +.dest 4 dst float +.source 4 src float +.floatparam 4 k +.temp 4 tmp +sqrtf tmp, src +mulf dst, tmp, k diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/tools/generate-emulation.c new/orc-0.4.41/tools/generate-emulation.c --- old/orc-0.4.40/tools/generate-emulation.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/tools/generate-emulation.c 2025-02-17 21:02:18.000000000 +0100 @@ -102,7 +102,7 @@ OrcStaticOpcode *opcode = opcode_set->opcodes + i; fprintf(output, - "void emulate_%s (OrcOpcodeExecutor *ex, int i, int n);\n", + "ORC_INTERNAL void emulate_%s (OrcOpcodeExecutor *ex, int i, int n);\n", opcode->name); } fprintf(output, "\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orc-0.4.40/tools/orc-bugreport.c new/orc-0.4.41/tools/orc-bugreport.c --- old/orc-0.4.40/tools/orc-bugreport.c 2024-09-12 21:04:54.000000000 +0200 +++ new/orc-0.4.41/tools/orc-bugreport.c 2025-02-17 21:02:18.000000000 +0100 @@ -445,7 +445,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_2d_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); @@ -497,7 +497,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_const_n_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_constant_n (p, 8); @@ -549,7 +549,7 @@ flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf(s, "test_s_const_n_2d_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); orc_program_set_constant_n (p, 8);