Commit Graph

37 Commits

Author SHA1 Message Date
Compostella, Jeremy
d25fd8710d BaseMemoryLibSse2: Take advantage of write combining buffers
The current SSE2 implementation of the ZeroMem(), SetMem(),
SetMem16(), SetMem32 and SetMem64 functions is writing 16 bytes per 16
bytes. It hurts the performances so bad that this is even slower than
a simple 'rep stos' (4% slower) in regular DRAM.

To take full advantages of the 'movntdq' instruction it is better to
"queue" a total of 64 bytes in the write combining buffers.  This
patch implement such a change.  Below is a table where I measured
(with 'rdtsc') the time to write an entire 100MB RAM buffer. These
functions operate almost two times faster.

| Function | Arch | Untouched | 64 bytes | Result |
|----------+------+-----------+----------+--------|
| ZeroMem  | Ia32 |  17765947 |  9136062 | 1.945x |
| ZeroMem  | X64  |  17525170 |  9233391 | 1.898x |
| SetMem   | Ia32 |  17522291 |  9137272 | 1.918x |
| SetMem   | X64  |  17949261 |  9176978 | 1.956x |
| SetMem16 | Ia32 |  18219673 |  9372062 | 1.944x |
| SetMem16 | X64  |  17523331 |  9275184 | 1.889x |
| SetMem32 | Ia32 |  18495036 |  9273053 | 1.994x |
| SetMem32 | X64  |  17368864 |  9285885 | 1.870x |
| SetMem64 | Ia32 |  18564473 |  9241362 | 2.009x |
| SetMem64 | X64  |  17506951 |  9280148 | 1.886x |

Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2020-10-16 01:12:05 +00:00
Michael D Kinney
9344f09215 MdePkg: Replace BSD License with BSD+Patent License
https://bugzilla.tianocore.org/show_bug.cgi?id=1373

Replace BSD 2-Clause License with BSD+Patent License.  This change is
based on the following emails:

  https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html
  https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html

RFCs with detailed process for the license change:

  V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html
  V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html
  V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2019-04-09 10:58:13 -07:00
Shenglei Zhang
94cf7d235a MdePkg/BaseMemoryLibSse2: Remove .S files for IA32 and X64 arch
.nasm file has been added for X86 arch. .S assembly code
is not required any more.
https://bugzilla.tianocore.org/show_bug.cgi?id=1594

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2019-04-03 13:27:44 +08:00
Liming Gao
13688930ae MdePkg: Remove X86 ASM and S files
NASM has replaced ASM and S files.
1. Remove ASM from all modules.
2. Remove S files from the drivers only.
3. https://bugzilla.tianocore.org/show_bug.cgi?id=881
After NASM is updated, S files can be removed from Library.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
2018-06-07 15:26:27 +08:00
Hao Wu
102b4c7cdd MdePkg BaseMemoryLibSse2: Add SSE2 implementation of API IsZeroBuffer()
Add the implementation of API IsZeroBuffer() via assembly in
BaseMemoryLibSse2.

The assembly codes use SSE2 XMM registers and related instructions.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-08-22 18:54:31 +08:00
Jordan Justen
733c293541 MdePkg BaseMemoryLibSse2: Convert Ia32/CopyMem.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/CopyMem.asm to Ia32/CopyMem.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:34 +08:00
Jordan Justen
861b36d34f MdePkg BaseMemoryLibSse2: Convert Ia32/SetMem.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/SetMem.asm to Ia32/SetMem.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:34 +08:00
Jordan Justen
39a993ff38 MdePkg BaseMemoryLibSse2: Convert Ia32/SetMem16.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/SetMem16.asm to Ia32/SetMem16.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:33 +08:00
Jordan Justen
ff3ca56981 MdePkg BaseMemoryLibSse2: Convert Ia32/SetMem32.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/SetMem32.asm to Ia32/SetMem32.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:32 +08:00
Jordan Justen
dabe650016 MdePkg BaseMemoryLibSse2: Convert Ia32/SetMem64.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/SetMem64.asm to Ia32/SetMem64.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:31 +08:00
Jordan Justen
37968f4006 MdePkg BaseMemoryLibSse2: Convert Ia32/ZeroMem.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/ZeroMem.asm to Ia32/ZeroMem.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:31 +08:00
Jordan Justen
2ee36c26b5 MdePkg BaseMemoryLibSse2: Convert Ia32/CompareMem.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/CompareMem.asm to Ia32/CompareMem.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:30 +08:00
Jordan Justen
77ae4157ab MdePkg BaseMemoryLibSse2: Convert Ia32/ScanMem8.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/ScanMem8.asm to Ia32/ScanMem8.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:29 +08:00
Jordan Justen
4b6f1d621b MdePkg BaseMemoryLibSse2: Convert Ia32/ScanMem16.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/ScanMem16.asm to Ia32/ScanMem16.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:28 +08:00
Jordan Justen
78a0563e2a MdePkg BaseMemoryLibSse2: Convert Ia32/ScanMem32.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/ScanMem32.asm to Ia32/ScanMem32.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:28 +08:00
Jordan Justen
99138cf97e MdePkg BaseMemoryLibSse2: Convert Ia32/ScanMem64.asm to NASM
The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
Ia32/ScanMem64.asm to Ia32/ScanMem64.nasm

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2016-06-28 09:51:27 +08:00
Gao, Liming
1be8039054 MdePkg: Fix Clang build failure
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gao, Liming <liming.gao@intel.com>
Reviewed-by: Andrew Fish <afish@apple.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15784 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-11 07:05:49 +00:00
myronporter
2fc59a003e Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10604 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-25 21:56:02 +00:00
hhtian
c33c6476ca Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10411 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23 16:23:28 +00:00
xli24
132f41f0a9 Replace .globl with ASM_GLOBAL
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8346 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-20 10:22:09 +00:00
eric_tian
d3c0cbcecc cleanup the .S file to wrap all public symbols with ASM_PFX() macro,which is used to generate underscore prior to public symbol or not within various GCC distribution versions.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8316 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-15 03:21:08 +00:00
qhuang8
373ade0eb6 Update copyright for files modified in this year
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7148 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-29 14:07:07 +00:00
qhuang8
b1ff428c96 Update to use DOS format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6360 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-03 09:25:10 +00:00
lgao4
2bfb60098f 1. Change 0 == Length style to Length == 0
2. Clean BasePeCoff library instance, only keep one copy PeCoffLoaderEx.c file for IA32, X64 and IPF arch
3. Clean the confused comments

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5927 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-18 14:27:39 +00:00
jwang36
15d10a4c78 Changed to pass the build with Visual Studio 2005
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4074 6f19259b-4bc3-4df7-8a09-765794883524
2007-10-10 07:03:04 +00:00
vanjeff
f1baef624f 1. Port X64, IPF and EBC arch for BaseLib
2. Port X64 arch codes for BaseMemoryLibRepStr and BaseMemoryLibSee2


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2955 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-02 09:34:25 +00:00
AJFISH
f734a10ab1 Removed CommonHeader.h generated file from the MdePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2922 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-29 23:22:13 +00:00
vanjeff
e1f414b6a7 Import some basic libraries instances for Mde Packages.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2704 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-22 03:21:45 +00:00
lhauch
586cd1f1f4 Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing builds. Also updated the SPD and FPD files UiNames
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2616 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-01 14:49:55 +00:00
qhuang8
b7089db120 1.Fix .global issue in GAS (EdkT207).
2.Fix Label start with @ (EdkT208).

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1610 6f19259b-4bc3-4df7-8a09-765794883524
2006-09-25 10:05:26 +00:00
bxing
eb227e96bd 1. Updated function headers for all assembly function
2. Optimized register usage in SetMemXX functions in all lib instances
3. Fixed a logical error in CopyMem for all lib instances


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1139 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-28 07:28:19 +00:00
qhuang8
f23c214dca Fix bug in .S files.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@952 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-13 05:58:02 +00:00
qhuang8
d08b357f8a 1.Fix SetMem64.S to not use SSE3 instruction
2.Make sure NULL-terminator can be appended.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@945 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-13 04:19:34 +00:00
bxing
db8f40e294 1. Added '#pragma pack' directive in BaseLib.h for the structure IA32_DESCRIPTOR
2. Updated SetMem64.asm's to remove any SSE3 instructions.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@901 6f19259b-4bc3-4df7-8a09-765794883524
2006-07-12 09:23:28 +00:00
bbahnsen
975201130c Use capital S for GCC assembly. This enables pre-processing for PCD support.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@576 6f19259b-4bc3-4df7-8a09-765794883524
2006-06-20 21:50:44 +00:00
bxing
49c80af423 1. Fixed incorrect ASSERT conditions in wrapper functions.
2. Removed unnecessary SUB instructions in CompareMem.asm

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@318 6f19259b-4bc3-4df7-8a09-765794883524
2006-05-30 05:42:49 +00:00
bbahnsen
6e3b8c4716 Fix capitalization issues
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@208 6f19259b-4bc3-4df7-8a09-765794883524
2006-05-19 19:28:24 +00:00