docstr: Populates `stages` dictionary with entries of the form:
  ir_name [str] => Function[(src: str, metadata: dict) -> str|bytes]
  The value of each entry may populate a `metadata` dictionary.
  Stages will be run sequentially (in inseriton order) and can communicate using `metadata`.
  All stages are expected to return a `str` object, except for the last stage which returns
  a `bytes` object for execution by the launcher.
docstr_tok: ["Populates","`","stages","`","dictionary","with","entries","of","the","form",":","ir_name","[","str","]","=",">","Function","[","(","src",":","str",",","metadata",":","dict",")","-",">","str|bytes","]","The","value","of","each","entry","may","populate","a","`","metadata","`","dictionary",".","Stages","will","be","run","sequentially","(","in","inseriton","order",")","and","can","communicate","using","`","metadata","`",".","All","stages","are","expected","to","return","a","`","str","`","object",",","except","for","the","last","stage","which","returns","a","`","bytes","`","object","for","execution","by","the","launcher","."]
code: def add_stages(self, stages: dict, options: object) -> None:
      """
      Populates `stages` dictionary with entries of the form:
      ir_name [str] => Function[(src: str, metadata: dict) -> str|bytes]
      The value of each entry may populate a `metadata` dictionary.
      Stages will be run sequentially (in inseriton order) and can communicate using `metadata`.
      All stages are expected to return a `str` object, except for the last stage which returns
      a `bytes` object for execution by the launcher.
      """
      raise NotImplementedError
  
file_path: triton/python/triton/backends/compiler.py
imports: from abc import ABCMeta, abstractmethod, abstractclassmethod
  import os
  import subprocess
  import re
label_desc: Use image node_id 6 for calling the BaseBackend obj's underlying member method code with example usage: obj.add_stages(stages, options) without return types