https://hal.archives-ouvertes.fr/hal-03445821
Raw File
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
back to top