Az értékadó utasítások szintaxisa az ANSI C szintaxist követik.
Az értékadás jobboldalán szereplő kifejezés automatikusan a baloldal típusára konvertálódik.
Az értékadás maga is kifejezés, értéke megegyezik a baloldalának az értékadás utáni értékével. Maga az értékadás nem balérték.
Értékadás bal oldalán nem szerepelhet const kulcsszóval deklarált vagy bármilyen sampler* típusú változó.
Szekvencia létrehozása nem igényel külön jelölést. Egymás után írt, pontosvesszővel lezárt utasítások automatikusan szekvenciát alkotnak.
Megjegyzés: a pontosvessző lezárja az utasításokat, nem elválasztja, ezért minden utasítás után szerepelnie kell.
Az elágazás szintaxisa az ANSI C szintaxissal megegyező, de fordítás szempontjából eltérő.
A cél-platformtól függően, a használt profil határozza meg, hogy a platformon megvalósítható-e az elágazás. Amennyiben nem, a fordító megpróbálja átalakítani az elágazást olyan hosszabb műveletsorozattá, ami már végrehajtható a cél-platformon.
Ezt szemlélteti az alábbi egyszerű program:
A fordítás eredménye elágazást támogató profil (vs_3_0) esetén:
Látható, hogy a kódban megjelennek az elágazásnak megfelelő alacsonyszintű utasítások.
Ugyanennek a kódnak a fordítási eredménye elágazást nem támogató profil (vs_1_1) esetén:
Itt a fordító bonyolult műveletsorozattal szimulálja az elágazás hatását.
A nyelvben case típusú elágazás nem használható.
A nyelvben a C-ből megszokott while és for ciklusok használhatóak. Az elágazáshoz hasonlóan szintaxisuk megegyezik az ANSI C szintaxisával, de használhatóságukat a profilok szabályozzák.
Újabb profilok mellett a ciklusok használhatók megkötés nélkül, de régebbi profil esetén a programban csak fordítási időben kifejthető ciklusok szerepelhetnek.
Fordítási időben nem kifejthető ciklusra példa az alábbi program:
A fordítás eredménye ciklust támogató profil (vs_3_0) esetén:
Régebbi profil (vs_1_1) esetén a fordító hibát jelez:
Bár a goto, break és continue fenntartott szavakként szerepelnek a nyelvben, használatuk nem támogatott.