mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
RDMA/ocrdma: Help gcc generate better code for ocrdma_srq_toggle_bit
gcc emits a surprising amount of code in order to flip a bit. One would think that a single instruction is enough. $ scripts/bloat-o-meter /tmp/ocrdma_verbs.o drivers/infiniband/hw/ocrdma/ocrdma_verbs.o add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-142 (-142) function old new delta ocrdma_post_srq_recv 498 460 -38 ocrdma_poll_cq 2010 1962 -48 ocrdma_discard_cqes 495 439 -56 All three calls of ocrdma_srq_toggle_bit happen within spinlocks, so saving a few useless instructions might be worthwhile. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Acked-by: Selvin Xavier <selvin.xavier@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
0ba5dc5cba
commit
ba64fdca63
@ -1591,10 +1591,7 @@ static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, int idx)
|
||||
int i = idx / 32;
|
||||
unsigned int mask = (1 << (idx % 32));
|
||||
|
||||
if (srq->idx_bit_fields[i] & mask)
|
||||
srq->idx_bit_fields[i] &= ~mask;
|
||||
else
|
||||
srq->idx_bit_fields[i] |= mask;
|
||||
srq->idx_bit_fields[i] ^= mask;
|
||||
}
|
||||
|
||||
static int ocrdma_hwq_free_cnt(struct ocrdma_qp_hwq_info *q)
|
||||
|
Loading…
x
Reference in New Issue
Block a user