<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62242>62242</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Test producing different result after ef38880
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dyung
</td>
</tr>
</table>
<pre>
We have an internal test which started failing recently which I bisected to commit ef38880. Consider the following code:
```c++
#include <stdio.h>
void c(void *d, unsigned e) {
unsigned char *bytes = (unsigned char *)d;
char f[3];
for (unsigned g = 0; g != e; ++g)
sprintf(f, "%02x", bytes[g]);
printf(f);
}
typedef int i;
typedef char __attribute__((ext_vector_type(32))) j;
typedef short __attribute__((ext_vector_type(16))) k;
typedef union {
j a;
k b;
} l;
typedef struct {
k a;
} m;
typedef i __attribute__((ext_vector_type(4))) n;
typedef i __attribute__((ext_vector_type(8))) o;
typedef short __attribute__((ext_vector_type(8))) p;
j aa;
n q{3, 60877, 6, 70189285}, r{2, 308336, 5, -17194088},
s{5, 0, 80290862, 31620660}, ab = r ^ s,
ac{40069418, 5079601, 1, 805389106};
p t;
int main() {
n u{3058, 7, 4, 4005636};
q &= ab;
n v(q | ac);
o w = __builtin_shufflevector(u, v, 6, 7, 3, 1, 7, 3, 3, 2);
p x(__builtin_convertvector(w, p));
k y = __builtin_shufflevector(x, t, 12, 5, 12, 7, 5, 12, 0, 7, 13, 9, 0, 12,
8, 12, 9, 8);
l z;
m ad;
ad.a = y;
z.b = ad.a;
aa = z.a;
char ae = z.a[8];
c(&ae, sizeof(z));
}
```
When compiled with optimizations and AVX2 (`-O2 -mavx2`) the program used to print out "04" but after ef38880 now prints "b6" instead.
Link showing the output of trunk for the above program vs. LLVM 16: https://godbolt.org/z/qGozc8aWc
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVk1v4zgP_jXKhWggU_6QDzk07eTFC8xiL4uZvQWyLcdqHSmV5KTJr19ITmOnBXYHu4WhShT58CFNkxHOqZ2WckWyNcmeF2LwnbGr5jzo3aIyzXn1U0InjhKEBqW9tFr04KXzcOpU3YHzwnrZQCtUr_QOrKyl9v35ev1_qJSTddDwBmqz3ysPsmWcc7qEJ6OdaqQF30loTd-bU8CoTSMJeyT0mdBHktPxqQmuwzNKkSld90MjgbAn5xtllh1h38bbo1EN1AR53BB8bAg-waBjrA1IgiWQ4go1yetO2KBdnb10QNgzEORfbgmWDWEfxqO4Jdmakex5Jm-NvTPfRUBK2DpsMQknGU5jWDuC5YcpgDtYpX1LkLeBOUEkmFF8j5sniARJtt4Fl1hOXudmk5gUz-PGnw-ykW14kaBu1x_SGMl2K7y3qhq83G4JcoJcvvvtUdbe2G1QJcgZBvj4wMsXHNcZ638NKMknoNcvQINWRs9eFLyAmGX4Fap5iNB_ZeLtUPs5wusMIdjsv9ioX2OeTsT1v8XgE4b5L1mc4RxuOC8gplA1vJFizULt5JQXRdyEpaAJL5FnoUTwCSwp1rHCGOWMRY0sLA9JkZQp5XzUmxUqKdZRg4aFUywpz0eEJEea5_SKLKpY_xZI9g3cHcbf_omaFOuU0rxMEx750KLMaRK2yegzY7xMaB4cfcR7AH_bh2LfC6Vj9ubfPWgYQlZoFoFjUtK4UJrl7A4Q4A0I5iEEUc2kGo4E-RuQ4ilQnX-LYOAUY95uq0H1Xumt64a27eX49kJzCN6O08uIebtFNh3jgvfoB3gnyCfs2uijtP6GfQo2h2tlzD-a8z-Qeg-GPrLAWwGM2-LTmd6ESaRY3oTx_uqTTwZRgd8z6uEyO-1BzLuraJYi8j3PhJflWEzhcq47al7uhLGpCXm7ydb8vk_XsS5yIQM1py7ShP55-ZS4Wwu9jaPx-LOTOoy1g-plAyflOzAHr_bqIrwy2oHQDTz--BPDLCA5ffgd4WEvju8YILCMk-9gzc6KPQxuHJOxi4MZfGj8NCWIUA0eROul_RieoM1pVHRBq8qDltLOS9Esr1Tj-l3p19BM4mQN3szgD4MH04K3g36NgyrIRWWOE5ejW8L37z9-gyQn7BE67w8uzGTcENzsTFOZ3i-N3RHcXAhu3v5nLjUXP-tFs2JNyUqxkKsk50mJmCW46FZY1RXLsWjatKoL3jIpRJ02dZFgWrSyWKgVUmQ0TcokT5MMlxWrirairGW8liJtSUrlXqh-2ffHffC9UM4NcpUjprjoRSV7F3_HIGp5gngZBmb2vLCrYPNQDTtHUtor592E4pXv5eqP8JvmYE0z1CFTjWpbaaX2YKUb-k_ZXwy2X33KifLdUC1rsye4CdjXfw8Ha15k7QluIiNHcBMZ_xUAAP__YQGmmg">