xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/X86/arith-and-const-load.ll (revision 38fffa630ee80163dc65e759392ad29798905679)
12233a615SSimon Pilgrim; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2df92b05fSArthur Eubanks; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64    -S | FileCheck %s --check-prefixes=CHECK,SSE
3df92b05fSArthur Eubanks; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v2 -S | FileCheck %s --check-prefixes=CHECK,SSE
4df92b05fSArthur Eubanks; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v3 -S | FileCheck %s --check-prefixes=CHECK,AVX
5df92b05fSArthur Eubanks; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown -mcpu=x86-64-v4 -S | FileCheck %s --check-prefixes=CHECK,AVX
62233a615SSimon Pilgrim
72233a615SSimon Pilgrim; // PR49934
82233a615SSimon Pilgrim; void baz(unsigned char *dst, unsigned char *src) {
92233a615SSimon Pilgrim;   for( int x = 0; x < 8; x++ ) {
102233a615SSimon Pilgrim;     dst[x] = src[x]&(~63);
112233a615SSimon Pilgrim;   }
122233a615SSimon Pilgrim; }
132233a615SSimon Pilgrim
142233a615SSimon Pilgrimdefine void @and4(ptr noalias nocapture noundef writeonly %dst, ptr noalias nocapture noundef readonly %src) {
155150d653SSimon Pilgrim; CHECK-LABEL: @and4(
165150d653SSimon Pilgrim; CHECK-NEXT:  entry:
17e961e05dSSimon Pilgrim; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x i8>, ptr [[SRC:%.*]], align 1
18*38fffa63SPaul Walker; CHECK-NEXT:    [[TMP1:%.*]] = and <4 x i8> [[TMP0]], splat (i8 -64)
19e961e05dSSimon Pilgrim; CHECK-NEXT:    store <4 x i8> [[TMP1]], ptr [[DST:%.*]], align 1
205150d653SSimon Pilgrim; CHECK-NEXT:    ret void
212233a615SSimon Pilgrim;
222233a615SSimon Pilgrimentry:
232233a615SSimon Pilgrim  %0 = load i8, ptr %src, align 1
242233a615SSimon Pilgrim  %1 = and i8 %0, -64
252233a615SSimon Pilgrim  store i8 %1, ptr %dst, align 1
262233a615SSimon Pilgrim  %arrayidx.1 = getelementptr inbounds i8, ptr %src, i64 1
272233a615SSimon Pilgrim  %2 = load i8, ptr %arrayidx.1, align 1
282233a615SSimon Pilgrim  %3 = and i8 %2, -64
292233a615SSimon Pilgrim  %arrayidx3.1 = getelementptr inbounds i8, ptr %dst, i64 1
302233a615SSimon Pilgrim  store i8 %3, ptr %arrayidx3.1, align 1
312233a615SSimon Pilgrim  %arrayidx.2 = getelementptr inbounds i8, ptr %src, i64 2
322233a615SSimon Pilgrim  %4 = load i8, ptr %arrayidx.2, align 1
332233a615SSimon Pilgrim  %5 = and i8 %4, -64
342233a615SSimon Pilgrim  %arrayidx3.2 = getelementptr inbounds i8, ptr %dst, i64 2
352233a615SSimon Pilgrim  store i8 %5, ptr %arrayidx3.2, align 1
362233a615SSimon Pilgrim  %arrayidx.3 = getelementptr inbounds i8, ptr %src, i64 3
372233a615SSimon Pilgrim  %6 = load i8, ptr %arrayidx.3, align 1
382233a615SSimon Pilgrim  %7 = and i8 %6, -64
392233a615SSimon Pilgrim  %arrayidx3.3 = getelementptr inbounds i8, ptr %dst, i64 3
402233a615SSimon Pilgrim  store i8 %7, ptr %arrayidx3.3, align 1
412233a615SSimon Pilgrim  ret void
422233a615SSimon Pilgrim}
432233a615SSimon Pilgrim
442233a615SSimon Pilgrimdefine void @and8(ptr noalias nocapture noundef writeonly %dst, ptr noalias nocapture noundef readonly %src) {
455150d653SSimon Pilgrim; CHECK-LABEL: @and8(
465150d653SSimon Pilgrim; CHECK-NEXT:  entry:
475150d653SSimon Pilgrim; CHECK-NEXT:    [[TMP0:%.*]] = load <8 x i8>, ptr [[SRC:%.*]], align 1
48*38fffa63SPaul Walker; CHECK-NEXT:    [[TMP1:%.*]] = and <8 x i8> [[TMP0]], splat (i8 -64)
495150d653SSimon Pilgrim; CHECK-NEXT:    store <8 x i8> [[TMP1]], ptr [[DST:%.*]], align 1
505150d653SSimon Pilgrim; CHECK-NEXT:    ret void
512233a615SSimon Pilgrim;
522233a615SSimon Pilgrimentry:
532233a615SSimon Pilgrim  %0 = load i8, ptr %src, align 1
542233a615SSimon Pilgrim  %1 = and i8 %0, -64
552233a615SSimon Pilgrim  store i8 %1, ptr %dst, align 1
562233a615SSimon Pilgrim  %arrayidx.1 = getelementptr inbounds i8, ptr %src, i64 1
572233a615SSimon Pilgrim  %2 = load i8, ptr %arrayidx.1, align 1
582233a615SSimon Pilgrim  %3 = and i8 %2, -64
592233a615SSimon Pilgrim  %arrayidx3.1 = getelementptr inbounds i8, ptr %dst, i64 1
602233a615SSimon Pilgrim  store i8 %3, ptr %arrayidx3.1, align 1
612233a615SSimon Pilgrim  %arrayidx.2 = getelementptr inbounds i8, ptr %src, i64 2
622233a615SSimon Pilgrim  %4 = load i8, ptr %arrayidx.2, align 1
632233a615SSimon Pilgrim  %5 = and i8 %4, -64
642233a615SSimon Pilgrim  %arrayidx3.2 = getelementptr inbounds i8, ptr %dst, i64 2
652233a615SSimon Pilgrim  store i8 %5, ptr %arrayidx3.2, align 1
662233a615SSimon Pilgrim  %arrayidx.3 = getelementptr inbounds i8, ptr %src, i64 3
672233a615SSimon Pilgrim  %6 = load i8, ptr %arrayidx.3, align 1
682233a615SSimon Pilgrim  %7 = and i8 %6, -64
692233a615SSimon Pilgrim  %arrayidx3.3 = getelementptr inbounds i8, ptr %dst, i64 3
702233a615SSimon Pilgrim  store i8 %7, ptr %arrayidx3.3, align 1
712233a615SSimon Pilgrim  %arrayidx.4 = getelementptr inbounds i8, ptr %src, i64 4
722233a615SSimon Pilgrim  %8 = load i8, ptr %arrayidx.4, align 1
732233a615SSimon Pilgrim  %9 = and i8 %8, -64
742233a615SSimon Pilgrim  %arrayidx3.4 = getelementptr inbounds i8, ptr %dst, i64 4
752233a615SSimon Pilgrim  store i8 %9, ptr %arrayidx3.4, align 1
762233a615SSimon Pilgrim  %arrayidx.5 = getelementptr inbounds i8, ptr %src, i64 5
772233a615SSimon Pilgrim  %10 = load i8, ptr %arrayidx.5, align 1
782233a615SSimon Pilgrim  %11 = and i8 %10, -64
792233a615SSimon Pilgrim  %arrayidx3.5 = getelementptr inbounds i8, ptr %dst, i64 5
802233a615SSimon Pilgrim  store i8 %11, ptr %arrayidx3.5, align 1
812233a615SSimon Pilgrim  %arrayidx.6 = getelementptr inbounds i8, ptr %src, i64 6
822233a615SSimon Pilgrim  %12 = load i8, ptr %arrayidx.6, align 1
832233a615SSimon Pilgrim  %13 = and i8 %12, -64
842233a615SSimon Pilgrim  %arrayidx3.6 = getelementptr inbounds i8, ptr %dst, i64 6
852233a615SSimon Pilgrim  store i8 %13, ptr %arrayidx3.6, align 1
862233a615SSimon Pilgrim  %arrayidx.7 = getelementptr inbounds i8, ptr %src, i64 7
872233a615SSimon Pilgrim  %14 = load i8, ptr %arrayidx.7, align 1
882233a615SSimon Pilgrim  %15 = and i8 %14, -64
892233a615SSimon Pilgrim  %arrayidx3.7 = getelementptr inbounds i8, ptr %dst, i64 7
902233a615SSimon Pilgrim  store i8 %15, ptr %arrayidx3.7, align 1
912233a615SSimon Pilgrim  ret void
922233a615SSimon Pilgrim}
932233a615SSimon Pilgrim
942233a615SSimon Pilgrimdefine void @and16(ptr noalias nocapture noundef writeonly %dst, ptr noalias nocapture noundef readonly %src) {
955150d653SSimon Pilgrim; CHECK-LABEL: @and16(
965150d653SSimon Pilgrim; CHECK-NEXT:  entry:
975150d653SSimon Pilgrim; CHECK-NEXT:    [[TMP0:%.*]] = load <16 x i8>, ptr [[SRC:%.*]], align 1
98*38fffa63SPaul Walker; CHECK-NEXT:    [[TMP1:%.*]] = and <16 x i8> [[TMP0]], splat (i8 -64)
995150d653SSimon Pilgrim; CHECK-NEXT:    store <16 x i8> [[TMP1]], ptr [[DST:%.*]], align 1
1005150d653SSimon Pilgrim; CHECK-NEXT:    ret void
1012233a615SSimon Pilgrim;
1022233a615SSimon Pilgrimentry:
1032233a615SSimon Pilgrim  %0 = load i8, ptr %src, align 1
1042233a615SSimon Pilgrim  %1 = and i8 %0, -64
1052233a615SSimon Pilgrim  store i8 %1, ptr %dst, align 1
1062233a615SSimon Pilgrim  %arrayidx.1 = getelementptr inbounds i8, ptr %src, i64 1
1072233a615SSimon Pilgrim  %2 = load i8, ptr %arrayidx.1, align 1
1082233a615SSimon Pilgrim  %3 = and i8 %2, -64
1092233a615SSimon Pilgrim  %arrayidx3.1 = getelementptr inbounds i8, ptr %dst, i64 1
1102233a615SSimon Pilgrim  store i8 %3, ptr %arrayidx3.1, align 1
1112233a615SSimon Pilgrim  %arrayidx.2 = getelementptr inbounds i8, ptr %src, i64 2
1122233a615SSimon Pilgrim  %4 = load i8, ptr %arrayidx.2, align 1
1132233a615SSimon Pilgrim  %5 = and i8 %4, -64
1142233a615SSimon Pilgrim  %arrayidx3.2 = getelementptr inbounds i8, ptr %dst, i64 2
1152233a615SSimon Pilgrim  store i8 %5, ptr %arrayidx3.2, align 1
1162233a615SSimon Pilgrim  %arrayidx.3 = getelementptr inbounds i8, ptr %src, i64 3
1172233a615SSimon Pilgrim  %6 = load i8, ptr %arrayidx.3, align 1
1182233a615SSimon Pilgrim  %7 = and i8 %6, -64
1192233a615SSimon Pilgrim  %arrayidx3.3 = getelementptr inbounds i8, ptr %dst, i64 3
1202233a615SSimon Pilgrim  store i8 %7, ptr %arrayidx3.3, align 1
1212233a615SSimon Pilgrim  %arrayidx.4 = getelementptr inbounds i8, ptr %src, i64 4
1222233a615SSimon Pilgrim  %8 = load i8, ptr %arrayidx.4, align 1
1232233a615SSimon Pilgrim  %9 = and i8 %8, -64
1242233a615SSimon Pilgrim  %arrayidx3.4 = getelementptr inbounds i8, ptr %dst, i64 4
1252233a615SSimon Pilgrim  store i8 %9, ptr %arrayidx3.4, align 1
1262233a615SSimon Pilgrim  %arrayidx.5 = getelementptr inbounds i8, ptr %src, i64 5
1272233a615SSimon Pilgrim  %10 = load i8, ptr %arrayidx.5, align 1
1282233a615SSimon Pilgrim  %11 = and i8 %10, -64
1292233a615SSimon Pilgrim  %arrayidx3.5 = getelementptr inbounds i8, ptr %dst, i64 5
1302233a615SSimon Pilgrim  store i8 %11, ptr %arrayidx3.5, align 1
1312233a615SSimon Pilgrim  %arrayidx.6 = getelementptr inbounds i8, ptr %src, i64 6
1322233a615SSimon Pilgrim  %12 = load i8, ptr %arrayidx.6, align 1
1332233a615SSimon Pilgrim  %13 = and i8 %12, -64
1342233a615SSimon Pilgrim  %arrayidx3.6 = getelementptr inbounds i8, ptr %dst, i64 6
1352233a615SSimon Pilgrim  store i8 %13, ptr %arrayidx3.6, align 1
1362233a615SSimon Pilgrim  %arrayidx.7 = getelementptr inbounds i8, ptr %src, i64 7
1372233a615SSimon Pilgrim  %14 = load i8, ptr %arrayidx.7, align 1
1382233a615SSimon Pilgrim  %15 = and i8 %14, -64
1392233a615SSimon Pilgrim  %arrayidx3.7 = getelementptr inbounds i8, ptr %dst, i64 7
1402233a615SSimon Pilgrim  store i8 %15, ptr %arrayidx3.7, align 1
1412233a615SSimon Pilgrim  %arrayidx.8 = getelementptr inbounds i8, ptr %src, i64 8
1422233a615SSimon Pilgrim  %16 = load i8, ptr %arrayidx.8, align 1
1432233a615SSimon Pilgrim  %17 = and i8 %16, -64
1442233a615SSimon Pilgrim  %arrayidx3.8 = getelementptr inbounds i8, ptr %dst, i64 8
1452233a615SSimon Pilgrim  store i8 %17, ptr %arrayidx3.8, align 1
1462233a615SSimon Pilgrim  %arrayidx.9 = getelementptr inbounds i8, ptr %src, i64 9
1472233a615SSimon Pilgrim  %18 = load i8, ptr %arrayidx.9, align 1
1482233a615SSimon Pilgrim  %19 = and i8 %18, -64
1492233a615SSimon Pilgrim  %arrayidx3.9 = getelementptr inbounds i8, ptr %dst, i64 9
1502233a615SSimon Pilgrim  store i8 %19, ptr %arrayidx3.9, align 1
1512233a615SSimon Pilgrim  %arrayidx.10 = getelementptr inbounds i8, ptr %src, i64 10
1522233a615SSimon Pilgrim  %20 = load i8, ptr %arrayidx.10, align 1
1532233a615SSimon Pilgrim  %21 = and i8 %20, -64
1542233a615SSimon Pilgrim  %arrayidx3.10 = getelementptr inbounds i8, ptr %dst, i64 10
1552233a615SSimon Pilgrim  store i8 %21, ptr %arrayidx3.10, align 1
1562233a615SSimon Pilgrim  %arrayidx.11 = getelementptr inbounds i8, ptr %src, i64 11
1572233a615SSimon Pilgrim  %22 = load i8, ptr %arrayidx.11, align 1
1582233a615SSimon Pilgrim  %23 = and i8 %22, -64
1592233a615SSimon Pilgrim  %arrayidx3.11 = getelementptr inbounds i8, ptr %dst, i64 11
1602233a615SSimon Pilgrim  store i8 %23, ptr %arrayidx3.11, align 1
1612233a615SSimon Pilgrim  %arrayidx.12 = getelementptr inbounds i8, ptr %src, i64 12
1622233a615SSimon Pilgrim  %24 = load i8, ptr %arrayidx.12, align 1
1632233a615SSimon Pilgrim  %25 = and i8 %24, -64
1642233a615SSimon Pilgrim  %arrayidx3.12 = getelementptr inbounds i8, ptr %dst, i64 12
1652233a615SSimon Pilgrim  store i8 %25, ptr %arrayidx3.12, align 1
1662233a615SSimon Pilgrim  %arrayidx.13 = getelementptr inbounds i8, ptr %src, i64 13
1672233a615SSimon Pilgrim  %26 = load i8, ptr %arrayidx.13, align 1
1682233a615SSimon Pilgrim  %27 = and i8 %26, -64
1692233a615SSimon Pilgrim  %arrayidx3.13 = getelementptr inbounds i8, ptr %dst, i64 13
1702233a615SSimon Pilgrim  store i8 %27, ptr %arrayidx3.13, align 1
1712233a615SSimon Pilgrim  %arrayidx.14 = getelementptr inbounds i8, ptr %src, i64 14
1722233a615SSimon Pilgrim  %28 = load i8, ptr %arrayidx.14, align 1
1732233a615SSimon Pilgrim  %29 = and i8 %28, -64
1742233a615SSimon Pilgrim  %arrayidx3.14 = getelementptr inbounds i8, ptr %dst, i64 14
1752233a615SSimon Pilgrim  store i8 %29, ptr %arrayidx3.14, align 1
1762233a615SSimon Pilgrim  %arrayidx.15 = getelementptr inbounds i8, ptr %src, i64 15
1772233a615SSimon Pilgrim  %30 = load i8, ptr %arrayidx.15, align 1
1782233a615SSimon Pilgrim  %31 = and i8 %30, -64
1792233a615SSimon Pilgrim  %arrayidx3.15 = getelementptr inbounds i8, ptr %dst, i64 15
1802233a615SSimon Pilgrim  store i8 %31, ptr %arrayidx3.15, align 1
1812233a615SSimon Pilgrim  ret void
1822233a615SSimon Pilgrim}
1832233a615SSimon Pilgrim
1842233a615SSimon Pilgrimdefine void @and32(ptr noalias nocapture noundef writeonly %dst, ptr noalias nocapture noundef readonly %src) {
1852233a615SSimon Pilgrim; SSE-LABEL: @and32(
1862233a615SSimon Pilgrim; SSE-NEXT:  entry:
1872233a615SSimon Pilgrim; SSE-NEXT:    [[TMP0:%.*]] = load <16 x i8>, ptr [[SRC:%.*]], align 1
188*38fffa63SPaul Walker; SSE-NEXT:    [[TMP1:%.*]] = and <16 x i8> [[TMP0]], splat (i8 -64)
1892233a615SSimon Pilgrim; SSE-NEXT:    store <16 x i8> [[TMP1]], ptr [[DST:%.*]], align 1
1902233a615SSimon Pilgrim; SSE-NEXT:    [[ARRAYIDX_16:%.*]] = getelementptr inbounds i8, ptr [[SRC]], i64 16
1912233a615SSimon Pilgrim; SSE-NEXT:    [[ARRAYIDX3_16:%.*]] = getelementptr inbounds i8, ptr [[DST]], i64 16
1922233a615SSimon Pilgrim; SSE-NEXT:    [[TMP2:%.*]] = load <16 x i8>, ptr [[ARRAYIDX_16]], align 1
193*38fffa63SPaul Walker; SSE-NEXT:    [[TMP3:%.*]] = and <16 x i8> [[TMP2]], splat (i8 -64)
1942233a615SSimon Pilgrim; SSE-NEXT:    store <16 x i8> [[TMP3]], ptr [[ARRAYIDX3_16]], align 1
1952233a615SSimon Pilgrim; SSE-NEXT:    ret void
1962233a615SSimon Pilgrim;
1972233a615SSimon Pilgrim; AVX-LABEL: @and32(
1982233a615SSimon Pilgrim; AVX-NEXT:  entry:
1992233a615SSimon Pilgrim; AVX-NEXT:    [[TMP0:%.*]] = load <32 x i8>, ptr [[SRC:%.*]], align 1
200*38fffa63SPaul Walker; AVX-NEXT:    [[TMP1:%.*]] = and <32 x i8> [[TMP0]], splat (i8 -64)
2012233a615SSimon Pilgrim; AVX-NEXT:    store <32 x i8> [[TMP1]], ptr [[DST:%.*]], align 1
2022233a615SSimon Pilgrim; AVX-NEXT:    ret void
2032233a615SSimon Pilgrim;
2042233a615SSimon Pilgrimentry:
2052233a615SSimon Pilgrim  %0 = load i8, ptr %src, align 1
2062233a615SSimon Pilgrim  %1 = and i8 %0, -64
2072233a615SSimon Pilgrim  store i8 %1, ptr %dst, align 1
2082233a615SSimon Pilgrim  %arrayidx.1 = getelementptr inbounds i8, ptr %src, i64 1
2092233a615SSimon Pilgrim  %2 = load i8, ptr %arrayidx.1, align 1
2102233a615SSimon Pilgrim  %3 = and i8 %2, -64
2112233a615SSimon Pilgrim  %arrayidx3.1 = getelementptr inbounds i8, ptr %dst, i64 1
2122233a615SSimon Pilgrim  store i8 %3, ptr %arrayidx3.1, align 1
2132233a615SSimon Pilgrim  %arrayidx.2 = getelementptr inbounds i8, ptr %src, i64 2
2142233a615SSimon Pilgrim  %4 = load i8, ptr %arrayidx.2, align 1
2152233a615SSimon Pilgrim  %5 = and i8 %4, -64
2162233a615SSimon Pilgrim  %arrayidx3.2 = getelementptr inbounds i8, ptr %dst, i64 2
2172233a615SSimon Pilgrim  store i8 %5, ptr %arrayidx3.2, align 1
2182233a615SSimon Pilgrim  %arrayidx.3 = getelementptr inbounds i8, ptr %src, i64 3
2192233a615SSimon Pilgrim  %6 = load i8, ptr %arrayidx.3, align 1
2202233a615SSimon Pilgrim  %7 = and i8 %6, -64
2212233a615SSimon Pilgrim  %arrayidx3.3 = getelementptr inbounds i8, ptr %dst, i64 3
2222233a615SSimon Pilgrim  store i8 %7, ptr %arrayidx3.3, align 1
2232233a615SSimon Pilgrim  %arrayidx.4 = getelementptr inbounds i8, ptr %src, i64 4
2242233a615SSimon Pilgrim  %8 = load i8, ptr %arrayidx.4, align 1
2252233a615SSimon Pilgrim  %9 = and i8 %8, -64
2262233a615SSimon Pilgrim  %arrayidx3.4 = getelementptr inbounds i8, ptr %dst, i64 4
2272233a615SSimon Pilgrim  store i8 %9, ptr %arrayidx3.4, align 1
2282233a615SSimon Pilgrim  %arrayidx.5 = getelementptr inbounds i8, ptr %src, i64 5
2292233a615SSimon Pilgrim  %10 = load i8, ptr %arrayidx.5, align 1
2302233a615SSimon Pilgrim  %11 = and i8 %10, -64
2312233a615SSimon Pilgrim  %arrayidx3.5 = getelementptr inbounds i8, ptr %dst, i64 5
2322233a615SSimon Pilgrim  store i8 %11, ptr %arrayidx3.5, align 1
2332233a615SSimon Pilgrim  %arrayidx.6 = getelementptr inbounds i8, ptr %src, i64 6
2342233a615SSimon Pilgrim  %12 = load i8, ptr %arrayidx.6, align 1
2352233a615SSimon Pilgrim  %13 = and i8 %12, -64
2362233a615SSimon Pilgrim  %arrayidx3.6 = getelementptr inbounds i8, ptr %dst, i64 6
2372233a615SSimon Pilgrim  store i8 %13, ptr %arrayidx3.6, align 1
2382233a615SSimon Pilgrim  %arrayidx.7 = getelementptr inbounds i8, ptr %src, i64 7
2392233a615SSimon Pilgrim  %14 = load i8, ptr %arrayidx.7, align 1
2402233a615SSimon Pilgrim  %15 = and i8 %14, -64
2412233a615SSimon Pilgrim  %arrayidx3.7 = getelementptr inbounds i8, ptr %dst, i64 7
2422233a615SSimon Pilgrim  store i8 %15, ptr %arrayidx3.7, align 1
2432233a615SSimon Pilgrim  %arrayidx.8 = getelementptr inbounds i8, ptr %src, i64 8
2442233a615SSimon Pilgrim  %16 = load i8, ptr %arrayidx.8, align 1
2452233a615SSimon Pilgrim  %17 = and i8 %16, -64
2462233a615SSimon Pilgrim  %arrayidx3.8 = getelementptr inbounds i8, ptr %dst, i64 8
2472233a615SSimon Pilgrim  store i8 %17, ptr %arrayidx3.8, align 1
2482233a615SSimon Pilgrim  %arrayidx.9 = getelementptr inbounds i8, ptr %src, i64 9
2492233a615SSimon Pilgrim  %18 = load i8, ptr %arrayidx.9, align 1
2502233a615SSimon Pilgrim  %19 = and i8 %18, -64
2512233a615SSimon Pilgrim  %arrayidx3.9 = getelementptr inbounds i8, ptr %dst, i64 9
2522233a615SSimon Pilgrim  store i8 %19, ptr %arrayidx3.9, align 1
2532233a615SSimon Pilgrim  %arrayidx.10 = getelementptr inbounds i8, ptr %src, i64 10
2542233a615SSimon Pilgrim  %20 = load i8, ptr %arrayidx.10, align 1
2552233a615SSimon Pilgrim  %21 = and i8 %20, -64
2562233a615SSimon Pilgrim  %arrayidx3.10 = getelementptr inbounds i8, ptr %dst, i64 10
2572233a615SSimon Pilgrim  store i8 %21, ptr %arrayidx3.10, align 1
2582233a615SSimon Pilgrim  %arrayidx.11 = getelementptr inbounds i8, ptr %src, i64 11
2592233a615SSimon Pilgrim  %22 = load i8, ptr %arrayidx.11, align 1
2602233a615SSimon Pilgrim  %23 = and i8 %22, -64
2612233a615SSimon Pilgrim  %arrayidx3.11 = getelementptr inbounds i8, ptr %dst, i64 11
2622233a615SSimon Pilgrim  store i8 %23, ptr %arrayidx3.11, align 1
2632233a615SSimon Pilgrim  %arrayidx.12 = getelementptr inbounds i8, ptr %src, i64 12
2642233a615SSimon Pilgrim  %24 = load i8, ptr %arrayidx.12, align 1
2652233a615SSimon Pilgrim  %25 = and i8 %24, -64
2662233a615SSimon Pilgrim  %arrayidx3.12 = getelementptr inbounds i8, ptr %dst, i64 12
2672233a615SSimon Pilgrim  store i8 %25, ptr %arrayidx3.12, align 1
2682233a615SSimon Pilgrim  %arrayidx.13 = getelementptr inbounds i8, ptr %src, i64 13
2692233a615SSimon Pilgrim  %26 = load i8, ptr %arrayidx.13, align 1
2702233a615SSimon Pilgrim  %27 = and i8 %26, -64
2712233a615SSimon Pilgrim  %arrayidx3.13 = getelementptr inbounds i8, ptr %dst, i64 13
2722233a615SSimon Pilgrim  store i8 %27, ptr %arrayidx3.13, align 1
2732233a615SSimon Pilgrim  %arrayidx.14 = getelementptr inbounds i8, ptr %src, i64 14
2742233a615SSimon Pilgrim  %28 = load i8, ptr %arrayidx.14, align 1
2752233a615SSimon Pilgrim  %29 = and i8 %28, -64
2762233a615SSimon Pilgrim  %arrayidx3.14 = getelementptr inbounds i8, ptr %dst, i64 14
2772233a615SSimon Pilgrim  store i8 %29, ptr %arrayidx3.14, align 1
2782233a615SSimon Pilgrim  %arrayidx.15 = getelementptr inbounds i8, ptr %src, i64 15
2792233a615SSimon Pilgrim  %30 = load i8, ptr %arrayidx.15, align 1
2802233a615SSimon Pilgrim  %31 = and i8 %30, -64
2812233a615SSimon Pilgrim  %arrayidx3.15 = getelementptr inbounds i8, ptr %dst, i64 15
2822233a615SSimon Pilgrim  store i8 %31, ptr %arrayidx3.15, align 1
2832233a615SSimon Pilgrim  %arrayidx.16 = getelementptr inbounds i8, ptr %src, i64 16
2842233a615SSimon Pilgrim  %32 = load i8, ptr %arrayidx.16, align 1
2852233a615SSimon Pilgrim  %33 = and i8 %32, -64
2862233a615SSimon Pilgrim  %arrayidx3.16 = getelementptr inbounds i8, ptr %dst, i64 16
2872233a615SSimon Pilgrim  store i8 %33, ptr %arrayidx3.16, align 1
2882233a615SSimon Pilgrim  %arrayidx.17 = getelementptr inbounds i8, ptr %src, i64 17
2892233a615SSimon Pilgrim  %34 = load i8, ptr %arrayidx.17, align 1
2902233a615SSimon Pilgrim  %35 = and i8 %34, -64
2912233a615SSimon Pilgrim  %arrayidx3.17 = getelementptr inbounds i8, ptr %dst, i64 17
2922233a615SSimon Pilgrim  store i8 %35, ptr %arrayidx3.17, align 1
2932233a615SSimon Pilgrim  %arrayidx.18 = getelementptr inbounds i8, ptr %src, i64 18
2942233a615SSimon Pilgrim  %36 = load i8, ptr %arrayidx.18, align 1
2952233a615SSimon Pilgrim  %37 = and i8 %36, -64
2962233a615SSimon Pilgrim  %arrayidx3.18 = getelementptr inbounds i8, ptr %dst, i64 18
2972233a615SSimon Pilgrim  store i8 %37, ptr %arrayidx3.18, align 1
2982233a615SSimon Pilgrim  %arrayidx.19 = getelementptr inbounds i8, ptr %src, i64 19
2992233a615SSimon Pilgrim  %38 = load i8, ptr %arrayidx.19, align 1
3002233a615SSimon Pilgrim  %39 = and i8 %38, -64
3012233a615SSimon Pilgrim  %arrayidx3.19 = getelementptr inbounds i8, ptr %dst, i64 19
3022233a615SSimon Pilgrim  store i8 %39, ptr %arrayidx3.19, align 1
3032233a615SSimon Pilgrim  %arrayidx.20 = getelementptr inbounds i8, ptr %src, i64 20
3042233a615SSimon Pilgrim  %40 = load i8, ptr %arrayidx.20, align 1
3052233a615SSimon Pilgrim  %41 = and i8 %40, -64
3062233a615SSimon Pilgrim  %arrayidx3.20 = getelementptr inbounds i8, ptr %dst, i64 20
3072233a615SSimon Pilgrim  store i8 %41, ptr %arrayidx3.20, align 1
3082233a615SSimon Pilgrim  %arrayidx.21 = getelementptr inbounds i8, ptr %src, i64 21
3092233a615SSimon Pilgrim  %42 = load i8, ptr %arrayidx.21, align 1
3102233a615SSimon Pilgrim  %43 = and i8 %42, -64
3112233a615SSimon Pilgrim  %arrayidx3.21 = getelementptr inbounds i8, ptr %dst, i64 21
3122233a615SSimon Pilgrim  store i8 %43, ptr %arrayidx3.21, align 1
3132233a615SSimon Pilgrim  %arrayidx.22 = getelementptr inbounds i8, ptr %src, i64 22
3142233a615SSimon Pilgrim  %44 = load i8, ptr %arrayidx.22, align 1
3152233a615SSimon Pilgrim  %45 = and i8 %44, -64
3162233a615SSimon Pilgrim  %arrayidx3.22 = getelementptr inbounds i8, ptr %dst, i64 22
3172233a615SSimon Pilgrim  store i8 %45, ptr %arrayidx3.22, align 1
3182233a615SSimon Pilgrim  %arrayidx.23 = getelementptr inbounds i8, ptr %src, i64 23
3192233a615SSimon Pilgrim  %46 = load i8, ptr %arrayidx.23, align 1
3202233a615SSimon Pilgrim  %47 = and i8 %46, -64
3212233a615SSimon Pilgrim  %arrayidx3.23 = getelementptr inbounds i8, ptr %dst, i64 23
3222233a615SSimon Pilgrim  store i8 %47, ptr %arrayidx3.23, align 1
3232233a615SSimon Pilgrim  %arrayidx.24 = getelementptr inbounds i8, ptr %src, i64 24
3242233a615SSimon Pilgrim  %48 = load i8, ptr %arrayidx.24, align 1
3252233a615SSimon Pilgrim  %49 = and i8 %48, -64
3262233a615SSimon Pilgrim  %arrayidx3.24 = getelementptr inbounds i8, ptr %dst, i64 24
3272233a615SSimon Pilgrim  store i8 %49, ptr %arrayidx3.24, align 1
3282233a615SSimon Pilgrim  %arrayidx.25 = getelementptr inbounds i8, ptr %src, i64 25
3292233a615SSimon Pilgrim  %50 = load i8, ptr %arrayidx.25, align 1
3302233a615SSimon Pilgrim  %51 = and i8 %50, -64
3312233a615SSimon Pilgrim  %arrayidx3.25 = getelementptr inbounds i8, ptr %dst, i64 25
3322233a615SSimon Pilgrim  store i8 %51, ptr %arrayidx3.25, align 1
3332233a615SSimon Pilgrim  %arrayidx.26 = getelementptr inbounds i8, ptr %src, i64 26
3342233a615SSimon Pilgrim  %52 = load i8, ptr %arrayidx.26, align 1
3352233a615SSimon Pilgrim  %53 = and i8 %52, -64
3362233a615SSimon Pilgrim  %arrayidx3.26 = getelementptr inbounds i8, ptr %dst, i64 26
3372233a615SSimon Pilgrim  store i8 %53, ptr %arrayidx3.26, align 1
3382233a615SSimon Pilgrim  %arrayidx.27 = getelementptr inbounds i8, ptr %src, i64 27
3392233a615SSimon Pilgrim  %54 = load i8, ptr %arrayidx.27, align 1
3402233a615SSimon Pilgrim  %55 = and i8 %54, -64
3412233a615SSimon Pilgrim  %arrayidx3.27 = getelementptr inbounds i8, ptr %dst, i64 27
3422233a615SSimon Pilgrim  store i8 %55, ptr %arrayidx3.27, align 1
3432233a615SSimon Pilgrim  %arrayidx.28 = getelementptr inbounds i8, ptr %src, i64 28
3442233a615SSimon Pilgrim  %56 = load i8, ptr %arrayidx.28, align 1
3452233a615SSimon Pilgrim  %57 = and i8 %56, -64
3462233a615SSimon Pilgrim  %arrayidx3.28 = getelementptr inbounds i8, ptr %dst, i64 28
3472233a615SSimon Pilgrim  store i8 %57, ptr %arrayidx3.28, align 1
3482233a615SSimon Pilgrim  %arrayidx.29 = getelementptr inbounds i8, ptr %src, i64 29
3492233a615SSimon Pilgrim  %58 = load i8, ptr %arrayidx.29, align 1
3502233a615SSimon Pilgrim  %59 = and i8 %58, -64
3512233a615SSimon Pilgrim  %arrayidx3.29 = getelementptr inbounds i8, ptr %dst, i64 29
3522233a615SSimon Pilgrim  store i8 %59, ptr %arrayidx3.29, align 1
3532233a615SSimon Pilgrim  %arrayidx.30 = getelementptr inbounds i8, ptr %src, i64 30
3542233a615SSimon Pilgrim  %60 = load i8, ptr %arrayidx.30, align 1
3552233a615SSimon Pilgrim  %61 = and i8 %60, -64
3562233a615SSimon Pilgrim  %arrayidx3.30 = getelementptr inbounds i8, ptr %dst, i64 30
3572233a615SSimon Pilgrim  store i8 %61, ptr %arrayidx3.30, align 1
3582233a615SSimon Pilgrim  %arrayidx.31 = getelementptr inbounds i8, ptr %src, i64 31
3592233a615SSimon Pilgrim  %62 = load i8, ptr %arrayidx.31, align 1
3602233a615SSimon Pilgrim  %63 = and i8 %62, -64
3612233a615SSimon Pilgrim  %arrayidx3.31 = getelementptr inbounds i8, ptr %dst, i64 31
3622233a615SSimon Pilgrim  store i8 %63, ptr %arrayidx3.31, align 1
3632233a615SSimon Pilgrim  ret void
3642233a615SSimon Pilgrim}
365