Commit Graph
116 Commits
Author SHA1 Message Date
Raymond Knopp 5e3e8a70ff addition of aarch64 native implementation for rotate_cpx_vector for the case output_shift=15 2025-09-02 08:28:13 +02:00
Robert Schmidt cbdcd2d015 Merge remote-tracking branch 'origin/issue-955' into integration_2025_w31 (!3545)
Fix overflow when negating minimum int16_t value in precoding

This closes #955

It prevents undefined behavior caused by the minimum int16_t value
(-32768) in two's complement representation. Because possible negation
by multiplying with -1 during precoding cause an overflows since +32768
cannot be represented in 16-bit signed integers and end up again in
-32768 because of overflow, here reveald by using the SIMD functions.

Workaround we use a slightly smaller number than 1 in Q15 Format to
prevent this error. Q15 representation of (integer value -32767) -1 +
2^-15 = -0.999969482421875
2025-07-31 15:26:21 +02:00
Mario Joa-Ng 905a8a495e mod: unit test code to compare CM and SIMD results on both antennas 2025-07-29 15:38:23 +00:00
Laurent THOMAS f57f6a8d4e factorize code that initialize all 0xff simd vectors 2025-07-24 13:48:36 +02:00
Matthias Mehlhose 04e35af5a5 mod: remove simde_ prefix and use oai_ prefix instead 2025-04-25 14:48:00 +02:00
Laurent THOMAS 7982a9da41 set correct parameter type, and fuse funcions that do same real/complex vector operations, doing this, fix a lot of unitary multiplications (else there would be numerous cast operations 2025-04-25 14:47:59 +02:00
Laurent THOMAS 95ae7772bf simplifly, reegroup functions in tools_defs.h 2025-04-25 14:47:59 +02:00
Laurent THOMAS 04fc2fbb2e make correct description of sub_cpx_vector16 and remove mixed dead code 2025-04-25 14:47:59 +02:00
Laurent THOMAS 4e3fab67a8 remove unused function with duplicated name to another one 2025-04-25 14:47:59 +02:00
HHI f470ea5946 mod: refactor PHY multiplications 2025-04-25 14:47:59 +02:00
Thomas Schlichter dd827c7bd8 refactor (co)sinus calculation out of phase_noise() into openair1/PHY/TOOLS/get_sin_cos.c 2025-04-10 12:37:19 +00:00
Laurent THOMAS 43b981247e error-simd-intrinsic-name 2025-02-04 13:21:43 +01:00
Laurent THOMAS 17bb19c7be Remove unused LOCALIZATION compile option 2025-01-23 14:10:33 +01:00
Laurent THOMAS f919246121 remove part of code using _m64 type (so old mmx instructions) 2025-01-14 10:07:59 +01:00
Laurent THOMAS 8f688c0064 replace assert by error logging when we call DFT with impossible size to deal with existing LTE UE 2024-11-08 12:19:23 +01:00
Laurent THOMAS 486cebce06 replace a printf() by a cleaner call to AssertFatal() 2024-11-07 17:08:18 +01:00
Laurent THOMAS fd83be4e77 change the alignment of OAI mutli-dim arrays from 16 to 32 bytes 2024-11-07 17:08:18 +01:00
Laurent THOMAS ac06f107dd add a optimzed complex vector multiplication function 2024-11-07 17:07:50 +01:00
Laurent THOMAS 576d468809 Clean up intermediate DFT macros, remove non-existing DFTs
DFT for 9216 and 73728 don't exist and/or assert, so remove them from
the list.
2024-10-30 18:04:43 +01:00
Laurent THOMAS f1f02ec0a1 use existing functions to retrieve (i)dft enum value 2024-10-29 18:47:15 +01:00
rmagueta 765bb64b5c Fix SNR based on SRS 2024-10-11 11:12:21 +01:00
Sakthivel Velumani 26b3fcca3b Remove SIMD operation for DMRS amplitude scaling
There was concern that someone in the future might call the function
with the wrong inputs. So, based on the discussion on the MR below
https://gitlab.eurecom.fr/oai/openairinterface5g/-/merge_requests/2916#note_132506
the SIMD for multiplying DMRS vector with amplitude is removed and is
now done with plain C (no SIMD).

The execution time for the function dmrs_amp_mult() in this commit is
10x higher that the previous commit.
2024-09-03 09:21:29 +02:00
Sakthivel Velumani 393363e253 Refactor PUSCH RE mapping
RE mapping time is reduced by 10x. Functions are made generic to be
later reused for PDSCH RE mapping at gNB.
2024-09-03 09:21:29 +02:00
Matthias Mehlhose d055cc0004 remove double define with nr_common.h 2024-08-30 11:49:12 +00:00
Bartosz Podrygajlo ed05c94c3e Fix signal_energy_nodc for lengths that are not multiples of 4 2024-07-30 09:44:00 +02:00
Robert Schmidt ebeb26528a Merge remote-tracking branch 'origin/NR_PSBCH_MERGE1' into integration_2024_w15 2024-04-15 14:34:36 +02:00
Jaroslava Fiedlerova de263d4a40 Merge remote-tracking branch 'origin/fft_size_fix_3072' into integration_2024_w15 2024-04-15 08:29:34 +02:00
Robert Schmidt 9a2e080f77 Apply clang-format 2024-04-13 08:54:15 +02:00
Raghavendra Dinavahi 94b23d1eb0 PSBCH RX TX and SLSS search procedures
- RX/TX Phy processing accg to 38.211, 38.212 Rel16
	- PSBCH simulator used to validate TX/RX phy processing
	- PSBCH SLSS Search procedures
	- PSBCH SIM also tests SLSS SEARCH
2024-04-12 16:07:00 +02:00
rakesh mundlamuri 47d1f8bb82 harmonizing the IDFT index at different places 2024-04-11 16:47:32 -04:00
francescomani 96ff859cb7 shiftTooManyBitsSigned 2024-04-09 16:53:12 +02:00
Laurent THOMAS 88fb3c3598 change type to c16_t around dmrs computation pieces of code 2024-03-26 20:57:31 +01:00
Laurent THOMAS 39400a458e change partially pbch detection to c16_t instead of hidden complex in int16_t and int32_t 2024-03-26 20:57:31 +01:00
Laurent THOMAS 18919576b7 rework PUCCH codec with c16_t type, rewrite large parts of functions to make readable code. Not fixed parts that are using SIMD. No change, the code is still same block by block (variable visibility narrowed, declaration can be shifted) 2024-01-04 10:21:15 +01:00
Quency Lin 8c62342335 Feat: Precoding with SIMDe 2023-12-12 15:51:06 +01:00
Quency Lin b240bc485f Feat: improve layer mapping by 32 bits assignment 2023-12-07 14:04:06 +01:00
Robert Schmidt 7420de8fc9 Merge remote-tracking branch 'origin/fix-doxygen' into integration_2023_w43 2023-10-30 10:23:45 +01:00
Laurent THOMAS bba9aac079 fix most of doxygen warnings and errors 2023-10-26 16:47:19 +02:00
rmagueta e14903cd96 Call __builtin_popcountll function to count the number of bits set in uint64_t variable for polar codes 2023-10-26 12:23:20 +02:00
Raymond Knopp a7bc282302 First-level of support for new aarch64 machines
Testing on Neoverse N1 (Ampere 3GHz). Tested only on a subset of phy-simulators.

- Changes:
- use SIMDE consistently
- adaptations of LDPC decoder generator for ARMv8 performance
- SIMDe modifications of Intel CRC to allow for aarch64 build.
  optimizations for 128-bit to improve performance of LDPC encode/decode
  on aarch64 (Neoverse 1)
- added BG2 files for 128-bit ldpc encoder (aarch64)
- testing on Xeon
- testing on x86
- minor changes to build/run on x86
- change in crc.h after returning to aarch64
- removed some warning in ldpc decoder generator for x86_64
- char
- Delete irrelevant constants
- Correctly declare variables
- Define stdbool for all architectures
- Remove definition of _MM_SHUFFLE and use SIMDE_MM_SHUFFLE
- Remove commented code
- Fix CMakeLists.txt
- Include SIMDE avx2 functions in tools_defs.h
2023-09-13 17:19:20 +02:00
Laurent THOMAS 206aa36a47 Make read-only globals const, additional fixes
- Global variables that are never written to are marked const
- Remove some EXTERN declaration
- Remove unused `log_mem_multi` from logging module
2023-08-18 14:20:37 +02:00
laurent 9121541b3c only cleaning 2023-07-10 12:00:25 +02:00
Roberto Louro Magueta 917ff8e97b Remove duplicated code 2023-06-26 12:51:31 +01:00
laurent b339460666 cleanup only 2023-04-28 16:25:24 +02:00
laurent b735f8bec6 ubsan fixes 2023-04-19 22:12:08 +02:00
laurent 8a10d1b222 add phy layer variable and persited arrays 2023-04-19 22:12:08 +02:00
Roberto Louro Magueta 6c590b900a Compute noise variance to be used in MMSE 2023-04-10 10:18:41 +01:00
Roberto Louro Magueta 0ab5b35867 To use c16maddShift(), c32x16maddShift(), c16multaddVectRealComplex(), and c16x32div() functions in nr_pdsch_channel_estimation() 2023-02-27 11:31:51 +01:00
Robert Schmidt 78a675922c Merge remote-tracking branch 'origin/develop-chModels-Doppler' into integration_2022_wk49 2022-12-07 19:04:43 +01:00
laurent d74b2bd19f improve dot_product function 2022-11-28 10:33:47 +01:00