As an example optimization, consider this C code:
do {
if (*--p == '.') *p = '_';
} while (p != name);
LLVM originally produced this bitcode for AVX-2 instructions: %1 = shufflevector %0, <31, 30, 29, ... , 0>
%2 = icmp eq %1, <46, 46, 46, ... , 46>
%3 = shufflevector %2, <31, 30, 29, ... , 0>
Minotaur instead produced: %1 = icmp eq %0, <46, 46, 46, ... , 46>
Both compare the register to ASCII 46 ('.'), but LLVM originally produced an unnecessary pair of vector reversals. Minotaur removed it.