class_docstr: Device allocations are lowered to TVMBackend* calls
  
  This test validates the current behavior of LowerTVMBuiltin.  This
  unit test may be improved in the future by addressing:
  
  - TVMScript always produces "handle" dtype for
    `T.tvm_throw_last_error`, while LowerTVMBuiltin outputs "int32"
    dtype.
class_docstr_tok: ["Device","allocations","are","lowered","to","TVMBackend","*","calls","This","test","validates","the","current","behavior","of","LowerTVMBuiltin",".","This","unit","test","may","be","improved","in","the","future","by","addressing",":","-","TVMScript","always","produces","``","handle","''","dtype","for","`","T.tvm_throw_last_error","`",",","while","LowerTVMBuiltin","outputs","``","int32","''","dtype","."]
code: def test_compare(self, before, expected, transform):
      after = transform(before)
      assert_structural_equal_ignore_global_symbol(
          after, expected, map_free_vars=True
      )
  
imports: import tvm
  import tvm.testing
  from tvm import te
  from tvm.script import tir
  import numpy
  from tvm.tir.schedule.testing import assert_structural_equal_ignore_global_symbol
label_desc: Use image node_id 3 for calling the TestLowerDeviceAllocate obj's underlying member method code with example usage: obj.test_compare(before, expected, transform) without return types