• Paul Burton's avatar
    MIPS: bitops: Only use ins for bit 16 or higher · 3d2920cf
    Paul Burton authored
    set_bit() can set bits 0-15 using an ori instruction, rather than
    loading the value -1 into a register & then using an ins instruction.
    
    That is, rather than the following:
    
      li   t0, -1
      ll   t1, 0(t2)
      ins  t1, t0, 4, 1
      sc   t1, 0(t2)
    
    We can have the simpler:
    
      ll   t1, 0(t2)
      ori  t1, t1, 0x10
      sc   t1, 0(t2)
    
    The or path already allows immediates to be used, so simply restricting
    the ins path to bits that don't fit in immediates is sufficient to take
    advantage of this.
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    Cc: Huacai Chen <chenhc@lemote.com>
    Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Cc: linux-kernel@vger.kernel.org
    3d2920cf
bitops.h 15.4 KB