> uint64_t val = cqe->res; // assuming non-error here > > if (cqe->flags & IORING_CQE_F_ZONE_FOO) > val |= (cqe->flags >> 16) << 32ULL; Jens, ULL in shift doesn't do anything for widening the result. You need val |= (uint64_t)(cqe->flags >> 16) << 32;