*/
/*
- * Copyright (C) 2013, 2014 Eric Biggers
+ * Copyright (C) 2013-2016 Eric Biggers
*
* This file is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* details.
*
* You should have received a copy of the GNU Lesser General Public License
- * along with this file; if not, see http://www.gnu.org/licenses/.
+ * along with this file; if not, see https://www.gnu.org/licenses/.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+#include "wimlib/cpu_features.h"
#include "wimlib/lzms_common.h"
#include "wimlib/unaligned.h"
-#include "wimlib/x86_cpu_features.h"
#ifdef __x86_64__
# include <emmintrin.h>
" pcmpestri $0x0, (%[p]), %[potential_opcodes] \n"
" jnc 1b \n"
"2: \n"
+ #ifdef __ILP32__ /* x32 ABI (x86_64 with 32-bit pointers) */
+ " add %%ecx, %[p] \n"
+ #else
" add %%rcx, %[p] \n"
+ #endif
: [p] "+r" (p)
: [potential_opcodes] "x" (potential_opcodes), "a" (6), "d" (16)
: "rcx", "cc"
tail_ptr = &data[size - 16];
#ifdef __x86_64__
- if (x86_have_cpu_feature(X86_CPU_FEATURE_SSE4_2)) {
+ if (cpu_features & X86_CPU_FEATURE_SSE4_2) {
u8 saved_byte = *tail_ptr;
*tail_ptr = 0xE8;
for (;;) {