forked from OSchip/llvm-project
[PPC] Add vec_absd functions to altivec.h
This patch corresponds to review https://reviews.llvm.org/D26073. Committing on behalf of Sean Fertile. llvm-svn: 285679
This commit is contained in:
parent
dd313b0673
commit
251f6dd93d
|
@ -284,6 +284,11 @@ BUILTIN(__builtin_altivec_vpopcnth, "V8UsV8Us", "")
|
|||
BUILTIN(__builtin_altivec_vpopcntw, "V4UiV4Ui", "")
|
||||
BUILTIN(__builtin_altivec_vpopcntd, "V2ULLiV2ULLi", "")
|
||||
|
||||
// Absolute difference built-ins
|
||||
BUILTIN(__builtin_altivec_vabsdub, "V16UcV16UcV16Uc", "")
|
||||
BUILTIN(__builtin_altivec_vabsduh, "V8UsV8UsV8Us", "")
|
||||
BUILTIN(__builtin_altivec_vabsduw, "V4UiV4UiV4Ui", "")
|
||||
|
||||
// VSX built-ins.
|
||||
|
||||
BUILTIN(__builtin_vsx_lxvd2x, "V2divC*", "")
|
||||
|
|
|
@ -163,6 +163,26 @@ vec_abss(vector signed int __a) {
|
|||
__a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
|
||||
}
|
||||
|
||||
/* vec_absd */
|
||||
#if defined(__POWER9_VECTOR__)
|
||||
|
||||
static __inline__ vector unsigned char __ATTRS_o_ai
|
||||
vec_absd(vector unsigned char __a, vector unsigned char __b) {
|
||||
return __builtin_altivec_vabsdub(__a, __b);
|
||||
}
|
||||
|
||||
static __inline__ vector unsigned short __ATTRS_o_ai
|
||||
vec_absd(vector unsigned short __a, vector unsigned short __b) {
|
||||
return __builtin_altivec_vabsduh(__a, __b);
|
||||
}
|
||||
|
||||
static __inline__ vector unsigned int __ATTRS_o_ai
|
||||
vec_absd(vector unsigned int __a, vector unsigned int __b) {
|
||||
return __builtin_altivec_vabsduw(__a, __b);
|
||||
}
|
||||
|
||||
#endif /* End __POWER9_VECTOR__ */
|
||||
|
||||
/* vec_add */
|
||||
|
||||
static __inline__ vector signed char __ATTRS_o_ai
|
||||
|
|
|
@ -803,3 +803,19 @@ vector unsigned __int128 test68(void) {
|
|||
// CHECK-NEXT: ret <1 x i128>
|
||||
return vec_parity_lsbb (vsi128a);
|
||||
}
|
||||
|
||||
vector unsigned char test69(void) {
|
||||
// CHECK-BE: call <16 x i8> @llvm.ppc.altivec.vabsdub(<16 x i8> {{.+}}, <16 x i8> {{.+}})
|
||||
// CHECK: call <16 x i8> @llvm.ppc.altivec.vabsdub(<16 x i8> {{.+}}, <16 x i8> {{.+}})
|
||||
return vec_absd(vuca, vucb);
|
||||
}
|
||||
vector unsigned short test70(void) {
|
||||
// CHECK-BE: call <8 x i16> @llvm.ppc.altivec.vabsduh(<8 x i16> {{.+}}, <8 x i16> {{.+}})
|
||||
// CHECK: call <8 x i16> @llvm.ppc.altivec.vabsduh(<8 x i16> {{.+}}, <8 x i16> {{.+}})
|
||||
return vec_absd(vusa, vusb);
|
||||
}
|
||||
vector unsigned int test71(void) {
|
||||
// CHECK-BE: call <4 x i32> @llvm.ppc.altivec.vabsduw(<4 x i32> {{.+}}, <4 x i32> {{.+}})
|
||||
// CHECK: call <4 x i32> @llvm.ppc.altivec.vabsduw(<4 x i32> {{.+}}, <4 x i32> {{.+}})
|
||||
return vec_absd(vuia, vuib);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue