summaryrefslogtreecommitdiff
path: root/src/common/x64 (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Rework time service to fix time passing offline.Gravatar Kelebek12024-01-242-21/+14
|
* x64: cpu_wait: Implement MWAITX for non-MSVC compilersGravatar Morph2023-06-281-0/+10
|
* x64: cpu_wait: Remove magic valuesGravatar Morph2023-06-281-3/+8
|
* x64: cpu_wait: Make use of MWAITX in MicroSleepGravatar Morph2023-06-281-12/+21
| | | | | MWAITX is equivalent to UMWAIT on Intel's Alder Lake CPUs. We can emulate TPAUSE by using MONITORX in conjunction with MWAITX to wait for 100K cycles.
* x64: Add detection of monitorx instructionsGravatar Morph2023-06-282-0/+2
| | | | monitorx introduces 2 instructions: MONITORX and MWAITX.
* (wall, native)_clock: Add GetGPUTickGravatar Morph2023-06-072-1/+9
| | | | Allows us to directly calculate the GPU tick without double conversion to and from the host clock tick.
* (wall, native)_clock: Rework NativeClockGravatar Morph2023-06-072-181/+40
|
* x64: Deduplicate RDTSC usageGravatar Morph2023-06-074-19/+80
|
* x64: Simplify RDTSC on non-MSVC compilersGravatar Morph2023-03-272-16/+10
| | | | Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
* x64: Add MicroSleepGravatar Morph2023-03-272-0/+82
| | | | | | | MicroSleep allows the processor to pause for a "short" amount of time (in the microsecond range). This is useful for spin-waiting that does not require nanosecond precision. This uses the new TPAUSE instruction introduced on Intel's newest processors as part of the waitpkg instructions. For CPUs that do not support waitpkg instructions, this is equivalent to yield(). Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
* x64: cpu_detect: Add detection of waitpkg instructionsGravatar Morph2023-03-272-0/+2
| | | | waitpkg introduces 3 instructions, UMONITOR, UMWAIT and TPAUSE.
* native_clock: Wait for 10 seconds instead of 30Gravatar Morph2023-03-071-3/+3
| | | | It was experimentally determined to be sufficient.
* native_clock: Use RealTimeClock instead of SteadyClockGravatar Morph2023-03-071-4/+4
| | | | We want to synchronize RDTSC to real time.
* native_clock: Re-adjust the RDTSC frequencyGravatar Morph2023-03-072-5/+34
| | | | | The RDTSC frequency reported by CPUID is not accurate to its true frequency. We will spawn a separate thread to calculate the true RDTSC frequency after a measurement period of 30 seconds has elapsed.
* native_clock: Round RDTSC frequency to the nearest 1000Gravatar Morph2023-03-051-5/+12
|
* Add CPU core count to log filesGravatar Matías Locatti2022-11-112-3/+60
|
* Revert Coretiming PRs 8531 and 7454 (#8591)Gravatar Maide2022-07-271-1/+1
|
* chore: make yuzu REUSE compliantGravatar Andrea Pappacoda2022-07-272-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
* guard against div-by-zeroGravatar Marshall Mohror2022-07-061-2/+5
|
* common/x64: Use TSC clock rate from CPUID when availableGravatar Marshall Mohror2022-07-062-0/+18
| | | | The current method used to estimate the TSC is fairly accurate - within a few kHz - but the exact value can be extracted from CPUID if available.
* Adress Feedback.Gravatar Fernando Sahmkow2022-06-301-1/+0
|
* Native clock: Use atomic ops as before.Gravatar Fernando Sahmkow2022-06-282-24/+29
|
* Native Clock: remove inaccuracy mask.Gravatar Fernando Sahmkow2022-06-282-6/+1
|
* Core: Fix tests.Gravatar Fernando Sahmkow2022-06-281-0/+1
|
* Common: improve native clock.Gravatar Fernando Sahmkow2022-06-282-29/+24
|
* general: Convert source file copyright comments over to SPDXGravatar Morph2022-04-234-10/+10
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* native_clock: Internal linkage for FencedRDTSCGravatar Merry2022-04-031-2/+4
| | | | __forceinline required on MSVC for function to be inlined
* native_clock: Use lfence with rdtscGravatar merry2022-04-031-14/+33
|
* native_clock: Use writeback from CAS to avoid double-loadingGravatar merry2022-04-021-4/+6
|
* native_clock: Use AtomicLoad128Gravatar Merry2022-04-021-2/+2
|
* common: Reduce unused includesGravatar ameerj2022-03-193-5/+0
|
* cpu_detect: Add additional x86 flags and telemetryGravatar Wunkolo2022-03-112-11/+40
| | | | | | | | | | | Adds detection of additional CPU flags to cpu_detect and additions to telemetry output. This is not exhaustive but guided by features that [dynarmic utilizes](https://github.com/merryhime/dynarmic/blob/bcfe377aaa5138af740e90af5be7a7dff7b62a52/src/dynarmic/backend/x64/host_feature.h#L12-L33) as well as features that are currently utilized but not reported to telemetry(invariant_tsc). This is intended to guide future optimizations. AVX512 in particular is broken up into its individual subsets and some other processor features such as [sha](https://en.wikipedia.org/wiki/Intel_SHA_extensions) and [gfni](https://en.wikipedia.org/wiki/AVX-512#GFNI) are added to have some forward-facing data-points. What used to be a single `CPU_Extension_x64_AVX512` telemetry field is also broken up into individual `CPU_Extension_x64_AVX512{F,VL,CD,...}` fields.
* cpu_detect: Revert `__cpuid{ex}` array-type argumentGravatar Wunkolo2022-03-091-6/+6
| | | | Restores compatibility with MSVC's `__cpuid` intrinsic.
* cpu_detect: Add missing `lzcnt` detectionGravatar Wunkolo2022-03-091-0/+1
|
* cpu_detect: Refactor cpu/manufacturer identificationGravatar Wunkolo2022-03-092-24/+38
| | | | | | | Set the zero-enum value to Unknown Move the Manufacterer enum into the CPUCaps structure namespace Add "ParseManufacturer" utility-function Fix cpu/brand string buffer sizes(!)
* cpu_detect: Update array-types to `span` and `array`Gravatar Wunkolo2022-03-091-11/+13
| | | | Update some uses of `int` into some more explicitly sized types as well
* cpu_detect: Utilize `Bit<N>` utility functionGravatar Wunkolo2022-03-091-32/+20
|
* cpu_detect: Compact capability fieldsGravatar Wunkolo2022-03-091-20/+21
| | | | | As this structure gets more explicit, bools can be bitfields and small enums can use smaller types for their span of values.
* common: wall_clock: Utilize constants for ms, us, and ns ratiosGravatar Morph2022-01-301-3/+3
|
* common/xbyak_api: Make BuildRegSet() constexprGravatar Lioncash2022-01-261-8/+8
| | | | | This allows us to eliminate any static constructors that would have been emitted due to the function not being constexpr.
* common/cpu_detect: Remove CPU family and modelGravatar Morph2021-12-131-12/+0
| | | | We currently do not make use of these fields, remove them for now.
* native_clock: Wait for less time in EstimateRDTSCFrequencyGravatar Morph2021-12-031-18/+18
| | | | | In my testing, waiting for 200ms provided the same level of precision as the previous implementation when estimating the RDTSC frequency. This significantly improves the yuzu executable launch times since we reduced the wait time from 3 seconds to 200 milliseconds.
* general: Replace high_resolution_clock with steady_clockGravatar Morph2021-12-021-3/+3
| | | | On some OSes, high_resolution_clock is an alias to system_clock and is not monotonic in nature. Replace this with steady_clock.
* xbyak: Update include pathGravatar Merry2021-08-152-2/+2
|
* common: Merge uint128 to a single header file with inlines.Gravatar bunnei2021-02-151-58/+0
|
* X86/NativeClock: Reimplement RTDSC access to be lock free.Gravatar Fernando Sahmkow2021-01-022-22/+41
|
* X86/NativeClock: Improve performance of clock calculations on hot path.Gravatar Fernando Sahmkow2021-01-022-5/+71
|
* xbyak_abi: Shorten std::size_t to size_tGravatar Lioncash2020-12-051-8/+8
| | | | Makes for less reading.
* xbyak_abi: Avoid implicit sign conversionsGravatar Lioncash2020-12-051-2/+2
|
* audio_core: Make shadowing and unused parameters errorsGravatar Lioncash2020-12-032-5/+6
| | | | Moves the audio code closer to enabling warnings as errors in general.