llhd 0.16.0

A Low Level Hardware Description that acts as a foundation for building hardware design tools.
Documentation
; RUN: llhd-opt %s -p cf

func @unary_i8 () void {
entry:
    %a = const i8 1

    %not = not i8 %a
    ; CHECK: %not = const i8 254

    ret
}


func @binary_i8 () void {
entry:
    %a = const i8 15  ; 0b00001111
    %b = const i8 240 ; 0b11110000
    %c = const i8 60  ; 0b00111100

    %and1 = and i8 %a, %b
    %and2 = and i8 %a, %c
    %and3 = and i8 %b, %c
    ; CHECK: %and1 = const i8 0
    ; CHECK: %and2 = const i8 12
    ; CHECK: %and3 = const i8 48

    %or1 = or i8 %a, %b
    %or2 = or i8 %a, %c
    %or3 = or i8 %b, %c
    ; CHECK: %or1 = const i8 255
    ; CHECK: %or2 = const i8 63
    ; CHECK: %or3 = const i8 252

    %xor1 = xor i8 %a, %b
    %xor2 = xor i8 %a, %c
    %xor3 = xor i8 %b, %c
    ; CHECK: %xor1 = const i8 255
    ; CHECK: %xor2 = const i8 51
    ; CHECK: %xor3 = const i8 204

    ret
}