RetroArch
spirv_cfg.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2016-2018 ARM Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef SPIRV_CROSS_CFG_HPP
18 #define SPIRV_CROSS_CFG_HPP
19 
20 #include "spirv_common.hpp"
21 #include <assert.h>
22 
23 namespace spirv_cross
24 {
25 class Compiler;
26 class CFG
27 {
28 public:
29  CFG(Compiler &compiler, const SPIRFunction &function);
30 
32  {
33  return compiler;
34  }
35 
36  const Compiler &get_compiler() const
37  {
38  return compiler;
39  }
40 
41  const SPIRFunction &get_function() const
42  {
43  return func;
44  }
45 
47  {
49  }
50 
52  {
53  int v = visit_order[block];
54  assert(v > 0);
55  return uint32_t(v);
56  }
57 
59 
60  const std::vector<uint32_t> &get_preceding_edges(uint32_t block) const
61  {
62  return preceding_edges[block];
63  }
64 
65  const std::vector<uint32_t> &get_succeeding_edges(uint32_t block) const
66  {
67  return succeeding_edges[block];
68  }
69 
70  template <typename Op>
71  void walk_from(std::unordered_set<uint32_t> &seen_blocks, uint32_t block, const Op &op) const
72  {
73  if (seen_blocks.count(block))
74  return;
75  seen_blocks.insert(block);
76 
77  op(block);
78  for (auto b : succeeding_edges[block])
79  walk_from(seen_blocks, b, op);
80  }
81 
82 private:
85  std::vector<std::vector<uint32_t>> preceding_edges;
86  std::vector<std::vector<uint32_t>> succeeding_edges;
87  std::vector<uint32_t> immediate_dominators;
88  std::vector<int> visit_order;
89  std::vector<uint32_t> post_order;
90 
96 
97  bool is_back_edge(uint32_t to) const;
98 };
99 
101 {
102 public:
103  DominatorBuilder(const CFG &cfg);
104 
105  void add_block(uint32_t block);
107  {
108  return dominator;
109  }
110 
112 
113 private:
114  const CFG &cfg;
116 };
117 } // namespace spirv_cross
118 
119 #endif
const std::vector< uint32_t > & get_succeeding_edges(uint32_t block) const
Definition: spirv_cfg.hpp:65
Compiler & compiler
Definition: spirv_cfg.hpp:83
set set set set set set set macro pixldst1 op
Definition: pixman-arm-neon-asm.h:54
void lift_continue_block_dominator()
Definition: spirv_cfg.cpp:181
Definition: spirv_cross.hpp:117
bool is_back_edge(uint32_t to) const
Definition: spirv_cfg.cpp:77
Unknown compiler Device disconnected from port File already exists Saving to backup buffer Got connection from
Definition: msg_hash_ar.h:34
const std::vector< uint32_t > & get_preceding_edges(uint32_t block) const
Definition: spirv_cfg.hpp:60
uint32_t get_visit_order(uint32_t block) const
Definition: spirv_cfg.hpp:51
const Compiler & get_compiler() const
Definition: spirv_cfg.hpp:36
uint32_t get_immediate_dominator(uint32_t block) const
Definition: spirv_cfg.hpp:46
uint32_t dominator
Definition: spirv_cfg.hpp:115
GLboolean GLboolean GLboolean b
Definition: glext.h:6844
Compiler & get_compiler()
Definition: spirv_cfg.hpp:31
void build_immediate_dominators()
Definition: spirv_cfg.cpp:51
Definition: barrier.hpp:23
uint32_t get_dominator() const
Definition: spirv_cfg.hpp:106
Op
Definition: spirv.hpp:714
void walk_from(std::unordered_set< uint32_t > &seen_blocks, uint32_t block, const Op &op) const
Definition: spirv_cfg.hpp:71
DominatorBuilder(const CFG &cfg)
Definition: spirv_cfg.cpp:158
const SPIRFunction & get_function() const
Definition: spirv_cfg.hpp:41
std::vector< std::vector< uint32_t > > preceding_edges
Definition: spirv_cfg.hpp:85
Definition: spirv_cfg.hpp:100
CFG(Compiler &compiler, const SPIRFunction &function)
Definition: spirv_cfg.cpp:26
std::vector< int > visit_order
Definition: spirv_cfg.hpp:88
bool post_order_visit(uint32_t block)
Definition: spirv_cfg.cpp:84
static int block
Definition: psp2.c:31
Nieznany kompilator Urządzenie zostało odłączone od portu Plik już istnieje Zapisywanie do bufora kopii zapasowej Mam połączenie Adres publiczny Ustawianie dysku w zasobniku Opuściłeś grę Dołączyłeś z urządzeniami wejściowymi *s *s dołączył jako gracz u Próba połączenia online nie powiodła ponieważ peer nie działa w trybie RetroArch lub używa starej wersji RetroArch użyjcie tej samej wersji użyj tej samej wersji Ten rdzeń nie obsługuje gry online między architekturami Niepoprawne hasło Klient gry online został odłączony Nie masz uprawnień do grania Żądane urządzenia wejściowe nie są dostępne Gracz s wstrzymał grę Nadaj rdzeniom sprzętowym własny prywatny kontekst Unikaj konieczności przejmowania zmian stanu sprzętu pomiędzy klatkami Dostosuj ustawienia wyglądu ekranu menu Poprawia wydajność kosztem opóźnień i częstszego rwania obrazu Używaj tylko gdy nie możesz uzyskać pełnej prędkości w przeciwnym razie Automatyczne wykrywanie Możliwości Łączenie z portem które nie wymagają nie mogą uczestniczyć w grze sieciowej Konta Cheevos Konta Retro osiągniecia Lista Skanuj zawartość Importuj zawartość Zapytać Zablokuj klatki Sterownik audio Włącz dźwięk Turbo Martwa strefa Maksymalne przesunięcie czasowe dźwięku Szybkość wyjścia Dynamiczna kontrola szybkości audio Dźwiek Poziom głośności Tryb WASAPI Współdzielony bufor WASAPI Automatyczne zastępowanie plików Automatycznie załaduj Shadery Potwierdź Wyjdź Przewiń do góry Przełącz klawiaturę Podstawowe ustawienia menu Informacje Przewiń do góry Przełącz klawiaturę Nie zastępuj SaveRAM przy ładowaniu stanu zapisu Adres URL zasobów Buildbot Zezwalaj na kamerę Oszukać Oszukane pliki Załaduj oszukany plik Oszukane przepustki Osiągnięcia trybu hardcore Odznaki osiągnięć Zablokowany Sprawdź nieoficjalne osiągnięcia Odblokowany Osiągnięcia trybu pełnego Zamknij zawartość Załaduj konfigurację Zapisz konfigurację przy wyjściu Baza danych Rozmiar listy historii Szybkie menu Pobrane pliki Liczniki rdzeniowe Informacje podstawowe Kategoria Nazwa rdzenia Licencja Obsługiwane rozszerzenia Nazwa systemu Załaduj rdzeń Rdzeń Automatycznie wyodrębnij pobrane archiwum Aktualizacja Rdzenia Architektura Rdzeń procesora Menedżer kursorów Menedżer bazy danych Usuń< Treść dir >< Żaden > Szczegóły Dołącz obraz dysku Kontrola dysku Pliki do pobrania Program do pobierania treści Nadpisz DPI Atrapa rdzenia przy zatrzymaniu rdzenia Dynamiczne tło Włącz osiągnięcia Normalny kolor menu Mnożnik prędkości Wyświetl ilość klatek na sekundę Manipulacja klatek Automatycznie ładuj zależne od zawartości opcje rdzenia Plik opcji gry Rozwiązywanie problemów audio wideo Podstawowa kontrola menu Ładowanie zawartości Co to jest rdzeń Historia Obraz Informacja Menu sterowania wszystkich użytkowników Lewy analog Lewy analog Lewy analog Y Lewy analog Prawo analog X Prawy analog Prawo analog Y Prawy analog Spust Pomocniczy A Pomocniczy C Wybierz D pad dół D pad prawo Martwa strefa gałki analogowej Powiąż wszystko Limit czasu powiązania Ukryj niezwiązane podstawowe deskryptory wejściowe Indeks urządzeń Indeks myszy Cykl zapisu Włączanie mapowania gamepada klawiatury Przycisk W dół D pad Przycisk L3 Lewy D pad R3 przycisk Prawy D pad Przycisk Start Przycisk Przycisk Mysz Mysz Mysz Kółko do dołu Kółko w prawo Maksymalna liczba użytkowników Indeks kodów Włącz kody Następny dysk Włącz klawisze skrótów Szybkie przewijanie do przodu Przełączanie pełnoekranowe Przełącznik ostrości gry Przełączanie menu Przełącznik wyciszania dźwięku Przełączanie klawiatury ekranowej Wstrzymaj przełącznik Zresetuj grę Zapisz stan Następny moduł cieniujący Zwolnione tempo Slot zapisu Głośność Wyświetl nakładkę Pokaż nakładki na nakładce Zachowanie typu ankiety Późno Preferuj dotyk Włącz sporządzanie mapy powiązań na nowo Sterowanie Włącz dotyk Okres turbo Opóźnienie Wprowadź autoconfig Usługi holenderski esperanto niemiecki japoński polski rosyjski wietnamski Lewy analog Informacje o rdzeniu Liniowy Załaduj ostatnie Wczytaj zapis Sterownik lokalizacji Zalogowanie rozmowy Ustawienia bazy danych Niebieski Ciemny niebieski NVIDIA Shield Żółty Nieprzezroczystość nagłówka Menu obrotowe przepustnicy częstotliwości wyświetlania klatek Menu filtra liniowego Wygląd Nieprzezroczystość tła Multimedia Filtruj nieznane rozszerzenia Najbliższy Zezwalaj na klientów w trybie slave Wejściowe klatki opóźnień Opóźnij klatki gry online Włącz grę online Uruchom hosta gry online Adres serwera Włącz klienta gry online Hasło serwera Zażądaj urządzenia u Ustawienia gry online Max Udostępnianie wejścia cyfrowego Zahacz Żaden Tryb widza gry online Hasło spontaniczne serwera Port TCP gry online Polecenia sieciowe Informacje o sieci Port zdalnej sieci Nie N A Bez rdzenia Brak dostępnych podstawowych informacji Brak wpisów do wyświetlenia Brak informacji Nie znaleziono hostów gry online Brak liczników wydajności Brak dostępnych pozycji na liście odtwarzania Brak parametrów modułu cieniującego Włącz Aktualizacja online Nakładka na ekranie Przeglądaj archiwum Nakładka Nakładka Ustawienia nakładki Nakładka na ekranie Nadrzędny katalog Nie pracuj w tle Listy odtwarzania Listy odtwarzania Port Prywatność Obsługa analog Ocena CERO CRC32 Deweloper Ocena magazynu Edge Ocena ELSPA Ocena ESRB Seria MD5 Pochodzenie Wydawca Rok wydania Kod seryjny Rozpocznij zawartość Restart Wyjście nagrywania Załaduj konfigurację nagrywania Sterownik MIDI Zapisz wyjścia jako Plik zmian Zapisz plik zmiany rdzenia Usuń plik zmiany rdzenia Wymagany Uruchom RetroArch ponownie Wznów zawartość Retro pad Osiągnięcia Przewijanie granularności Przeglądarka plików Wyświetl ekran startowy Dodaj do ulubionych Zresetuj domyślny rdzeń Uruchom muzykę Zapisz plik Automatyczne załadowanie stanu Zapisz stan Zapisz bieżącą konfigurację Zapisz nadpisania katalogu zawartości Zapisz nową konfigurację Zapisywanie Zeskanuj plik Zrzut ekranu Szukaj Ustawienia Shader Shadery Prosty śnieg Pokaż ustawienia zaawansowane Zamknąć Przejdź do przodu w celu skrócenia czasu oczekiwania Sortuj zapisy w folderach Ukryj ostrzeżenia RunAhead Napisz zapis stanów do treści dir Pliki systemowe znajdują się w katalogu treści Włącz SSH Uruchom zdalny Retro pad Slot zapisu Polecenia STDIN Wstrzymaj wygaszacz ekranu System BIOS Obsługa Data Builda Wsparcie Cocoa Obsługa CoreText Wyświetl DPI metryczne Wyświetl szerokość Wsparcie DirectSound Obsługa dynamicznej biblioteki Wsparcie EGL Wsparcie FFmpeg Wsparcie STB TrueType Nazwa frontendu Wersja Git Wsparcie HLSL Obsługa KMS EGL Obsługa LibretroDB Libxml2 obsługa parowania XML Obsługa interfejsu dowodzenia sieciowego Obsługa OpenAL Obsługa OpenGL Obsługa OpenVG Obsługa nakładek Naładowany Rozładowywanie Obsługa PulseAudio Obsługa Poziom Oceny Retro Obsługa RoarAudio Wsparcie RSound Wsparcie SDL2 Wsparcie SDL1 Przewlekanie wsparcia Obsługa Video4Linux2 Wsparcie Vulkan Wsparcie X11 Wsparcie XVideo Zrób zrzut ekranu Miniatury Miniatury dyspozycji pionowej Zaktualizuj miniatury Zrzuty ekranu Pokaż datę czas Prawdziwe Uruchom Companion UI przy włączeniu Uruchom menu okienkowe przy włączeniu Nie można odczytać skompresowanego pliku Cofnij zapisanie stanu Aktualizacja Zaktualizuj profile joypad Zaktualizuj kody Zaktualizuj bazy danych Zaktualizuj Lakka Zaktualizuj Shadery Slang Kbd Język Użyj wbudowanej przeglądarki zdjęć< Użyj tego katalogu > Konfiguruj współczynnik kształtu Proporcja obrazu Przytnij Wyłącz kompozycję pulpitu Sterownik wideo Filtr wideo Włącz powiadomienia na ekranie Rozmiar powiadomienia Wymuś wyłączenie sRGB FBO Użyj trybu pełnoekranowego Użyj zapisu GPU Trudna synchronizacja z GPU Maksymalne obrazy swapchain Pozycja Y powiadomienia Użyj funkcji Nagrywania po filtrowaniu Szacowana liczba klatek na sekundę na ekranie Obrót Skala całkowita Moduł cieniujący wideo Podgląd parametrów modułu cieniującego Zapisz ustawienie Shadera jako Zapisz ustawienie zawartości katalogu zawartości Włącz udostępniony kontekst sprzętu Włącz filtr miękki Wideo Migotanie Niestandardowy współczynnik proporcji Szerokość Niestandardowy współczynnik kształtu Y Poz Synchronizacja Tryb pełnoekranowy z pełnym ekranem Wysokość okna Pełnoekranowa wysokość Wi Fi Kolor czcionki czerwony Kolor czcionki niebieski Niestandardowy Monochromia Systematyczny Pixel RetroSystem Kolor menu Ciemny Poranny błękit Elektryczny błękit Czerwone dziedzictwo Zwykły Czerwień wulkaniczna Współczynnik skali menu Pokaż kartę Historii Pokaż kartę Listy odtwarzania Pokaż kartę Obraz Pokaż kartę Ustawienia Pokaż kartę Gry Online Motyw ikon menu Ustawienia Shader Włącz lub wyłącz nieoficjalne osiągnięcia i lub funkcje beta do celów testowych Włącz lub wyłącz tabele wyników w grze Nie jeśli tryb Hardcore jest wyłączony Włącz lub wyłącz powiadomienia OSD dla osiągnięć Zmień sterowniki używane przez system Zmień ustawienia rdzenia Zmień nakładkę ekranu i nakładkę klawiatury oraz ustawienia powiadomień na ekranie Zmień ustawienia zapisu Zmień ustawienia interfejsu użytkownika Zmień ustawienia prywatności Zmień domyślne w których znajdują się pliki Skonfiguruj ustawienia serwera i sieci Zmień ustawienia wyjścia audio Zapisuje zmiany w pliku konfiguracyjnym przy wyjściu Zarządzaj i twórz pliki konfiguracyjne Wyświetla bieżącą liczbę klatek na sekundę na ekranie Kombinacja przycisków gamepada do przełączania menu Skonfiguruj elementy sterujące dla tego użytkownika Dołącz lub obsługuj sesję gry online Wyświetl informacje o systemie Włącz lub wyłącz udostępnianie sieciowe folderów Pokaż ukryte pliki katalogi w przeglądarce plików Włącz lub wyłącz zdalny dostęp do wiersza poleceń Ustawia rozmiar okna względem głównego rozmiaru wyświetlania Alternatywnie możesz ustawić szerokość i wysokość okna poniżej dla ustalonego rozmiaru okna Wstawia czarną klatke między klatkami Przydatny dla użytkowników z którzy chcą odtwarzać zawartość aby wyeliminować efekt duchów Określa liczbę jaką procesor może uruchomić przed gdy używana jest Trudna synchronizacja z GPU który ekran wyświetlacza ma być używany Częstotliwość odświeżania zgłoszona przez sterownik ekranu Skanuje sieci bezprzewodowe i nawiązuje połączenie Dodano do ulubionych Dołączony dysk Stosowanie zmian w kodzie Wyciszenie Dźwięku Błąd podczas zapisywania pliku autoconfig Nie można zainicjować autozapisu Blokowanie nadpisywania SRAM bajty Tryb Hardcore stan zapisu i przewijanie do tyłu były wyłączone Skompilowany z API Połączony z Pominięto ładowanie treści Implementacja załaduje ją samodzielnie Plik opcji rdzenia został pomyślnie utworzony Nie można znaleźć zgodnego systemu Nie można otworzyć ścieżki danych Nie można odczytać nagłówka filmu Niezgodność sumy kontrolnej CRC32 między plikiem treści a zapisaną sumą kontrolną w nagłówku pliku odtwarzania Powtórka najprawdopodobniej zsynchronizuje się podczas odtwarzania Dekompresja już trwa Wykryty obszar widoku Odłącz urządzenie od poprawnego portu Wyrzucony Index Błąd Rdzeń Libretro wymaga specjalnych ale żadne nie zostały dostarczone Błąd podczas zapisywania pliku opcji podstawowych Błąd podczas usuwania pliku remap Aplikacja zewnętrzna Dir Wyodrębnianie pliku Nie udało się Nie można przydzielić pamięci na poprawioną zawartość Nie powiodło się wiązanie gniazda Nie można wyodrębnić treści ze skompresowanego pliku Nie udało się załadować Nie udało się załadować pliku filmowego Nie udało się załadować stanu z Nie udało się załatać Nie udało się odebrać pseudonimu Nie można odebrać rozmiaru pseudonimu z hosta Nie udało się usunąć dysku z zasobnika Nie udało się zapisać SRAM Nie udało się wysłać pseudonimu Nie udało się wysłać pseudonimu do klienta Nie udało się wysłać danych SRAM do klienta Nie można uruchomić nagrywania filmu Nie udało się zrobić zrzutu ekranu Nie udało się cofnąć stanu zapisania Błąd krytyczny odebrany w Znajdź stan automatycznego zapisywania w Znaleziono pierwszą ścieżkę danych w pliku Znaleziony moduł cieniujący Opcje Otrzymałem nieprawidłowy indeks dysku Skup się na grze Rdzeń Libretro jest renderowany sprzętowo Musi także korzystać z nagrywania po cieniowaniu Wejdź w kod Wprowadź wstępnie ustawioną nazwę pliku Interfejs Magazyn wymienny w bajtach w megabajtach Frontend dla libretro Załadowany stan z gniazda Brak jednego lub więcej plików oprogramowania układowego Ładowanie pliku historii Pamięć Wygląda na to
Definition: msg_hash_pl.h:2324
const GLdouble * v
Definition: glext.h:6391
std::vector< std::vector< uint32_t > > succeeding_edges
Definition: spirv_cfg.hpp:86
const SPIRFunction & func
Definition: spirv_cfg.hpp:84
void add_block(uint32_t block)
Definition: spirv_cfg.cpp:163
Definition: spirv_cfg.hpp:26
uint32_t visit_count
Definition: spirv_cfg.hpp:95
void build_post_order_visit_order()
Definition: spirv_cfg.cpp:138
std::vector< uint32_t > post_order
Definition: spirv_cfg.hpp:89
Definition: spirv_common.hpp:686
uint32_t find_common_dominator(uint32_t a, uint32_t b) const
Definition: spirv_cfg.cpp:39
const CFG & cfg
Definition: spirv_cfg.hpp:114
void add_branch(uint32_t from, uint32_t to)
Definition: spirv_cfg.cpp:147
unsigned int uint32_t
Definition: stdint.h:126
std::vector< uint32_t > immediate_dominators
Definition: spirv_cfg.hpp:87
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6844