(self, op_fn)
| 76 | """Test that we can parse tinygrad kernel disassembly.""" |
| 77 | |
| 78 | def _get_kernel_code(self, op_fn) -> bytes: |
| 79 | from tinygrad import Tensor |
| 80 | from tinygrad.helpers import Target |
| 81 | from tinygrad.codegen import to_program |
| 82 | from tinygrad.renderer.llvmir import AMDLLVMRenderer |
| 83 | from tinygrad.runtime.support.elf import elf_loader |
| 84 | from tinygrad.uop.ops import Ops |
| 85 | |
| 86 | result = op_fn(Tensor) |
| 87 | linear = result.schedule_linear() |
| 88 | sink_items = [call for call in linear.src if call.src[0].op == Ops.SINK] |
| 89 | assert len(sink_items) > 0, "No SINK in schedule" |
| 90 | renderer = AMDLLVMRenderer(Target("AMD", arch='gfx1100')) |
| 91 | prg = to_program(sink_items[0].src[0], renderer) |
| 92 | lib = renderer.compiler.compile(prg.src[3].arg) |
| 93 | return next(s.content for s in elf_loader(lib)[1] if s.name == ".text") |
| 94 | |
| 95 | def test_simple_add_kernel(self): |
| 96 | """Generate a simple add kernel from tinygrad and verify disassembly.""" |
no test coverage detected