]> wimlib.net Git - wimlib/blobdiff - include/wimlib/decompress.h
make_huffman_decode_table(): Add SSE2 entry filling (with aliasing handled correctly)
[wimlib] / include / wimlib / decompress.h
index c020cbadeb64ea35394fc04bedd3af00b89170b9..059e182056aa274f73a01e2e2d48b462f9fdc1ae 100644 (file)
@@ -76,7 +76,7 @@ bitstream_ensure_bits(struct input_bitstream *istream, unsigned num_bits)
                        unsigned shift = sizeof(input_bitbuf_t) * 8 - 16 -
                                         istream->bitsleft;
                        istream->bitbuf |= (input_bitbuf_t)le16_to_cpu(
                        unsigned shift = sizeof(input_bitbuf_t) * 8 - 16 -
                                         istream->bitsleft;
                        istream->bitbuf |= (input_bitbuf_t)le16_to_cpu(
-                                               *(u16*)istream->data) << shift;
+                                               *(le16*)istream->data) << shift;
                        istream->data += 2;
                        istream->bitsleft += 16;
                        istream->data_bytes_left -= 2;
                        istream->data += 2;
                        istream->bitsleft += 16;
                        istream->data_bytes_left -= 2;
@@ -189,7 +189,7 @@ read_huffsym_near_end_of_input(struct input_bitstream *istream,
  *                             directory in the decode_table, as the
  *                             decode_table contains 2**table_bits entries.
  */
  *                             directory in the decode_table, as the
  *                             decode_table contains 2**table_bits entries.
  */
-static inline int
+static _always_inline_attribute int
 read_huffsym(struct input_bitstream *istream,
             const u16 decode_table[],
             const u8 lens[],
 read_huffsym(struct input_bitstream *istream,
             const u16 decode_table[],
             const u8 lens[],
@@ -237,8 +237,11 @@ read_huffsym(struct input_bitstream *istream,
        return ret;
 }
 
        return ret;
 }
 
-extern int make_huffman_decode_table(u16 decode_table[], unsigned num_syms,
-                                    unsigned num_bits, const u8 lengths[],
-                                    unsigned max_codeword_len);
+extern int
+make_huffman_decode_table(u16 decode_table[], unsigned num_syms,
+                         unsigned num_bits, const u8 lengths[],
+                         unsigned max_codeword_len);
+
+#define DECODE_TABLE_ALIGNMENT 16
 
 #endif /* _WIMLIB_DECOMPRESS_H */
 
 #endif /* _WIMLIB_DECOMPRESS_H */