]> git.proxmox.com Git - ceph.git/blame - ceph/src/isa-l/igzip/bitbuf2.asm
bump version to 18.2.2-pve1
[ceph.git] / ceph / src / isa-l / igzip / bitbuf2.asm
CommitLineData
7c673cae
FG
1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2; Copyright(c) 2011-2016 Intel Corporation All rights reserved.
3;
4; Redistribution and use in source and binary forms, with or without
5; modification, are permitted provided that the following conditions
6; are met:
7; * Redistributions of source code must retain the above copyright
8; notice, this list of conditions and the following disclaimer.
9; * Redistributions in binary form must reproduce the above copyright
10; notice, this list of conditions and the following disclaimer in
11; the documentation and/or other materials provided with the
12; distribution.
13; * Neither the name of Intel Corporation nor the names of its
14; contributors may be used to endorse or promote products derived
15; from this software without specific prior written permission.
16;
17; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
30%include "options.asm"
f91f0fd5 31%include "stdmac.asm"
7c673cae
FG
32
33; Assumes m_out_buf is a register
34; Clobbers RCX
35; code is clobbered
f91f0fd5
TL
36; write_bits_always m_bits, m_bit_count, code, count, m_out_buf
37%macro write_bits 5
7c673cae
FG
38%define %%m_bits %1
39%define %%m_bit_count %2
40%define %%code %3
41%define %%count %4
42%define %%m_out_buf %5
7c673cae 43
f91f0fd5 44 SHLX %%code, %%code, %%m_bit_count
7c673cae 45
f91f0fd5 46 or %%m_bits, %%code
7c673cae 47 add %%m_bit_count, %%count
7c673cae 48
f91f0fd5 49 mov [%%m_out_buf], %%m_bits
7c673cae
FG
50 mov rcx, %%m_bit_count
51 shr rcx, 3 ; rcx = bytes
52 add %%m_out_buf, rcx
53 shl rcx, 3 ; rcx = bits
f91f0fd5 54 and %%m_bit_count, 0x7
7c673cae 55
f91f0fd5 56 SHRX %%m_bits, %%m_bits, rcx
7c673cae 57%endm
224ce89b
WB
58
59%macro write_dword 2
60%define %%data %1d
61%define %%addr %2
f91f0fd5 62 mov [%%addr], %%data
224ce89b
WB
63 add %%addr, 4
64%endm