brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.1 KiB · aaf640b Raw
513 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -mtriple=x86_64-unknown -mattr=+sse2 -passes=slp-vectorizer -S | FileCheck %s --check-prefix=CHECK --check-prefix=SSE --check-prefix=SSE23; RUN: opt < %s -mtriple=x86_64-unknown -mattr=+sse4.2,+popcnt -passes=slp-vectorizer -S | FileCheck %s --check-prefix=CHECK --check-prefix=SSE --check-prefix=SSE424; RUN: opt < %s -mtriple=x86_64-unknown -mattr=+avx,+popcnt -passes=slp-vectorizer -S | FileCheck %s --check-prefix=CHECK --check-prefix=AVX --check-prefix=AVX15; RUN: opt < %s -mtriple=x86_64-unknown -mattr=+avx2,+popcnt -passes=slp-vectorizer -S | FileCheck %s --check-prefix=CHECK --check-prefix=AVX --check-prefix=AVX26 7target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"8 9@src64 = common global [4 x i64] zeroinitializer, align 3210@dst64 = common global [4 x i64] zeroinitializer, align 3211@src32 = common global [8 x i32] zeroinitializer, align 3212@dst32 = common global [8 x i32] zeroinitializer, align 3213@src16 = common global [16 x i16] zeroinitializer, align 3214@dst16 = common global [16 x i16] zeroinitializer, align 3215@src8  = common global [32 x i8] zeroinitializer, align 3216@dst8  = common global [32 x i8] zeroinitializer, align 3217 18declare i64 @llvm.ctpop.i64(i64)19declare i32 @llvm.ctpop.i32(i32)20declare i16 @llvm.ctpop.i16(i16)21declare  i8 @llvm.ctpop.i8(i8)22 23define void @ctpop_2i64() #0 {24; SSE2-LABEL: @ctpop_2i64(25; SSE2-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr @src64, align 826; SSE2-NEXT:    [[TMP2:%.*]] = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> [[TMP1]])27; SSE2-NEXT:    store <2 x i64> [[TMP2]], ptr @dst64, align 828; SSE2-NEXT:    ret void29;30; SSE42-LABEL: @ctpop_2i64(31; SSE42-NEXT:    [[LD0:%.*]] = load i64, ptr @src64, align 832; SSE42-NEXT:    [[LD1:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i32 0, i64 1), align 833; SSE42-NEXT:    [[CTPOP0:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD0]])34; SSE42-NEXT:    [[CTPOP1:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD1]])35; SSE42-NEXT:    store i64 [[CTPOP0]], ptr @dst64, align 836; SSE42-NEXT:    store i64 [[CTPOP1]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i32 0, i64 1), align 837; SSE42-NEXT:    ret void38;39; AVX1-LABEL: @ctpop_2i64(40; AVX1-NEXT:    [[LD0:%.*]] = load i64, ptr @src64, align 841; AVX1-NEXT:    [[LD1:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i32 0, i64 1), align 842; AVX1-NEXT:    [[CTPOP0:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD0]])43; AVX1-NEXT:    [[CTPOP1:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD1]])44; AVX1-NEXT:    store i64 [[CTPOP0]], ptr @dst64, align 845; AVX1-NEXT:    store i64 [[CTPOP1]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i32 0, i64 1), align 846; AVX1-NEXT:    ret void47;48; AVX2-LABEL: @ctpop_2i64(49; AVX2-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr @src64, align 850; AVX2-NEXT:    [[TMP2:%.*]] = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> [[TMP1]])51; AVX2-NEXT:    store <2 x i64> [[TMP2]], ptr @dst64, align 852; AVX2-NEXT:    ret void53;54  %ld0 = load i64, ptr @src64, align 855  %ld1 = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i32 0, i64 1), align 856  %ctpop0 = call i64 @llvm.ctpop.i64(i64 %ld0)57  %ctpop1 = call i64 @llvm.ctpop.i64(i64 %ld1)58  store i64 %ctpop0, ptr @dst64, align 859  store i64 %ctpop1, ptr getelementptr inbounds ([4 x i64], ptr @dst64, i32 0, i64 1), align 860  ret void61}62 63define void @ctpop_4i64() #0 {64; SSE2-LABEL: @ctpop_4i64(65; SSE2-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr @src64, align 466; SSE2-NEXT:    [[TMP2:%.*]] = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> [[TMP1]])67; SSE2-NEXT:    store <2 x i64> [[TMP2]], ptr @dst64, align 468; SSE2-NEXT:    [[TMP3:%.*]] = load <2 x i64>, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 2), align 469; SSE2-NEXT:    [[TMP4:%.*]] = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> [[TMP3]])70; SSE2-NEXT:    store <2 x i64> [[TMP4]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 2), align 471; SSE2-NEXT:    ret void72;73; SSE42-LABEL: @ctpop_4i64(74; SSE42-NEXT:    [[LD0:%.*]] = load i64, ptr @src64, align 475; SSE42-NEXT:    [[LD1:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 1), align 476; SSE42-NEXT:    [[LD2:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 2), align 477; SSE42-NEXT:    [[LD3:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 3), align 478; SSE42-NEXT:    [[CTPOP0:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD0]])79; SSE42-NEXT:    [[CTPOP1:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD1]])80; SSE42-NEXT:    [[CTPOP2:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD2]])81; SSE42-NEXT:    [[CTPOP3:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD3]])82; SSE42-NEXT:    store i64 [[CTPOP0]], ptr @dst64, align 483; SSE42-NEXT:    store i64 [[CTPOP1]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 1), align 484; SSE42-NEXT:    store i64 [[CTPOP2]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 2), align 485; SSE42-NEXT:    store i64 [[CTPOP3]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 3), align 486; SSE42-NEXT:    ret void87;88; AVX1-LABEL: @ctpop_4i64(89; AVX1-NEXT:    [[LD0:%.*]] = load i64, ptr @src64, align 490; AVX1-NEXT:    [[LD1:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 1), align 491; AVX1-NEXT:    [[LD2:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 2), align 492; AVX1-NEXT:    [[LD3:%.*]] = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 3), align 493; AVX1-NEXT:    [[CTPOP0:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD0]])94; AVX1-NEXT:    [[CTPOP1:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD1]])95; AVX1-NEXT:    [[CTPOP2:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD2]])96; AVX1-NEXT:    [[CTPOP3:%.*]] = call i64 @llvm.ctpop.i64(i64 [[LD3]])97; AVX1-NEXT:    store i64 [[CTPOP0]], ptr @dst64, align 498; AVX1-NEXT:    store i64 [[CTPOP1]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 1), align 499; AVX1-NEXT:    store i64 [[CTPOP2]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 2), align 4100; AVX1-NEXT:    store i64 [[CTPOP3]], ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 3), align 4101; AVX1-NEXT:    ret void102;103; AVX2-LABEL: @ctpop_4i64(104; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x i64>, ptr @src64, align 4105; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x i64> @llvm.ctpop.v4i64(<4 x i64> [[TMP1]])106; AVX2-NEXT:    store <4 x i64> [[TMP2]], ptr @dst64, align 4107; AVX2-NEXT:    ret void108;109  %ld0 = load i64, ptr @src64, align 4110  %ld1 = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 1), align 4111  %ld2 = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 2), align 4112  %ld3 = load i64, ptr getelementptr inbounds ([4 x i64], ptr @src64, i64 0, i64 3), align 4113  %ctpop0 = call i64 @llvm.ctpop.i64(i64 %ld0)114  %ctpop1 = call i64 @llvm.ctpop.i64(i64 %ld1)115  %ctpop2 = call i64 @llvm.ctpop.i64(i64 %ld2)116  %ctpop3 = call i64 @llvm.ctpop.i64(i64 %ld3)117  store i64 %ctpop0, ptr @dst64, align 4118  store i64 %ctpop1, ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 1), align 4119  store i64 %ctpop2, ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 2), align 4120  store i64 %ctpop3, ptr getelementptr inbounds ([4 x i64], ptr @dst64, i64 0, i64 3), align 4121  ret void122}123 124define void @ctpop_4i32() #0 {125; SSE2-LABEL: @ctpop_4i32(126; SSE2-NEXT:    [[TMP1:%.*]] = load <4 x i32>, ptr @src32, align 4127; SSE2-NEXT:    [[TMP2:%.*]] = call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> [[TMP1]])128; SSE2-NEXT:    store <4 x i32> [[TMP2]], ptr @dst32, align 4129; SSE2-NEXT:    ret void130;131; SSE42-LABEL: @ctpop_4i32(132; SSE42-NEXT:    [[LD0:%.*]] = load i32, ptr @src32, align 4133; SSE42-NEXT:    [[LD1:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 1), align 4134; SSE42-NEXT:    [[LD2:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 2), align 4135; SSE42-NEXT:    [[LD3:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 3), align 4136; SSE42-NEXT:    [[CTPOP0:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD0]])137; SSE42-NEXT:    [[CTPOP1:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD1]])138; SSE42-NEXT:    [[CTPOP2:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD2]])139; SSE42-NEXT:    [[CTPOP3:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD3]])140; SSE42-NEXT:    store i32 [[CTPOP0]], ptr @dst32, align 4141; SSE42-NEXT:    store i32 [[CTPOP1]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 1), align 4142; SSE42-NEXT:    store i32 [[CTPOP2]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 2), align 4143; SSE42-NEXT:    store i32 [[CTPOP3]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 3), align 4144; SSE42-NEXT:    ret void145;146; AVX-LABEL: @ctpop_4i32(147; AVX-NEXT:    [[TMP1:%.*]] = load <4 x i32>, ptr @src32, align 4148; AVX-NEXT:    [[TMP2:%.*]] = call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> [[TMP1]])149; AVX-NEXT:    store <4 x i32> [[TMP2]], ptr @dst32, align 4150; AVX-NEXT:    ret void151;152  %ld0 = load i32, ptr @src32, align 4153  %ld1 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 1), align 4154  %ld2 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 2), align 4155  %ld3 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 3), align 4156  %ctpop0 = call i32 @llvm.ctpop.i32(i32 %ld0)157  %ctpop1 = call i32 @llvm.ctpop.i32(i32 %ld1)158  %ctpop2 = call i32 @llvm.ctpop.i32(i32 %ld2)159  %ctpop3 = call i32 @llvm.ctpop.i32(i32 %ld3)160  store i32 %ctpop0, ptr @dst32, align 4161  store i32 %ctpop1, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 1), align 4162  store i32 %ctpop2, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 2), align 4163  store i32 %ctpop3, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 3), align 4164  ret void165}166 167define void @ctpop_8i32() #0 {168; SSE2-LABEL: @ctpop_8i32(169; SSE2-NEXT:    [[TMP1:%.*]] = load <4 x i32>, ptr @src32, align 2170; SSE2-NEXT:    [[TMP2:%.*]] = call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> [[TMP1]])171; SSE2-NEXT:    store <4 x i32> [[TMP2]], ptr @dst32, align 2172; SSE2-NEXT:    [[TMP3:%.*]] = load <4 x i32>, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 4), align 2173; SSE2-NEXT:    [[TMP4:%.*]] = call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> [[TMP3]])174; SSE2-NEXT:    store <4 x i32> [[TMP4]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 4), align 2175; SSE2-NEXT:    ret void176;177; SSE42-LABEL: @ctpop_8i32(178; SSE42-NEXT:    [[LD0:%.*]] = load i32, ptr @src32, align 2179; SSE42-NEXT:    [[LD1:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 1), align 2180; SSE42-NEXT:    [[LD2:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 2), align 2181; SSE42-NEXT:    [[LD3:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 3), align 2182; SSE42-NEXT:    [[LD4:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 4), align 2183; SSE42-NEXT:    [[LD5:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 5), align 2184; SSE42-NEXT:    [[LD6:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 6), align 2185; SSE42-NEXT:    [[LD7:%.*]] = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 7), align 2186; SSE42-NEXT:    [[CTPOP0:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD0]])187; SSE42-NEXT:    [[CTPOP1:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD1]])188; SSE42-NEXT:    [[CTPOP2:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD2]])189; SSE42-NEXT:    [[CTPOP3:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD3]])190; SSE42-NEXT:    [[CTPOP4:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD4]])191; SSE42-NEXT:    [[CTPOP5:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD5]])192; SSE42-NEXT:    [[CTPOP6:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD6]])193; SSE42-NEXT:    [[CTPOP7:%.*]] = call i32 @llvm.ctpop.i32(i32 [[LD7]])194; SSE42-NEXT:    store i32 [[CTPOP0]], ptr @dst32, align 2195; SSE42-NEXT:    store i32 [[CTPOP1]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 1), align 2196; SSE42-NEXT:    store i32 [[CTPOP2]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 2), align 2197; SSE42-NEXT:    store i32 [[CTPOP3]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 3), align 2198; SSE42-NEXT:    store i32 [[CTPOP4]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 4), align 2199; SSE42-NEXT:    store i32 [[CTPOP5]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 5), align 2200; SSE42-NEXT:    store i32 [[CTPOP6]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 6), align 2201; SSE42-NEXT:    store i32 [[CTPOP7]], ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 7), align 2202; SSE42-NEXT:    ret void203;204; AVX-LABEL: @ctpop_8i32(205; AVX-NEXT:    [[TMP1:%.*]] = load <8 x i32>, ptr @src32, align 2206; AVX-NEXT:    [[TMP2:%.*]] = call <8 x i32> @llvm.ctpop.v8i32(<8 x i32> [[TMP1]])207; AVX-NEXT:    store <8 x i32> [[TMP2]], ptr @dst32, align 2208; AVX-NEXT:    ret void209;210  %ld0 = load i32, ptr @src32, align 2211  %ld1 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 1), align 2212  %ld2 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 2), align 2213  %ld3 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 3), align 2214  %ld4 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 4), align 2215  %ld5 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 5), align 2216  %ld6 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 6), align 2217  %ld7 = load i32, ptr getelementptr inbounds ([8 x i32], ptr @src32, i32 0, i64 7), align 2218  %ctpop0 = call i32 @llvm.ctpop.i32(i32 %ld0)219  %ctpop1 = call i32 @llvm.ctpop.i32(i32 %ld1)220  %ctpop2 = call i32 @llvm.ctpop.i32(i32 %ld2)221  %ctpop3 = call i32 @llvm.ctpop.i32(i32 %ld3)222  %ctpop4 = call i32 @llvm.ctpop.i32(i32 %ld4)223  %ctpop5 = call i32 @llvm.ctpop.i32(i32 %ld5)224  %ctpop6 = call i32 @llvm.ctpop.i32(i32 %ld6)225  %ctpop7 = call i32 @llvm.ctpop.i32(i32 %ld7)226  store i32 %ctpop0, ptr @dst32, align 2227  store i32 %ctpop1, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 1), align 2228  store i32 %ctpop2, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 2), align 2229  store i32 %ctpop3, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 3), align 2230  store i32 %ctpop4, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 4), align 2231  store i32 %ctpop5, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 5), align 2232  store i32 %ctpop6, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 6), align 2233  store i32 %ctpop7, ptr getelementptr inbounds ([8 x i32], ptr @dst32, i32 0, i64 7), align 2234  ret void235}236 237define void @ctpop_8i16() #0 {238; CHECK-LABEL: @ctpop_8i16(239; CHECK-NEXT:    [[TMP1:%.*]] = load <8 x i16>, ptr @src16, align 2240; CHECK-NEXT:    [[TMP2:%.*]] = call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> [[TMP1]])241; CHECK-NEXT:    store <8 x i16> [[TMP2]], ptr @dst16, align 2242; CHECK-NEXT:    ret void243;244  %ld0 = load i16, ptr @src16, align 2245  %ld1 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 1), align 2246  %ld2 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 2), align 2247  %ld3 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 3), align 2248  %ld4 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 4), align 2249  %ld5 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 5), align 2250  %ld6 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 6), align 2251  %ld7 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 7), align 2252  %ctpop0 = call i16 @llvm.ctpop.i16(i16 %ld0)253  %ctpop1 = call i16 @llvm.ctpop.i16(i16 %ld1)254  %ctpop2 = call i16 @llvm.ctpop.i16(i16 %ld2)255  %ctpop3 = call i16 @llvm.ctpop.i16(i16 %ld3)256  %ctpop4 = call i16 @llvm.ctpop.i16(i16 %ld4)257  %ctpop5 = call i16 @llvm.ctpop.i16(i16 %ld5)258  %ctpop6 = call i16 @llvm.ctpop.i16(i16 %ld6)259  %ctpop7 = call i16 @llvm.ctpop.i16(i16 %ld7)260  store i16 %ctpop0, ptr @dst16, align 2261  store i16 %ctpop1, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 1), align 2262  store i16 %ctpop2, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 2), align 2263  store i16 %ctpop3, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 3), align 2264  store i16 %ctpop4, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 4), align 2265  store i16 %ctpop5, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 5), align 2266  store i16 %ctpop6, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 6), align 2267  store i16 %ctpop7, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 7), align 2268  ret void269}270 271define void @ctpop_16i16() #0 {272; SSE-LABEL: @ctpop_16i16(273; SSE-NEXT:    [[TMP1:%.*]] = load <8 x i16>, ptr @src16, align 2274; SSE-NEXT:    [[TMP2:%.*]] = call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> [[TMP1]])275; SSE-NEXT:    store <8 x i16> [[TMP2]], ptr @dst16, align 2276; SSE-NEXT:    [[TMP3:%.*]] = load <8 x i16>, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 8), align 2277; SSE-NEXT:    [[TMP4:%.*]] = call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> [[TMP3]])278; SSE-NEXT:    store <8 x i16> [[TMP4]], ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 8), align 2279; SSE-NEXT:    ret void280;281; AVX-LABEL: @ctpop_16i16(282; AVX-NEXT:    [[TMP1:%.*]] = load <16 x i16>, ptr @src16, align 2283; AVX-NEXT:    [[TMP2:%.*]] = call <16 x i16> @llvm.ctpop.v16i16(<16 x i16> [[TMP1]])284; AVX-NEXT:    store <16 x i16> [[TMP2]], ptr @dst16, align 2285; AVX-NEXT:    ret void286;287  %ld0  = load i16, ptr @src16, align 2288  %ld1  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  1), align 2289  %ld2  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  2), align 2290  %ld3  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  3), align 2291  %ld4  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  4), align 2292  %ld5  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  5), align 2293  %ld6  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  6), align 2294  %ld7  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  7), align 2295  %ld8  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  8), align 2296  %ld9  = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64  9), align 2297  %ld10 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 10), align 2298  %ld11 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 11), align 2299  %ld12 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 12), align 2300  %ld13 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 13), align 2301  %ld14 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 14), align 2302  %ld15 = load i16, ptr getelementptr inbounds ([16 x i16], ptr @src16, i16 0, i64 15), align 2303  %ctpop0  = call i16 @llvm.ctpop.i16(i16 %ld0)304  %ctpop1  = call i16 @llvm.ctpop.i16(i16 %ld1)305  %ctpop2  = call i16 @llvm.ctpop.i16(i16 %ld2)306  %ctpop3  = call i16 @llvm.ctpop.i16(i16 %ld3)307  %ctpop4  = call i16 @llvm.ctpop.i16(i16 %ld4)308  %ctpop5  = call i16 @llvm.ctpop.i16(i16 %ld5)309  %ctpop6  = call i16 @llvm.ctpop.i16(i16 %ld6)310  %ctpop7  = call i16 @llvm.ctpop.i16(i16 %ld7)311  %ctpop8  = call i16 @llvm.ctpop.i16(i16 %ld8)312  %ctpop9  = call i16 @llvm.ctpop.i16(i16 %ld9)313  %ctpop10 = call i16 @llvm.ctpop.i16(i16 %ld10)314  %ctpop11 = call i16 @llvm.ctpop.i16(i16 %ld11)315  %ctpop12 = call i16 @llvm.ctpop.i16(i16 %ld12)316  %ctpop13 = call i16 @llvm.ctpop.i16(i16 %ld13)317  %ctpop14 = call i16 @llvm.ctpop.i16(i16 %ld14)318  %ctpop15 = call i16 @llvm.ctpop.i16(i16 %ld15)319  store i16 %ctpop0 , ptr @dst16, align 2320  store i16 %ctpop1 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  1), align 2321  store i16 %ctpop2 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  2), align 2322  store i16 %ctpop3 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  3), align 2323  store i16 %ctpop4 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  4), align 2324  store i16 %ctpop5 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  5), align 2325  store i16 %ctpop6 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  6), align 2326  store i16 %ctpop7 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  7), align 2327  store i16 %ctpop8 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  8), align 2328  store i16 %ctpop9 , ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64  9), align 2329  store i16 %ctpop10, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 10), align 2330  store i16 %ctpop11, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 11), align 2331  store i16 %ctpop12, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 12), align 2332  store i16 %ctpop13, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 13), align 2333  store i16 %ctpop14, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 14), align 2334  store i16 %ctpop15, ptr getelementptr inbounds ([16 x i16], ptr @dst16, i16 0, i64 15), align 2335  ret void336}337 338define void @ctpop_16i8() #0 {339; CHECK-LABEL: @ctpop_16i8(340; CHECK-NEXT:    [[TMP1:%.*]] = load <16 x i8>, ptr @src8, align 1341; CHECK-NEXT:    [[TMP2:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> [[TMP1]])342; CHECK-NEXT:    store <16 x i8> [[TMP2]], ptr @dst8, align 1343; CHECK-NEXT:    ret void344;345  %ld0  = load i8, ptr @src8, align 1346  %ld1  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  1), align 1347  %ld2  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  2), align 1348  %ld3  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  3), align 1349  %ld4  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  4), align 1350  %ld5  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  5), align 1351  %ld6  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  6), align 1352  %ld7  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  7), align 1353  %ld8  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  8), align 1354  %ld9  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  9), align 1355  %ld10 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 10), align 1356  %ld11 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 11), align 1357  %ld12 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 12), align 1358  %ld13 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 13), align 1359  %ld14 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 14), align 1360  %ld15 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 15), align 1361  %ctpop0  = call i8 @llvm.ctpop.i8(i8 %ld0)362  %ctpop1  = call i8 @llvm.ctpop.i8(i8 %ld1)363  %ctpop2  = call i8 @llvm.ctpop.i8(i8 %ld2)364  %ctpop3  = call i8 @llvm.ctpop.i8(i8 %ld3)365  %ctpop4  = call i8 @llvm.ctpop.i8(i8 %ld4)366  %ctpop5  = call i8 @llvm.ctpop.i8(i8 %ld5)367  %ctpop6  = call i8 @llvm.ctpop.i8(i8 %ld6)368  %ctpop7  = call i8 @llvm.ctpop.i8(i8 %ld7)369  %ctpop8  = call i8 @llvm.ctpop.i8(i8 %ld8)370  %ctpop9  = call i8 @llvm.ctpop.i8(i8 %ld9)371  %ctpop10 = call i8 @llvm.ctpop.i8(i8 %ld10)372  %ctpop11 = call i8 @llvm.ctpop.i8(i8 %ld11)373  %ctpop12 = call i8 @llvm.ctpop.i8(i8 %ld12)374  %ctpop13 = call i8 @llvm.ctpop.i8(i8 %ld13)375  %ctpop14 = call i8 @llvm.ctpop.i8(i8 %ld14)376  %ctpop15 = call i8 @llvm.ctpop.i8(i8 %ld15)377  store i8 %ctpop0 , ptr @dst8, align 1378  store i8 %ctpop1 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  1), align 1379  store i8 %ctpop2 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  2), align 1380  store i8 %ctpop3 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  3), align 1381  store i8 %ctpop4 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  4), align 1382  store i8 %ctpop5 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  5), align 1383  store i8 %ctpop6 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  6), align 1384  store i8 %ctpop7 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  7), align 1385  store i8 %ctpop8 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  8), align 1386  store i8 %ctpop9 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  9), align 1387  store i8 %ctpop10, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 10), align 1388  store i8 %ctpop11, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 11), align 1389  store i8 %ctpop12, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 12), align 1390  store i8 %ctpop13, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 13), align 1391  store i8 %ctpop14, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 14), align 1392  store i8 %ctpop15, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 15), align 1393  ret void394}395 396define void @ctpop_32i8() #0 {397; SSE-LABEL: @ctpop_32i8(398; SSE-NEXT:    [[TMP1:%.*]] = load <16 x i8>, ptr @src8, align 1399; SSE-NEXT:    [[TMP2:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> [[TMP1]])400; SSE-NEXT:    store <16 x i8> [[TMP2]], ptr @dst8, align 1401; SSE-NEXT:    [[TMP3:%.*]] = load <16 x i8>, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 16), align 1402; SSE-NEXT:    [[TMP4:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> [[TMP3]])403; SSE-NEXT:    store <16 x i8> [[TMP4]], ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 16), align 1404; SSE-NEXT:    ret void405;406; AVX-LABEL: @ctpop_32i8(407; AVX-NEXT:    [[TMP1:%.*]] = load <32 x i8>, ptr @src8, align 1408; AVX-NEXT:    [[TMP2:%.*]] = call <32 x i8> @llvm.ctpop.v32i8(<32 x i8> [[TMP1]])409; AVX-NEXT:    store <32 x i8> [[TMP2]], ptr @dst8, align 1410; AVX-NEXT:    ret void411;412  %ld0  = load i8, ptr @src8, align 1413  %ld1  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  1), align 1414  %ld2  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  2), align 1415  %ld3  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  3), align 1416  %ld4  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  4), align 1417  %ld5  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  5), align 1418  %ld6  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  6), align 1419  %ld7  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  7), align 1420  %ld8  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  8), align 1421  %ld9  = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64  9), align 1422  %ld10 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 10), align 1423  %ld11 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 11), align 1424  %ld12 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 12), align 1425  %ld13 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 13), align 1426  %ld14 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 14), align 1427  %ld15 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 15), align 1428  %ld16 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 16), align 1429  %ld17 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 17), align 1430  %ld18 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 18), align 1431  %ld19 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 19), align 1432  %ld20 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 20), align 1433  %ld21 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 21), align 1434  %ld22 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 22), align 1435  %ld23 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 23), align 1436  %ld24 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 24), align 1437  %ld25 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 25), align 1438  %ld26 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 26), align 1439  %ld27 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 27), align 1440  %ld28 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 28), align 1441  %ld29 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 29), align 1442  %ld30 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 30), align 1443  %ld31 = load i8, ptr getelementptr inbounds ([32 x i8], ptr @src8, i8 0, i64 31), align 1444  %ctpop0  = call i8 @llvm.ctpop.i8(i8 %ld0)445  %ctpop1  = call i8 @llvm.ctpop.i8(i8 %ld1)446  %ctpop2  = call i8 @llvm.ctpop.i8(i8 %ld2)447  %ctpop3  = call i8 @llvm.ctpop.i8(i8 %ld3)448  %ctpop4  = call i8 @llvm.ctpop.i8(i8 %ld4)449  %ctpop5  = call i8 @llvm.ctpop.i8(i8 %ld5)450  %ctpop6  = call i8 @llvm.ctpop.i8(i8 %ld6)451  %ctpop7  = call i8 @llvm.ctpop.i8(i8 %ld7)452  %ctpop8  = call i8 @llvm.ctpop.i8(i8 %ld8)453  %ctpop9  = call i8 @llvm.ctpop.i8(i8 %ld9)454  %ctpop10 = call i8 @llvm.ctpop.i8(i8 %ld10)455  %ctpop11 = call i8 @llvm.ctpop.i8(i8 %ld11)456  %ctpop12 = call i8 @llvm.ctpop.i8(i8 %ld12)457  %ctpop13 = call i8 @llvm.ctpop.i8(i8 %ld13)458  %ctpop14 = call i8 @llvm.ctpop.i8(i8 %ld14)459  %ctpop15 = call i8 @llvm.ctpop.i8(i8 %ld15)460  %ctpop16 = call i8 @llvm.ctpop.i8(i8 %ld16)461  %ctpop17 = call i8 @llvm.ctpop.i8(i8 %ld17)462  %ctpop18 = call i8 @llvm.ctpop.i8(i8 %ld18)463  %ctpop19 = call i8 @llvm.ctpop.i8(i8 %ld19)464  %ctpop20 = call i8 @llvm.ctpop.i8(i8 %ld20)465  %ctpop21 = call i8 @llvm.ctpop.i8(i8 %ld21)466  %ctpop22 = call i8 @llvm.ctpop.i8(i8 %ld22)467  %ctpop23 = call i8 @llvm.ctpop.i8(i8 %ld23)468  %ctpop24 = call i8 @llvm.ctpop.i8(i8 %ld24)469  %ctpop25 = call i8 @llvm.ctpop.i8(i8 %ld25)470  %ctpop26 = call i8 @llvm.ctpop.i8(i8 %ld26)471  %ctpop27 = call i8 @llvm.ctpop.i8(i8 %ld27)472  %ctpop28 = call i8 @llvm.ctpop.i8(i8 %ld28)473  %ctpop29 = call i8 @llvm.ctpop.i8(i8 %ld29)474  %ctpop30 = call i8 @llvm.ctpop.i8(i8 %ld30)475  %ctpop31 = call i8 @llvm.ctpop.i8(i8 %ld31)476  store i8 %ctpop0 , ptr @dst8, align 1477  store i8 %ctpop1 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  1), align 1478  store i8 %ctpop2 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  2), align 1479  store i8 %ctpop3 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  3), align 1480  store i8 %ctpop4 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  4), align 1481  store i8 %ctpop5 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  5), align 1482  store i8 %ctpop6 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  6), align 1483  store i8 %ctpop7 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  7), align 1484  store i8 %ctpop8 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  8), align 1485  store i8 %ctpop9 , ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64  9), align 1486  store i8 %ctpop10, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 10), align 1487  store i8 %ctpop11, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 11), align 1488  store i8 %ctpop12, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 12), align 1489  store i8 %ctpop13, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 13), align 1490  store i8 %ctpop14, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 14), align 1491  store i8 %ctpop15, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 15), align 1492  store i8 %ctpop16, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 16), align 1493  store i8 %ctpop17, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 17), align 1494  store i8 %ctpop18, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 18), align 1495  store i8 %ctpop19, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 19), align 1496  store i8 %ctpop20, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 20), align 1497  store i8 %ctpop21, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 21), align 1498  store i8 %ctpop22, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 22), align 1499  store i8 %ctpop23, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 23), align 1500  store i8 %ctpop24, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 24), align 1501  store i8 %ctpop25, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 25), align 1502  store i8 %ctpop26, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 26), align 1503  store i8 %ctpop27, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 27), align 1504  store i8 %ctpop28, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 28), align 1505  store i8 %ctpop29, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 29), align 1506  store i8 %ctpop30, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 30), align 1507  store i8 %ctpop31, ptr getelementptr inbounds ([32 x i8], ptr @dst8, i8 0, i64 31), align 1508  ret void509}510 511attributes #0 = { nounwind }512 513