Added the following mask tests: __any(), __all(), __none() for all supported targets.
This allows for more efficient code generation of KNC.
This commit is contained in:
@@ -428,6 +428,18 @@ static FORCEINLINE __vec16_i1 __movmsk(__vec16_i1 mask) {
|
||||
return _mm512_kmov(mask);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __any(__vec16_i1 mask) {
|
||||
return (mask!=0);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __all(__vec16_i1 mask) {
|
||||
return (mask=0xFFFF);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __none(__vec16_i1 mask) {
|
||||
return (mask==0);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __equal_i1(__vec16_i1 a, __vec16_i1 b) {
|
||||
return _mm512_knot( _mm512_kandn(a, b));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user