GCC/Clang don't support vec_sub or vec_subs, but IBM compiler does.
#include "zbuild.h"
#include "arch_functions.h"
-#include <vecintrin.h>
+#include "vx_intrins.h"
typedef unsigned char uv16qi __attribute__((vector_size(16)));
typedef unsigned int uv4si __attribute__((vector_size(16)));
#include "zbuild.h"
#include "deflate.h"
-#include <vecintrin.h>
+#include "vx_intrins.h"
static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize) {
const vector unsigned short vmx_wsize = vec_splats(wsize);
--- /dev/null
+#ifndef S390_VX_INTRINS_H
+#define S390_VX_INTRINS_H
+
+#include <vecintrin.h>
+
+#ifndef vec_sub
+#define vec_sub(a, b) ((a) - (b))
+#endif
+#ifndef vec_subs
+static inline uv8hi vec_subs_u16(uv8hi a, uv8hi b) {
+ return a - vec_min(a, b);
+}
+#define vec_subs(a, b) vec_subs_u16((a), (b))
+#endif
+
+#endif
int main(void) {
unsigned char a __attribute__((vector_size(16))) = { 0 };
unsigned char b __attribute__((vector_size(16))) = { 0 };
- a = vec_sub(a, b);
+ a = vec_min(a, b);
a = vec_xl(0, (unsigned char *)0);
return a[0];
}"
int main(void) {
unsigned char a __attribute__((vector_size(16))) = { 0 };
unsigned char b __attribute__((vector_size(16))) = { 0 };
- a = vec_sub(a, b);
+ a = vec_min(a, b);
a = vec_xl(0, (unsigned char *)0);
return a[0];
}