vyre 0.4.0

GPU compute intermediate representation with a standard operation library
Documentation
[[case]]
op = "partition"
input_hex = "00010200"
predicate_id = 0
expected_pass_hex = "0102"
expected_fail_hex = "0000"
ok = true

[[case]]
op = "partition"
input_hex = "00"
predicate_id = 999
expected_pass_hex = ""
expected_fail_hex = ""
ok = false

[[case]]
op = "gather"
input_hex = "01020304"
indices_hex = "0000000002000000"
expected_hex = "0103"
ok = true

[[case]]
op = "gather"
input_hex = "01020304"
indices_hex = "05000000"
expected_hex = ""
ok = false

[[case]]
op = "broadcast"
value = 7
count = 2
expected_hex = "0700000007000000"
ok = true

[[case]]
op = "compact"
input_hex = "010203"
mask_hex = "010001"
expected_hex = "0103"
ok = true

[[case]]
op = "compact"
input_hex = "010203"
mask_hex = "01"
expected_hex = ""
ok = false

[[case]]
op = "base64_encode"
input_hex = "68656c6c6f"
expected_output_hex = "614756736247383d"

[[case]]
op = "hex_encode_lower"
input_hex = "4142"
expected_output_hex = "34313432"

[[case]]
op = "url_percent_encode"
input_hex = "612062"
expected_output_hex = "6125323062"

[[case]]
# RFC 4648 base32 alphabet is UPPERCASE. "hello" → "NBSWY3DP".
op = "base32_encode"
input_hex = "68656c6c6f"
expected_output_hex = "4e42535759334450"

[[case]]
op = "utf8_validate"
input_hex = "68656c6c6f"
expected_output_hex = "01"

[[case]]
op = "utf8_validate"
input_hex = "ff"
expected_output_hex = "00"

[[case]]
op = "hex_decode_strict"
input_hex = "34313432"
expected_output_hex = "4142"
ok = true

[[case]]
op = "hex_decode_strict"
input_hex = "41314732"
expected_output_hex = ""
ok = false

[[case]]
op = "base32_decode"
input_hex = "4d593d3d3d3d3d3d"
expected_output_hex = "66"
ok = true

[[case]]
op = "base32_decode"
input_hex = "4d313d3d3d3d3d3d"
expected_output_hex = ""
ok = false

[[case]]
op = "url_percent_decode"
input_hex = "6125323062"
expected_output_hex = "612062"
ok = true

[[case]]
op = "url_percent_decode"
input_hex = "61254730"
expected_output_hex = "61254730"
ok = false

[[case]]
op = "base64url_decode"
input_hex = "61475673624738"
expected_output_hex = "68656c6c6f"
ok = true

[[case]]
# "aGVsb" — 5 data chars, no padding → data_len % 4 == 1 → InvalidLength.
op = "base64url_decode"
input_hex = "6147567362"
expected_output_hex = ""
ok = false

[[case]]
# "aG!s" — '!' (0x21) is outside the base64url alphabet → InvalidByte.
op = "base64url_decode"
input_hex = "61472173"
expected_output_hex = ""
ok = false