https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121957

--- Comment #3 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Slightly cleaned up testcase:

typedef long __attribute__((vector_size(16 * sizeof(long)))) v16di_s;
typedef long __attribute__((vector_size(32 * sizeof(long)))) v32di_s;
int main() {
  v16di_s
    vcmp = {},
    v16_1 = __builtin_shufflevector(
          (v32di_s){80383229547, 80383229547, 80383229547, 80383229547,
                    80383229547, 80383229547, 80383229547, 80383229547,
                    80383229547, 80383229547},
          (v32di_s){},
          28, 3, 5, 8, 9, 8, 3, 7, 4, 3, 3, 2, 9, 7, 5, 0);
  asm goto("" : : : : BS_LABEL_1);
BS_LABEL_2:
  asm goto("" : : : : BS_LABEL_1);
BS_LABEL_0:
  asm goto("" : : : : BS_LABEL_2);
  v16di_s v16_2 = __builtin_shufflevector(v16_1,
                (v16di_s){},
                2, 6, 3, 2, 4, 9, 4, 9, 2, 3, 0, 3, 7, 7, 1, 0);
  vcmp = 0 == v16_2;
  asm goto("" : : : : BS_LABEL_0);
BS_LABEL_1:
  asm goto("" : : : : BS_LABEL_0);
  if (vcmp[3])
    __builtin_abort();
}

Reply via email to