code: def has_bitshifts(self):
          
  
          def _has_bitshifts(expr):
              if isinstance(expr, pyvex.IRExpr.Binop):
                  return expr.op.startswith("Iop_Shl") or expr.op.startswith("Iop_Shr") \
                         or expr.op.startswith("Iop_Sar")
              return False
  
          found_bitops = False
  
          for block in self._function.blocks:
              if block.size == 0:
                  continue
              for stmt in block.vex.statements:
                  if isinstance(stmt, pyvex.IRStmt.Put):
                      found_bitops = found_bitops or _has_bitshifts(stmt.data)
                  elif isinstance(stmt, pyvex.IRStmt.WrTmp):
                      found_bitops = found_bitops or _has_bitshifts(stmt.data)
  
              if found_bitops:
                  break
  
          if found_bitops:
              return { CodeTags.HAS_BITSHIFTS }
          return None
docs: Detects if there is any bitwise operation in the function.
  
          :return: Tags.