class_docstr: Buffer variable with content type, makes load store easily.
  
  Do not create it directly, create use IRBuilder.
  
  Array access through a BufferVar must use the same number of
  indices as the underlying buffer was declared to have.
  
  Examples
  --------
  In the follow example, x is BufferVar.
  :code:`x[0] = ...` directly emit a BufferStore to the IRBuilder,
  :code:`x[10]` translates to BufferLoad.
  
  .. code-block:: python
  
      # The following code generate IR for x[0] = x[10] + 1
      ib = tvm.tir.ir_builder.create()
      x = ib.allocate("float32", 20)
      x[0] = x[10] + 1
  
      # Array access using a multidimensional index
      y = ib.allocate("float32", (32, 32))
      y[2, 31] = 0.
  
  See Also
  --------
  IRBuilder.pointer
  IRBuilder.allocate
code: def __getitem__(self, index):
      index = self._normalize_index(index)
      return _expr.BufferLoad(self._buffer, index)
  
imports: import tvm
  from tvm._ffi.base import string_types
  from tvm.runtime import ObjectGeneric, convert, const
  from tvm.ir import container
  from .None import stmt
  from .None import expr
  from .None import buffer
  from .None import op
label_desc: Use image node_id 5 for calling the BufferVar obj's underlying member method code with example usage: obj.__getitem__(index) and returns: _expr