Files
brolang/examples/programs/bitwise/main.bro
T

63 lines
1.7 KiB
Plaintext

fold_bits func(value u8) u8 {
return (~value & 255) xor 15
}
folded u8 :: fold_bits(240)
contextual u8 :: ~0 & 255
contextual_shift u8 :: 1 << 7
Buffer :: alias [u8(1) << 3]u8
runtime_left func(value u16, count u8) u16 {
return value << count
}
c_count_shift func(value u8, count c_uint) u8 {
return value << count
}
c_count_fold u8 :: c_count_shift(3, 2)
main func() i32 {
buffer Buffer := undefined
if (folded != 0) return 1
if (contextual != 255) return 28
if (contextual_shift != 128) return 29
if (buffer.len != 8) return 2
if ((u8(240) & u8(204)) != 192) return 3
if ((u8(240) | u8(15)) != 255) return 4
if ((u8(240) xor u8(255)) != 15) return 5
if ((u8(129) << 1) != 2) return 6
if ((i8(-4) >> 1) != -2) return 7
if ((u8(128) >> 1) != 64) return 8
if ((u8(64) <<| 2) != 255) return 9
if ((i8(64) <<| 2) != 127) return 10
if ((i8(-64) <<| 2) != -128) return 11
if ((u8(1) <<| 8) != 255) return 12
if ((u8(0) <<| 80) != 0) return 13
if (runtime_left(3, 4) != 48) return 14
if (c_count_shift(3, 2) != 12) return 30
if (c_count_fold != 12) return 31
if (~u16(0) != 65535) return 16
if ((i16(-2) >> 1) != -1) return 17
if ((u32(2147483648) >> 31) != 1) return 18
if ((i32(-2147483647) << 1) != 2) return 19
if ((~u64(0) >> 63) != 1) return 20
if ((i64(-2) >> 1) != -1) return 21
if ((c_uchar(128) >> 7) != 1) return 22
if ((c_int(-2) >> 1) != -1) return 23
if ((c_uint(3) << 4) != 48) return 24
if ((c_ulonglong(1) <<| 64) != ~c_ulonglong(0)) return 25
if ((c_ushort(240) xor c_ushort(255)) != 15) return 26
if ((c_longlong(64) <<| 60) != maxval!(c_longlong)) return 27
value u8 := 3
value <<= 2
value |= 1
value xor= 5
value &= 15
value >>= 1
value <<|= 7
if (value != 255) return 15
return 42
}