[Device Function] Fix implementation of __bitinsert_u64

- It's a common mistake by assuming 1 << shamt would be promoted to
  64-bit, if shamt is a 64-bit integer. That's not the case. Replace
  that left shift to a 64-bit one to ensure it won't fall into undefined
  behavior.
- Fix the host-side implementation as well for device function testing.


[ROCm/hip commit: 9bd2d5746d]
Este commit está contenido en:
Michael LIAO
2019-04-26 14:51:25 -04:00
padre bdb3fd30d5
commit e637e72364
Se han modificado 2 ficheros con 3 adiciones y 3 borrados
@@ -46,7 +46,7 @@ T bit_insert(T src0, T src1, unsigned int src2, unsigned int src3) {
unsigned int bits = sizeof(T) * 8;
T offset = src2 & (bits - 1);
T width = src3 & (bits - 1);
T mask = (1 << width) - 1;
T mask = (((T)1) << width) - 1;
return ((src0 & ~(mask << offset)) | ((src1 & mask) << offset));
}