[AVX512]: movmsk/any/all/none

This commit is contained in:
Anton Mitrokhin
2015-05-07 14:19:35 +03:00
parent 7c9d9f6ee6
commit 28fda1a013

View File

@@ -185,10 +185,29 @@ svml_stubs(double,d,WIDTH)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; reductions ;; reductions
declare i64 @__movmsk(<WIDTH x i1>) nounwind readnone define i64 @__movmsk(<WIDTH x i1>) nounwind readnone alwaysinline {
declare i1 @__any(<WIDTH x i1>) nounwind readnone %intmask = bitcast <WIDTH x i1> %0 to i16
declare i1 @__all(<WIDTH x i1>) nounwind readnone %res = zext i16 %intmask to i64
declare i1 @__none(<WIDTH x i1>) nounwind readnone ret i64 %res
}
define i1 @__any(<WIDTH x i1>) nounwind readnone alwaysinline {
%intmask = bitcast <WIDTH x i1> %0 to i16
%res = icmp ne i16 %intmask, 0
ret i1 %res
}
define i1 @__all(<WIDTH x i1>) nounwind readnone alwaysinline {
%intmask = bitcast <WIDTH x i1> %0 to i16
%res = icmp eq i16 %intmask, 65535
ret i1 %res
}
define i1 @__none(<WIDTH x i1>) nounwind readnone alwaysinline {
%intmask = bitcast <WIDTH x i1> %0 to i16
%res = icmp eq i16 %intmask, 0
ret i1 %res
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; horizontal int8/16 ops ;; horizontal int8/16 ops