[devfunc] Re-implement ballot using AMDGCN builtins

- As the signature of `amdgcn.icmp` is changed for next-gen chip, using
  clang builtins is portable way to hide that details.


[ROCm/clr commit: a7a4d80f54]
Este commit está contenido en:
Michael LIAO
2019-04-29 15:07:11 -04:00
padre fbadd3f6cd
commit e8de293fc5
@@ -736,13 +736,21 @@ int __any(int predicate) {
__device__
inline
unsigned long long int __ballot(int predicate) {
#if defined(__HCC__)
return __llvm_amdgcn_icmp_i32(predicate, 0, ICMP_NE);
#else
return __builtin_amdgcn_uicmp(predicate, 0, ICMP_NE);
#endif
}
__device__
inline
unsigned long long int __ballot64(int predicate) {
#if defined(__HCC__)
return __llvm_amdgcn_icmp_i32(predicate, 0, ICMP_NE);
#else
return __builtin_amdgcn_uicmp(predicate, 0, ICMP_NE);
#endif
}
// hip.amdgcn.bc - lanemask