[require] shader model >= 4.0 [pixel shader] uniform uint4 nonconst; float4 main() : SV_TARGET { uint a = 35, r = 2; uint shifted = a; shifted >>= nonconst.x; a >>= r; return float4(a, shifted, 0, 0); } [test] uniform 0 uint4 2 0 0 0 todo(msl) draw quad probe (0, 0) rgba (8, 8, 0, 0) [pixel shader] uniform uint4 nonconst; float4 main() : SV_TARGET { int a = 5, b = -12; uint r = 1; int shifted_a = a; shifted_a >>= nonconst.x; int shifted_b = b; shifted_b >>= nonconst.x; a >>= r; b >>= r; return float4(a, b, shifted_a, shifted_b); } [test] uniform 0 uint4 1 0 0 0 todo(msl) draw quad probe (0, 0) rgba (2, -6, 2, -6) [pixel shader] uniform uint4 nonconst; float4 main() : SV_TARGET { uint a = 35, r = 3; uint shifted = a; shifted <<= nonconst.x; a <<= r; return float4(a, shifted, 0, 0); } [test] uniform 0 uint4 3 0 0 0 todo(msl) draw quad probe (0, 0) rgba (280, 280, 0, 0) [pixel shader] uniform uint4 nonconst; float4 main() : SV_TARGET { int a = 5, b = -12; uint r = 2; int shifted_a = a; shifted_a <<= nonconst.x; int shifted_b = b; shifted_b <<= nonconst.x; a <<= r; b <<= r; return float4(a, b, shifted_a, shifted_b); } [test] uniform 0 uint4 2 0 0 0 todo(msl) draw quad probe (0, 0) rgba (20, -48, 20, -48) [pixel shader fail] % Make sure that bitshifts DON'T work with floats float4 main() : SV_TARGET { float x = 5.0, y = 15.0; x <<= y; y <<= x; return float4(x, y, 0, 0); } [pixel shader] float4 main() : SV_TARGET { int source = 55; int i = -0x4141; uint u = 128; int a = source; a &= i; int b = source; b |= u; int c = source; c ^= i; return float4(a, b, c, 0); } [test] todo(msl) draw quad probe (0, 0) rgba (55, 183, -16760, 0)