pragma abicoder               v2;


contract C {
    function f(uint8 a, uint8 b) public returns (uint256) {
        assembly {
            a := 0xffffffff
        }
        // Higher bits should be cleared before the shift
        return a >> b;
    }
}
// ====
// compileToEwasm: also
// compileViaYul: also
// ----
// f(uint8,uint8): 0x00, 0x04 -> 0x0f
// f(uint8,uint8): 0x00, 0x1004 -> FAILURE
