Reduces intrinsics to their bodies as defined in
This function operates on the AST level; meaning, it takes in a
building_blocks.ComputationBuildingBlock as an argument and returns one as
replace_intrinsics_with_bodies is intended to be the standard reduction
function, which will reduce all currently implemented intrinsics to their
Notice that the success of this function depends on the contract of
intrinsic_bodies.get_intrinsic_bodies, that the dict returned by that function
is ordered from more complex intrinsic to less complex intrinsics.
comp: Instance of
building_blocks.ComputationBuildingBlockin which we wish to replace all intrinsics with their bodies.
An instance of
building_blocks.ComputationBuildingBlock with all intrinsics
intrinsic_bodies.py replaced with their bodies.