Nuno Lopes
Nuno Lopes
A freeze cannot be changed to a constant at will; only if it has no other users. This is currently not captured by the vcgen. e.g., ``` %v = freeze...
We need a story for UB in constant exprs. Do the underlying APIs provide deterministic behavior? Should the generated code be made deterministic or the UB exposed in the DSL?...
``` Pre: C1 u< width(C1) %Op0 = shl i7 C1, %A %r = shl %Op0, C2 => %r = shl (C1
The follow input crashes alive (because %1 is replaced, but not %2). Test case by David Majnemer. ``` Pre: isPowerOf2(C1) %1 = srem i32 %x, C1 %2 = ashr i32...
We have been asked multiple times for a switch to check only for the root instruction. This is slightly dangerous so it could (should) produce a warning if intermediate values...
The following 2 examples are accepted as valid: ``` %v = add 0, 1 => unreachable ``` And: ``` %v = add 0, 1 => %v = 1 store undef,...
Alive rejects the following (apparently it's not using the hasOneUse() condition at all): ``` Pre: hasOneUse(%Ptr) %Ptr = alloca store %x, %Ptr => skip ```
From David Majnemer: ``` Optimization: 1 Precondition: ((C0 & (computeKnownZeroBits(%x) ^ computeKnownOneBits(%x))) == 0) %r = and %x, C0 => %r = (computeKnownZeroBits(%x) & C0) Traceback (most recent call last):...
If Python exits and there's something in the trace, Torchy will hold pointers to PyTorch tensors in Trace::inputs. The call trace for ~Trace looks like: ``` #0 futex_abstimed_wait_cancelable() #1 __pthread_cond_wait_common()...
Tried a better hash: ```c++ #define HASH_COMBINE(hash, ty, v) hash * 31 + std::hash()(v) for (unsigned i = 0; i < key.num_ops; ++i) { hash = HASH_COMBINE(hash, uint16_t, key.ops[i].id); for...