int + float                                    UOpError: ADD: needs two srcs of the same dtype
ADD of two bools                               UOpError: ADD: ADD is not defined on bool (CMPNE is xor)
WHERE with an int condition                    UOpError: WHERE: needs a bool condition and two values
WHERE with branches of different dtype         UOpError: WHERE: both branches must have the same dtype
RECIP of an int                                UOpError: RECIP: needs one float
FLOORDIV of floats                             UOpError: FLOORDIV: needs ints
CONST 2**31 as int32                           UOpError: CONST: 2147483648 does not fit in int32
CAST to a pointer type                         UOpError: CAST: needs one src and a value dtype as arg
CALL with a missing argument                   UOpError: CALL: PARAM slot 1 has no argument
CALL with an argument of the wrong dtype       UOpError: CALL: argument 1 has dtype i32, the body wants f32
a CALL inside a CALL                           UOpError: CALL: a body may not contain a CALL or a BUFFER (global buffers come in as params)
a well typed CALL                              built
