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