https://hal.archives-ouvertes.fr/hal-03445821
vsa.h
/*
Copyright Universite de Versailles Saint-Quentin en Yvelines 2009
AUTHORS: Sebastien Briais, Sid Touati
This file is part of RS.
RS is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
RS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with RS. If not, see
<http://www.gnu.org/licenses/>.
*/
#ifndef __RS_VSA_H
#define __RS_VSA_H
#include <SCEDA/graph.h>
#include <SCEDA/hashmap.h>
#include <GDD/opcode.h>
#include <GDD/dag.h>
/** Build a DDG which is an extension of the original acyclic DDG such
that it ensures a saturating schedule for the given killing
function.
It is an implementation of Algorithm 1 of Sid Touati's article
"Register Saturation in Instruction Level Parallelism".
Vertices and edges labels of the original graph are copied.
@param[in] ddg = GDD_DAG
@param[in] type = considered type
@param[in] killing = killing function
@param[out] dummy_op = opcode created to represent the exit node
for values without killers (must be deleted manually)
@return a DDG */
SCEDA_Graph *RS_ensure_saturating_schedule(GDD_DAG *dag, const char *type, SCEDA_HashMap *killing, GDD_Opcode **dummy_op);
#endif