+cust_prefix##_at_loc_no_check(const cust_prefix##_t *cdqf, cust_data_t *data, \
+ ul_dqfifo_loc_t loc) \
+{ \
+ *data = cdqf->buff[cust_prefix##_loc2idx(cdqf, loc)]; \
+} \
+\
+cust_static_inline int \
+cust_prefix##_at_loc(const cust_prefix##_t *cdqf, cust_data_t *data, \
+ ul_dqfifo_loc_t loc) \
+{ \
+ ul_dqfifo_loc_t locin = cdqf->dqf.locin; \
+ ul_dqfifo_loc_t locdiff; \
+ cust_barrier; \
+ cust_prefix##_at_loc_no_check(cdqf, data, loc); \
+ cust_barrier; \
+ locdiff = locin - loc; \
+ if (locdiff > cdqf->dqf.locmask + 1) \
+ return 0; \
+ locdiff = cdqf->dqf.locin - loc; \
+ if (locdiff > cdqf->dqf.locmask + 1) \
+ return 0; \
+ return 1; \
+} \
+\
+cust_static_inline void \