1112 lines · plain
1; RUN: opt -passes=loop-vectorize -force-vector-width=2 -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s --check-prefix=VF_22; RUN: opt -passes=loop-vectorize -force-vector-width=4 -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s --check-prefix=VF_43; RUN: opt -passes=loop-vectorize -force-vector-width=8 -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s --check-prefix=VF_84; RUN: opt -passes=loop-vectorize -force-vector-width=16 -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s --check-prefix=VF_165; REQUIRES: asserts6 7target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"8target triple = "thumbv8.1m.main-none-eabi"9 10; Factor 211 12%i8.2 = type {i8, i8}13define void @i8_factor_2(ptr %data, i64 %n) #0 {14entry:15 br label %for.body16 17; VF_2-LABEL: Checking a loop in 'i8_factor_2'18; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp2 = load i8, ptr %tmp0, align 119; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i8, ptr %tmp1, align 120; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp2, ptr %tmp0, align 121; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp3, ptr %tmp1, align 122; VF_4-LABEL: Checking a loop in 'i8_factor_2'23; VF_4: Found an estimated cost of 4 for VF 4 For instruction: %tmp2 = load i8, ptr %tmp0, align 124; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp3 = load i8, ptr %tmp1, align 125; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store i8 %tmp2, ptr %tmp0, align 126; VF_4-NEXT: Found an estimated cost of 4 for VF 4 For instruction: store i8 %tmp3, ptr %tmp1, align 127; VF_8-LABEL: Checking a loop in 'i8_factor_2'28; VF_8: Found an estimated cost of 4 for VF 8 For instruction: %tmp2 = load i8, ptr %tmp0, align 129; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp3 = load i8, ptr %tmp1, align 130; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store i8 %tmp2, ptr %tmp0, align 131; VF_8-NEXT: Found an estimated cost of 4 for VF 8 For instruction: store i8 %tmp3, ptr %tmp1, align 132; VF_16-LABEL: Checking a loop in 'i8_factor_2'33; VF_16: Found an estimated cost of 4 for VF 16 For instruction: %tmp2 = load i8, ptr %tmp0, align 134; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp3 = load i8, ptr %tmp1, align 135; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store i8 %tmp2, ptr %tmp0, align 136; VF_16-NEXT: Found an estimated cost of 4 for VF 16 For instruction: store i8 %tmp3, ptr %tmp1, align 137for.body:38 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]39 %tmp0 = getelementptr inbounds %i8.2, ptr %data, i64 %i, i32 040 %tmp1 = getelementptr inbounds %i8.2, ptr %data, i64 %i, i32 141 %tmp2 = load i8, ptr %tmp0, align 142 %tmp3 = load i8, ptr %tmp1, align 143 store i8 %tmp2, ptr %tmp0, align 144 store i8 %tmp3, ptr %tmp1, align 145 %i.next = add nuw nsw i64 %i, 146 %cond = icmp slt i64 %i.next, %n47 br i1 %cond, label %for.body, label %for.end48 49for.end:50 ret void51}52 53%i16.2 = type {i16, i16}54define void @i16_factor_2(ptr %data, i64 %n) #0 {55entry:56 br label %for.body57 58; VF_2-LABEL: Checking a loop in 'i16_factor_2'59; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp2 = load i16, ptr %tmp0, align 260; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i16, ptr %tmp1, align 261; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp2, ptr %tmp0, align 262; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp3, ptr %tmp1, align 263; VF_4-LABEL: Checking a loop in 'i16_factor_2'64; VF_4: Found an estimated cost of 4 for VF 4 For instruction: %tmp2 = load i16, ptr %tmp0, align 265; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp3 = load i16, ptr %tmp1, align 266; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store i16 %tmp2, ptr %tmp0, align 267; VF_4-NEXT: Found an estimated cost of 4 for VF 4 For instruction: store i16 %tmp3, ptr %tmp1, align 268; VF_8-LABEL: Checking a loop in 'i16_factor_2'69; VF_8: Found an estimated cost of 4 for VF 8 For instruction: %tmp2 = load i16, ptr %tmp0, align 270; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp3 = load i16, ptr %tmp1, align 271; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store i16 %tmp2, ptr %tmp0, align 272; VF_8-NEXT: Found an estimated cost of 4 for VF 8 For instruction: store i16 %tmp3, ptr %tmp1, align 273; VF_16-LABEL: Checking a loop in 'i16_factor_2'74; VF_16: Found an estimated cost of 8 for VF 16 For instruction: %tmp2 = load i16, ptr %tmp0, align 275; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp3 = load i16, ptr %tmp1, align 276; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store i16 %tmp2, ptr %tmp0, align 277; VF_16-NEXT: Found an estimated cost of 8 for VF 16 For instruction: store i16 %tmp3, ptr %tmp1, align 278for.body:79 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]80 %tmp0 = getelementptr inbounds %i16.2, ptr %data, i64 %i, i32 081 %tmp1 = getelementptr inbounds %i16.2, ptr %data, i64 %i, i32 182 %tmp2 = load i16, ptr %tmp0, align 283 %tmp3 = load i16, ptr %tmp1, align 284 store i16 %tmp2, ptr %tmp0, align 285 store i16 %tmp3, ptr %tmp1, align 286 %i.next = add nuw nsw i64 %i, 187 %cond = icmp slt i64 %i.next, %n88 br i1 %cond, label %for.body, label %for.end89 90for.end:91 ret void92}93 94%i32.2 = type {i32, i32}95define void @i32_factor_2(ptr %data, i64 %n) #0 {96entry:97 br label %for.body98 99; VF_2-LABEL: Checking a loop in 'i32_factor_2'100; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp2 = load i32, ptr %tmp0, align 4101; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i32, ptr %tmp1, align 4102; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp2, ptr %tmp0, align 4103; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp3, ptr %tmp1, align 4104; VF_4-LABEL: Checking a loop in 'i32_factor_2'105; VF_4: Found an estimated cost of 4 for VF 4 For instruction: %tmp2 = load i32, ptr %tmp0, align 4106; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp3 = load i32, ptr %tmp1, align 4107; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store i32 %tmp2, ptr %tmp0, align 4108; VF_4-NEXT: Found an estimated cost of 4 for VF 4 For instruction: store i32 %tmp3, ptr %tmp1, align 4109; VF_8-LABEL: Checking a loop in 'i32_factor_2'110; VF_8: Found an estimated cost of 8 for VF 8 For instruction: %tmp2 = load i32, ptr %tmp0, align 4111; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp3 = load i32, ptr %tmp1, align 4112; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store i32 %tmp2, ptr %tmp0, align 4113; VF_8-NEXT: Found an estimated cost of 8 for VF 8 For instruction: store i32 %tmp3, ptr %tmp1, align 4114; VF_16-LABEL: Checking a loop in 'i32_factor_2'115; VF_16: Found an estimated cost of 16 for VF 16 For instruction: %tmp2 = load i32, ptr %tmp0, align 4116; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp3 = load i32, ptr %tmp1, align 4117; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store i32 %tmp2, ptr %tmp0, align 4118; VF_16-NEXT: Found an estimated cost of 16 for VF 16 For instruction: store i32 %tmp3, ptr %tmp1, align 4119for.body:120 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]121 %tmp0 = getelementptr inbounds %i32.2, ptr %data, i64 %i, i32 0122 %tmp1 = getelementptr inbounds %i32.2, ptr %data, i64 %i, i32 1123 %tmp2 = load i32, ptr %tmp0, align 4124 %tmp3 = load i32, ptr %tmp1, align 4125 store i32 %tmp2, ptr %tmp0, align 4126 store i32 %tmp3, ptr %tmp1, align 4127 %i.next = add nuw nsw i64 %i, 1128 %cond = icmp slt i64 %i.next, %n129 br i1 %cond, label %for.body, label %for.end130 131for.end:132 ret void133}134 135%i64.2 = type {i64, i64}136define void @i64_factor_2(ptr %data, i64 %n) #0 {137entry:138 br label %for.body139 140; VF_2-LABEL: Checking a loop in 'i64_factor_2'141; VF_2: Found an estimated cost of 22 for VF 2 For instruction: %tmp2 = load i64, ptr %tmp0, align 8142; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp3 = load i64, ptr %tmp1, align 8143; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp2, ptr %tmp0, align 8144; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp3, ptr %tmp1, align 8145; VF_4-LABEL: Checking a loop in 'i64_factor_2'146; VF_4: Found an estimated cost of 44 for VF 4 For instruction: %tmp2 = load i64, ptr %tmp0, align 8147; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp3 = load i64, ptr %tmp1, align 8148; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp2, ptr %tmp0, align 8149; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp3, ptr %tmp1, align 8150; VF_8-LABEL: Checking a loop in 'i64_factor_2'151; VF_8: Found an estimated cost of 88 for VF 8 For instruction: %tmp2 = load i64, ptr %tmp0, align 8152; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp3 = load i64, ptr %tmp1, align 8153; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp2, ptr %tmp0, align 8154; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp3, ptr %tmp1, align 8155; VF_16-LABEL: Checking a loop in 'i64_factor_2'156; VF_16: Found an estimated cost of 176 for VF 16 For instruction: %tmp2 = load i64, ptr %tmp0, align 8157; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp3 = load i64, ptr %tmp1, align 8158; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp2, ptr %tmp0, align 8159; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp3, ptr %tmp1, align 8160for.body:161 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]162 %tmp0 = getelementptr inbounds %i64.2, ptr %data, i64 %i, i32 0163 %tmp1 = getelementptr inbounds %i64.2, ptr %data, i64 %i, i32 1164 %tmp2 = load i64, ptr %tmp0, align 8165 %tmp3 = load i64, ptr %tmp1, align 8166 store i64 %tmp2, ptr %tmp0, align 8167 store i64 %tmp3, ptr %tmp1, align 8168 %i.next = add nuw nsw i64 %i, 1169 %cond = icmp slt i64 %i.next, %n170 br i1 %cond, label %for.body, label %for.end171 172for.end:173 ret void174}175 176%f16.2 = type {half, half}177define void @f16_factor_2(ptr %data, i64 %n) #0 {178entry:179 br label %for.body180 181; VF_2-LABEL: Checking a loop in 'f16_factor_2'182; VF_2: Found an estimated cost of 6 for VF 2 For instruction: %tmp2 = load half, ptr %tmp0, align 2183; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp3 = load half, ptr %tmp1, align 2184; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store half %tmp2, ptr %tmp0, align 2185; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store half %tmp3, ptr %tmp1, align 2186; VF_4-LABEL: Checking a loop in 'f16_factor_2'187; VF_4: Found an estimated cost of 18 for VF 4 For instruction: %tmp2 = load half, ptr %tmp0, align 2188; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp3 = load half, ptr %tmp1, align 2189; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp2, ptr %tmp0, align 2190; VF_4-NEXT: Found an estimated cost of 18 for VF 4 For instruction: store half %tmp3, ptr %tmp1, align 2191; VF_8-LABEL: Checking a loop in 'f16_factor_2'192; VF_8: Found an estimated cost of 4 for VF 8 For instruction: %tmp2 = load half, ptr %tmp0, align 2193; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp3 = load half, ptr %tmp1, align 2194; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp2, ptr %tmp0, align 2195; VF_8-NEXT: Found an estimated cost of 4 for VF 8 For instruction: store half %tmp3, ptr %tmp1, align 2196; VF_16-LABEL: Checking a loop in 'f16_factor_2'197; VF_16: Found an estimated cost of 8 for VF 16 For instruction: %tmp2 = load half, ptr %tmp0, align 2198; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp3 = load half, ptr %tmp1, align 2199; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp2, ptr %tmp0, align 2200; VF_16-NEXT: Found an estimated cost of 8 for VF 16 For instruction: store half %tmp3, ptr %tmp1, align 2201for.body:202 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]203 %tmp0 = getelementptr inbounds %f16.2, ptr %data, i64 %i, i32 0204 %tmp1 = getelementptr inbounds %f16.2, ptr %data, i64 %i, i32 1205 %tmp2 = load half, ptr %tmp0, align 2206 %tmp3 = load half, ptr %tmp1, align 2207 store half %tmp2, ptr %tmp0, align 2208 store half %tmp3, ptr %tmp1, align 2209 %i.next = add nuw nsw i64 %i, 1210 %cond = icmp slt i64 %i.next, %n211 br i1 %cond, label %for.body, label %for.end212 213for.end:214 ret void215}216 217%f32.2 = type {float, float}218define void @f32_factor_2(ptr %data, i64 %n) #0 {219entry:220 br label %for.body221 222; VF_2-LABEL: Checking a loop in 'f32_factor_2'223; VF_2: Found an estimated cost of 10 for VF 2 For instruction: %tmp2 = load float, ptr %tmp0, align 4224; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp3 = load float, ptr %tmp1, align 4225; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp2, ptr %tmp0, align 4226; VF_2-NEXT: Found an estimated cost of 10 for VF 2 For instruction: store float %tmp3, ptr %tmp1, align 4227; VF_4-LABEL: Checking a loop in 'f32_factor_2'228; VF_4: Found an estimated cost of 4 for VF 4 For instruction: %tmp2 = load float, ptr %tmp0, align 4229; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp3 = load float, ptr %tmp1, align 4230; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store float %tmp2, ptr %tmp0, align 4231; VF_4-NEXT: Found an estimated cost of 4 for VF 4 For instruction: store float %tmp3, ptr %tmp1, align 4232; VF_8-LABEL: Checking a loop in 'f32_factor_2'233; VF_8: Found an estimated cost of 8 for VF 8 For instruction: %tmp2 = load float, ptr %tmp0, align 4234; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp3 = load float, ptr %tmp1, align 4235; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp2, ptr %tmp0, align 4236; VF_8-NEXT: Found an estimated cost of 8 for VF 8 For instruction: store float %tmp3, ptr %tmp1, align 4237; VF_16-LABEL: Checking a loop in 'f32_factor_2'238; VF_16: Found an estimated cost of 16 for VF 16 For instruction: %tmp2 = load float, ptr %tmp0, align 4239; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp3 = load float, ptr %tmp1, align 4240; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp2, ptr %tmp0, align 4241; VF_16-NEXT: Found an estimated cost of 16 for VF 16 For instruction: store float %tmp3, ptr %tmp1, align 4242for.body:243 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]244 %tmp0 = getelementptr inbounds %f32.2, ptr %data, i64 %i, i32 0245 %tmp1 = getelementptr inbounds %f32.2, ptr %data, i64 %i, i32 1246 %tmp2 = load float, ptr %tmp0, align 4247 %tmp3 = load float, ptr %tmp1, align 4248 store float %tmp2, ptr %tmp0, align 4249 store float %tmp3, ptr %tmp1, align 4250 %i.next = add nuw nsw i64 %i, 1251 %cond = icmp slt i64 %i.next, %n252 br i1 %cond, label %for.body, label %for.end253 254for.end:255 ret void256}257 258%f64.2 = type {double, double}259define void @f64_factor_2(ptr %data, i64 %n) #0 {260entry:261 br label %for.body262 263; VF_2-LABEL: Checking a loop in 'f64_factor_2'264; VF_2: Found an estimated cost of 6 for VF 2 For instruction: %tmp2 = load double, ptr %tmp0, align 8265; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp3 = load double, ptr %tmp1, align 8266; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp2, ptr %tmp0, align 8267; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp3, ptr %tmp1, align 8268; VF_4-LABEL: Checking a loop in 'f64_factor_2'269; VF_4: Found an estimated cost of 12 for VF 4 For instruction: %tmp2 = load double, ptr %tmp0, align 8270; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp3 = load double, ptr %tmp1, align 8271; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp2, ptr %tmp0, align 8272; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp3, ptr %tmp1, align 8273; VF_8-LABEL: Checking a loop in 'f64_factor_2'274; VF_8: Found an estimated cost of 24 for VF 8 For instruction: %tmp2 = load double, ptr %tmp0, align 8275; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp3 = load double, ptr %tmp1, align 8276; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp2, ptr %tmp0, align 8277; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp3, ptr %tmp1, align 8278; VF_16-LABEL: Checking a loop in 'f64_factor_2'279; VF_16: Found an estimated cost of 48 for VF 16 For instruction: %tmp2 = load double, ptr %tmp0, align 8280; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp3 = load double, ptr %tmp1, align 8281; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp2, ptr %tmp0, align 8282; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp3, ptr %tmp1, align 8283for.body:284 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]285 %tmp0 = getelementptr inbounds %f64.2, ptr %data, i64 %i, i32 0286 %tmp1 = getelementptr inbounds %f64.2, ptr %data, i64 %i, i32 1287 %tmp2 = load double, ptr %tmp0, align 8288 %tmp3 = load double, ptr %tmp1, align 8289 store double %tmp2, ptr %tmp0, align 8290 store double %tmp3, ptr %tmp1, align 8291 %i.next = add nuw nsw i64 %i, 1292 %cond = icmp slt i64 %i.next, %n293 br i1 %cond, label %for.body, label %for.end294 295for.end:296 ret void297}298 299 300 301; Factor 3302 303%i8.3 = type {i8, i8, i8}304define void @i8_factor_3(ptr %data, i64 %n) #0 {305entry:306 br label %for.body307 308; VF_2-LABEL: Checking a loop in 'i8_factor_3'309; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i8, ptr %tmp0, align 1310; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i8, ptr %tmp1, align 1311; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i8, ptr %tmp2, align 1312; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp3, ptr %tmp0, align 1313; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp4, ptr %tmp1, align 1314; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp5, ptr %tmp2, align 1315; VF_4-LABEL: Checking a loop in 'i8_factor_3'316; VF_4: Found an estimated cost of 24 for VF 4 For instruction: %tmp3 = load i8, ptr %tmp0, align 1317; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp4 = load i8, ptr %tmp1, align 1318; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp5 = load i8, ptr %tmp2, align 1319; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp3, ptr %tmp0, align 1320; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp4, ptr %tmp1, align 1321; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp5, ptr %tmp2, align 1322; VF_8-LABEL: Checking a loop in 'i8_factor_3'323; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp3 = load i8, ptr %tmp0, align 1324; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i8, ptr %tmp1, align 1325; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i8, ptr %tmp2, align 1326; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp3, ptr %tmp0, align 1327; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp4, ptr %tmp1, align 1328; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp5, ptr %tmp2, align 1329; VF_16-LABEL: Checking a loop in 'i8_factor_3'330; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp3 = load i8, ptr %tmp0, align 1331; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i8, ptr %tmp1, align 1332; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i8, ptr %tmp2, align 1333; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp3, ptr %tmp0, align 1334; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp4, ptr %tmp1, align 1335; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp5, ptr %tmp2, align 1336for.body:337 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]338 %tmp0 = getelementptr inbounds %i8.3, ptr %data, i64 %i, i32 0339 %tmp1 = getelementptr inbounds %i8.3, ptr %data, i64 %i, i32 1340 %tmp2 = getelementptr inbounds %i8.3, ptr %data, i64 %i, i32 2341 %tmp3 = load i8, ptr %tmp0, align 1342 %tmp4 = load i8, ptr %tmp1, align 1343 %tmp5 = load i8, ptr %tmp2, align 1344 store i8 %tmp3, ptr %tmp0, align 1345 store i8 %tmp4, ptr %tmp1, align 1346 store i8 %tmp5, ptr %tmp2, align 1347 %i.next = add nuw nsw i64 %i, 1348 %cond = icmp slt i64 %i.next, %n349 br i1 %cond, label %for.body, label %for.end350 351for.end:352 ret void353}354 355%i16.3 = type {i16, i16, i16}356define void @i16_factor_3(ptr %data, i64 %n) #0 {357entry:358 br label %for.body359 360; VF_2-LABEL: Checking a loop in 'i16_factor_3'361; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i16, ptr %tmp0, align 2362; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i16, ptr %tmp1, align 2363; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i16, ptr %tmp2, align 2364; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp3, ptr %tmp0, align 2365; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp4, ptr %tmp1, align 2366; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp5, ptr %tmp2, align 2367; VF_4-LABEL: Checking a loop in 'i16_factor_3'368; VF_4: Found an estimated cost of 24 for VF 4 For instruction: %tmp3 = load i16, ptr %tmp0, align 2369; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp4 = load i16, ptr %tmp1, align 2370; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp5 = load i16, ptr %tmp2, align 2371; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp3, ptr %tmp0, align 2372; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp4, ptr %tmp1, align 2373; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp5, ptr %tmp2, align 2374; VF_8-LABEL: Checking a loop in 'i16_factor_3'375; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp3 = load i16, ptr %tmp0, align 2376; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i16, ptr %tmp1, align 2377; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i16, ptr %tmp2, align 2378; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp3, ptr %tmp0, align 2379; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp4, ptr %tmp1, align 2380; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp5, ptr %tmp2, align 2381; VF_16-LABEL: Checking a loop in 'i16_factor_3'382; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp3 = load i16, ptr %tmp0, align 2383; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i16, ptr %tmp1, align 2384; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i16, ptr %tmp2, align 2385; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp3, ptr %tmp0, align 2386; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp4, ptr %tmp1, align 2387; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp5, ptr %tmp2, align 2388for.body:389 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]390 %tmp0 = getelementptr inbounds %i16.3, ptr %data, i64 %i, i32 0391 %tmp1 = getelementptr inbounds %i16.3, ptr %data, i64 %i, i32 1392 %tmp2 = getelementptr inbounds %i16.3, ptr %data, i64 %i, i32 2393 %tmp3 = load i16, ptr %tmp0, align 2394 %tmp4 = load i16, ptr %tmp1, align 2395 %tmp5 = load i16, ptr %tmp2, align 2396 store i16 %tmp3, ptr %tmp0, align 2397 store i16 %tmp4, ptr %tmp1, align 2398 store i16 %tmp5, ptr %tmp2, align 2399 %i.next = add nuw nsw i64 %i, 1400 %cond = icmp slt i64 %i.next, %n401 br i1 %cond, label %for.body, label %for.end402 403for.end:404 ret void405}406 407%i32.3 = type {i32, i32, i32}408define void @i32_factor_3(ptr %data, i64 %n) #0 {409entry:410 br label %for.body411 412; VF_2-LABEL: Checking a loop in 'i32_factor_3'413; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp3 = load i32, ptr %tmp0, align 4414; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i32, ptr %tmp1, align 4415; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i32, ptr %tmp2, align 4416; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp3, ptr %tmp0, align 4417; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp4, ptr %tmp1, align 4418; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp5, ptr %tmp2, align 4419; VF_4-LABEL: Checking a loop in 'i32_factor_3'420; VF_4: Found an estimated cost of 8 for VF 4 For instruction: %tmp3 = load i32, ptr %tmp0, align 4421; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp4 = load i32, ptr %tmp1, align 4422; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp5 = load i32, ptr %tmp2, align 4423; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp3, ptr %tmp0, align 4424; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp4, ptr %tmp1, align 4425; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp5, ptr %tmp2, align 4426; VF_8-LABEL: Checking a loop in 'i32_factor_3'427; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp3 = load i32, ptr %tmp0, align 4428; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i32, ptr %tmp1, align 4429; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i32, ptr %tmp2, align 4430; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp3, ptr %tmp0, align 4431; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp4, ptr %tmp1, align 4432; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp5, ptr %tmp2, align 4433; VF_16-LABEL: Checking a loop in 'i32_factor_3'434; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp3 = load i32, ptr %tmp0, align 4435; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i32, ptr %tmp1, align 4436; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i32, ptr %tmp2, align 4437; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp3, ptr %tmp0, align 4438; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp4, ptr %tmp1, align 4439; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp5, ptr %tmp2, align 4440for.body:441 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]442 %tmp0 = getelementptr inbounds %i32.3, ptr %data, i64 %i, i32 0443 %tmp1 = getelementptr inbounds %i32.3, ptr %data, i64 %i, i32 1444 %tmp2 = getelementptr inbounds %i32.3, ptr %data, i64 %i, i32 2445 %tmp3 = load i32, ptr %tmp0, align 4446 %tmp4 = load i32, ptr %tmp1, align 4447 %tmp5 = load i32, ptr %tmp2, align 4448 store i32 %tmp3, ptr %tmp0, align 4449 store i32 %tmp4, ptr %tmp1, align 4450 store i32 %tmp5, ptr %tmp2, align 4451 %i.next = add nuw nsw i64 %i, 1452 %cond = icmp slt i64 %i.next, %n453 br i1 %cond, label %for.body, label %for.end454 455for.end:456 ret void457}458 459%i64.3 = type {i64, i64, i64}460define void @i64_factor_3(ptr %data, i64 %n) #0 {461entry:462 br label %for.body463 464; VF_2-LABEL: Checking a loop in 'i64_factor_3'465; VF_2: Found an estimated cost of 22 for VF 2 For instruction: %tmp3 = load i64, ptr %tmp0, align 8466; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp4 = load i64, ptr %tmp1, align 8467; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp5 = load i64, ptr %tmp2, align 8468; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp3, ptr %tmp0, align 8469; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp4, ptr %tmp1, align 8470; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp5, ptr %tmp2, align 8471; VF_4-LABEL: Checking a loop in 'i64_factor_3'472; VF_4: Found an estimated cost of 44 for VF 4 For instruction: %tmp3 = load i64, ptr %tmp0, align 8473; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp4 = load i64, ptr %tmp1, align 8474; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp5 = load i64, ptr %tmp2, align 8475; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp3, ptr %tmp0, align 8476; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp4, ptr %tmp1, align 8477; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp5, ptr %tmp2, align 8478; VF_8-LABEL: Checking a loop in 'i64_factor_3'479; VF_8: Found an estimated cost of 88 for VF 8 For instruction: %tmp3 = load i64, ptr %tmp0, align 8480; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp4 = load i64, ptr %tmp1, align 8481; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp5 = load i64, ptr %tmp2, align 8482; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp3, ptr %tmp0, align 8483; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp4, ptr %tmp1, align 8484; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp5, ptr %tmp2, align 8485; VF_16-LABEL: Checking a loop in 'i64_factor_3'486; VF_16: Found an estimated cost of 176 for VF 16 For instruction: %tmp3 = load i64, ptr %tmp0, align 8487; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp4 = load i64, ptr %tmp1, align 8488; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp5 = load i64, ptr %tmp2, align 8489; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp3, ptr %tmp0, align 8490; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp4, ptr %tmp1, align 8491; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp5, ptr %tmp2, align 8492for.body:493 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]494 %tmp0 = getelementptr inbounds %i64.3, ptr %data, i64 %i, i32 0495 %tmp1 = getelementptr inbounds %i64.3, ptr %data, i64 %i, i32 1496 %tmp2 = getelementptr inbounds %i64.3, ptr %data, i64 %i, i32 2497 %tmp3 = load i64, ptr %tmp0, align 8498 %tmp4 = load i64, ptr %tmp1, align 8499 %tmp5 = load i64, ptr %tmp2, align 8500 store i64 %tmp3, ptr %tmp0, align 8501 store i64 %tmp4, ptr %tmp1, align 8502 store i64 %tmp5, ptr %tmp2, align 8503 %i.next = add nuw nsw i64 %i, 1504 %cond = icmp slt i64 %i.next, %n505 br i1 %cond, label %for.body, label %for.end506 507for.end:508 ret void509}510 511%f16.3 = type {half, half, half}512define void @f16_factor_3(ptr %data, i64 %n) #0 {513entry:514 br label %for.body515 516; VF_2-LABEL: Checking a loop in 'f16_factor_3'517; VF_2: Found an estimated cost of 6 for VF 2 For instruction: %tmp3 = load half, ptr %tmp0, align 2518; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp4 = load half, ptr %tmp1, align 2519; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp5 = load half, ptr %tmp2, align 2520; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store half %tmp3, ptr %tmp0, align 2521; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store half %tmp4, ptr %tmp1, align 2522; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store half %tmp5, ptr %tmp2, align 2523; VF_4-LABEL: Checking a loop in 'f16_factor_3'524; VF_4: Found an estimated cost of 28 for VF 4 For instruction: %tmp3 = load half, ptr %tmp0, align 2525; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp4 = load half, ptr %tmp1, align 2526; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp5 = load half, ptr %tmp2, align 2527; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp3, ptr %tmp0, align 2528; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp4, ptr %tmp1, align 2529; VF_4-NEXT: Found an estimated cost of 28 for VF 4 For instruction: store half %tmp5, ptr %tmp2, align 2530; VF_8-LABEL: Checking a loop in 'f16_factor_3'531; VF_8: Found an estimated cost of 56 for VF 8 For instruction: %tmp3 = load half, ptr %tmp0, align 2532; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp4 = load half, ptr %tmp1, align 2533; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp5 = load half, ptr %tmp2, align 2534; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp3, ptr %tmp0, align 2535; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp4, ptr %tmp1, align 2536; VF_8-NEXT: Found an estimated cost of 56 for VF 8 For instruction: store half %tmp5, ptr %tmp2, align 2537; VF_16-LABEL: Checking a loop in 'f16_factor_3'538; VF_16: Found an estimated cost of 112 for VF 16 For instruction: %tmp3 = load half, ptr %tmp0, align 2539; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp4 = load half, ptr %tmp1, align 2540; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp5 = load half, ptr %tmp2, align 2541; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp3, ptr %tmp0, align 2542; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp4, ptr %tmp1, align 2543; VF_16-NEXT: Found an estimated cost of 112 for VF 16 For instruction: store half %tmp5, ptr %tmp2, align 2544for.body:545 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]546 %tmp0 = getelementptr inbounds %f16.3, ptr %data, i64 %i, i32 0547 %tmp1 = getelementptr inbounds %f16.3, ptr %data, i64 %i, i32 1548 %tmp2 = getelementptr inbounds %f16.3, ptr %data, i64 %i, i32 2549 %tmp3 = load half, ptr %tmp0, align 2550 %tmp4 = load half, ptr %tmp1, align 2551 %tmp5 = load half, ptr %tmp2, align 2552 store half %tmp3, ptr %tmp0, align 2553 store half %tmp4, ptr %tmp1, align 2554 store half %tmp5, ptr %tmp2, align 2555 %i.next = add nuw nsw i64 %i, 1556 %cond = icmp slt i64 %i.next, %n557 br i1 %cond, label %for.body, label %for.end558 559for.end:560 ret void561}562 563%f32.3 = type {float, float, float}564define void @f32_factor_3(ptr %data, i64 %n) #0 {565entry:566 br label %for.body567 568; VF_2-LABEL: Checking a loop in 'f32_factor_3'569; VF_2: Found an estimated cost of 16 for VF 2 For instruction: %tmp3 = load float, ptr %tmp0, align 4570; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp4 = load float, ptr %tmp1, align 4571; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp5 = load float, ptr %tmp2, align 4572; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp3, ptr %tmp0, align 4573; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp4, ptr %tmp1, align 4574; VF_2-NEXT: Found an estimated cost of 16 for VF 2 For instruction: store float %tmp5, ptr %tmp2, align 4575; VF_4-LABEL: Checking a loop in 'f32_factor_3'576; VF_4: Found an estimated cost of 8 for VF 4 For instruction: %tmp3 = load float, ptr %tmp0, align 4577; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp4 = load float, ptr %tmp1, align 4578; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp5 = load float, ptr %tmp2, align 4579; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp3, ptr %tmp0, align 4580; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp4, ptr %tmp1, align 4581; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp5, ptr %tmp2, align 4582; VF_8-LABEL: Checking a loop in 'f32_factor_3'583; VF_8: Found an estimated cost of 64 for VF 8 For instruction: %tmp3 = load float, ptr %tmp0, align 4584; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp4 = load float, ptr %tmp1, align 4585; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp5 = load float, ptr %tmp2, align 4586; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp3, ptr %tmp0, align 4587; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp4, ptr %tmp1, align 4588; VF_8-NEXT: Found an estimated cost of 64 for VF 8 For instruction: store float %tmp5, ptr %tmp2, align 4589; VF_16-LABEL: Checking a loop in 'f32_factor_3'590; VF_16: Found an estimated cost of 128 for VF 16 For instruction: %tmp3 = load float, ptr %tmp0, align 4591; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp4 = load float, ptr %tmp1, align 4592; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp5 = load float, ptr %tmp2, align 4593; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp3, ptr %tmp0, align 4594; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp4, ptr %tmp1, align 4595; VF_16-NEXT: Found an estimated cost of 128 for VF 16 For instruction: store float %tmp5, ptr %tmp2, align 4596for.body:597 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]598 %tmp0 = getelementptr inbounds %f32.3, ptr %data, i64 %i, i32 0599 %tmp1 = getelementptr inbounds %f32.3, ptr %data, i64 %i, i32 1600 %tmp2 = getelementptr inbounds %f32.3, ptr %data, i64 %i, i32 2601 %tmp3 = load float, ptr %tmp0, align 4602 %tmp4 = load float, ptr %tmp1, align 4603 %tmp5 = load float, ptr %tmp2, align 4604 store float %tmp3, ptr %tmp0, align 4605 store float %tmp4, ptr %tmp1, align 4606 store float %tmp5, ptr %tmp2, align 4607 %i.next = add nuw nsw i64 %i, 1608 %cond = icmp slt i64 %i.next, %n609 br i1 %cond, label %for.body, label %for.end610 611for.end:612 ret void613}614 615%f64.3 = type {double, double, double}616define void @f64_factor_3(ptr %data, i64 %n) #0 {617entry:618 br label %for.body619 620; VF_2-LABEL: Checking a loop in 'f64_factor_3'621; VF_2: Found an estimated cost of 6 for VF 2 For instruction: %tmp3 = load double, ptr %tmp0, align 8622; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp4 = load double, ptr %tmp1, align 8623; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp5 = load double, ptr %tmp2, align 8624; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp3, ptr %tmp0, align 8625; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp4, ptr %tmp1, align 8626; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp5, ptr %tmp2, align 8627; VF_4-LABEL: Checking a loop in 'f64_factor_3'628; VF_4: Found an estimated cost of 12 for VF 4 For instruction: %tmp3 = load double, ptr %tmp0, align 8629; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp4 = load double, ptr %tmp1, align 8630; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp5 = load double, ptr %tmp2, align 8631; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp3, ptr %tmp0, align 8632; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp4, ptr %tmp1, align 8633; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp5, ptr %tmp2, align 8634; VF_8-LABEL: Checking a loop in 'f64_factor_3'635; VF_8: Found an estimated cost of 24 for VF 8 For instruction: %tmp3 = load double, ptr %tmp0, align 8636; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp4 = load double, ptr %tmp1, align 8637; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp5 = load double, ptr %tmp2, align 8638; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp3, ptr %tmp0, align 8639; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp4, ptr %tmp1, align 8640; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp5, ptr %tmp2, align 8641; VF_16-LABEL: Checking a loop in 'f64_factor_3'642; VF_16: Found an estimated cost of 48 for VF 16 For instruction: %tmp3 = load double, ptr %tmp0, align 8643; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp4 = load double, ptr %tmp1, align 8644; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp5 = load double, ptr %tmp2, align 8645; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp3, ptr %tmp0, align 8646; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp4, ptr %tmp1, align 8647; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp5, ptr %tmp2, align 8648for.body:649 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]650 %tmp0 = getelementptr inbounds %f64.3, ptr %data, i64 %i, i32 0651 %tmp1 = getelementptr inbounds %f64.3, ptr %data, i64 %i, i32 1652 %tmp2 = getelementptr inbounds %f64.3, ptr %data, i64 %i, i32 2653 %tmp3 = load double, ptr %tmp0, align 8654 %tmp4 = load double, ptr %tmp1, align 8655 %tmp5 = load double, ptr %tmp2, align 8656 store double %tmp3, ptr %tmp0, align 8657 store double %tmp4, ptr %tmp1, align 8658 store double %tmp5, ptr %tmp2, align 8659 %i.next = add nuw nsw i64 %i, 1660 %cond = icmp slt i64 %i.next, %n661 br i1 %cond, label %for.body, label %for.end662 663for.end:664 ret void665}666 667 668; Factor 4669 670%i8.4 = type {i8, i8, i8, i8}671define void @i8_factor_4(ptr %data, i64 %n) #0 {672entry:673 br label %for.body674 675; VF_2-LABEL: Checking a loop in 'i8_factor_4'676; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i8, ptr %tmp0, align 1677; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i8, ptr %tmp1, align 1678; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp6 = load i8, ptr %tmp2, align 1679; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp7 = load i8, ptr %tmp3, align 1680; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp4, ptr %tmp0, align 1681; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp5, ptr %tmp1, align 1682; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp6, ptr %tmp2, align 1683; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i8 %tmp7, ptr %tmp3, align 1684; VF_4-LABEL: Checking a loop in 'i8_factor_4'685; VF_4: Found an estimated cost of 24 for VF 4 For instruction: %tmp4 = load i8, ptr %tmp0, align 1686; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp5 = load i8, ptr %tmp1, align 1687; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp6 = load i8, ptr %tmp2, align 1688; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp7 = load i8, ptr %tmp3, align 1689; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp4, ptr %tmp0, align 1690; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp5, ptr %tmp1, align 1691; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp6, ptr %tmp2, align 1692; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i8 %tmp7, ptr %tmp3, align 1693; VF_8-LABEL: Checking a loop in 'i8_factor_4'694; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i8, ptr %tmp0, align 1695; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i8, ptr %tmp1, align 1696; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp6 = load i8, ptr %tmp2, align 1697; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp7 = load i8, ptr %tmp3, align 1698; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp4, ptr %tmp0, align 1699; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp5, ptr %tmp1, align 1700; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp6, ptr %tmp2, align 1701; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i8 %tmp7, ptr %tmp3, align 1702; VF_16-LABEL: Checking a loop in 'i8_factor_4'703; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i8, ptr %tmp0, align 1704; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i8, ptr %tmp1, align 1705; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp6 = load i8, ptr %tmp2, align 1706; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp7 = load i8, ptr %tmp3, align 1707; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp4, ptr %tmp0, align 1708; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp5, ptr %tmp1, align 1709; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp6, ptr %tmp2, align 1710; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i8 %tmp7, ptr %tmp3, align 1711for.body:712 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]713 %tmp0 = getelementptr inbounds %i8.4, ptr %data, i64 %i, i32 0714 %tmp1 = getelementptr inbounds %i8.4, ptr %data, i64 %i, i32 1715 %tmp2 = getelementptr inbounds %i8.4, ptr %data, i64 %i, i32 2716 %tmp3 = getelementptr inbounds %i8.4, ptr %data, i64 %i, i32 3717 %tmp4 = load i8, ptr %tmp0, align 1718 %tmp5 = load i8, ptr %tmp1, align 1719 %tmp6 = load i8, ptr %tmp2, align 1720 %tmp7 = load i8, ptr %tmp3, align 1721 store i8 %tmp4, ptr %tmp0, align 1722 store i8 %tmp5, ptr %tmp1, align 1723 store i8 %tmp6, ptr %tmp2, align 1724 store i8 %tmp7, ptr %tmp3, align 1725 %i.next = add nuw nsw i64 %i, 1726 %cond = icmp slt i64 %i.next, %n727 br i1 %cond, label %for.body, label %for.end728 729for.end:730 ret void731}732 733%i16.4 = type {i16, i16, i16, i16}734define void @i16_factor_4(ptr %data, i64 %n) #0 {735entry:736 br label %for.body737 738; VF_2-LABEL: Checking a loop in 'i16_factor_4'739; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i16, ptr %tmp0, align 2740; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i16, ptr %tmp1, align 2741; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp6 = load i16, ptr %tmp2, align 2742; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp7 = load i16, ptr %tmp3, align 2743; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp4, ptr %tmp0, align 2744; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp5, ptr %tmp1, align 2745; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp6, ptr %tmp2, align 2746; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i16 %tmp7, ptr %tmp3, align 2747; VF_4-LABEL: Checking a loop in 'i16_factor_4'748; VF_4: Found an estimated cost of 24 for VF 4 For instruction: %tmp4 = load i16, ptr %tmp0, align 2749; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp5 = load i16, ptr %tmp1, align 2750; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp6 = load i16, ptr %tmp2, align 2751; VF_4-NEXT: Found an estimated cost of 24 for VF 4 For instruction: %tmp7 = load i16, ptr %tmp3, align 2752; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp4, ptr %tmp0, align 2753; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp5, ptr %tmp1, align 2754; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp6, ptr %tmp2, align 2755; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i16 %tmp7, ptr %tmp3, align 2756; VF_8-LABEL: Checking a loop in 'i16_factor_4'757; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i16, ptr %tmp0, align 2758; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i16, ptr %tmp1, align 2759; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp6 = load i16, ptr %tmp2, align 2760; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp7 = load i16, ptr %tmp3, align 2761; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp4, ptr %tmp0, align 2762; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp5, ptr %tmp1, align 2763; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp6, ptr %tmp2, align 2764; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i16 %tmp7, ptr %tmp3, align 2765; VF_16-LABEL: Checking a loop in 'i16_factor_4'766; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i16, ptr %tmp0, align 2767; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i16, ptr %tmp1, align 2768; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp6 = load i16, ptr %tmp2, align 2769; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp7 = load i16, ptr %tmp3, align 2770; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp4, ptr %tmp0, align 2771; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp5, ptr %tmp1, align 2772; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp6, ptr %tmp2, align 2773; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i16 %tmp7, ptr %tmp3, align 2774for.body:775 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]776 %tmp0 = getelementptr inbounds %i16.4, ptr %data, i64 %i, i32 0777 %tmp1 = getelementptr inbounds %i16.4, ptr %data, i64 %i, i32 1778 %tmp2 = getelementptr inbounds %i16.4, ptr %data, i64 %i, i32 2779 %tmp3 = getelementptr inbounds %i16.4, ptr %data, i64 %i, i32 3780 %tmp4 = load i16, ptr %tmp0, align 2781 %tmp5 = load i16, ptr %tmp1, align 2782 %tmp6 = load i16, ptr %tmp2, align 2783 %tmp7 = load i16, ptr %tmp3, align 2784 store i16 %tmp4, ptr %tmp0, align 2785 store i16 %tmp5, ptr %tmp1, align 2786 store i16 %tmp6, ptr %tmp2, align 2787 store i16 %tmp7, ptr %tmp3, align 2788 %i.next = add nuw nsw i64 %i, 1789 %cond = icmp slt i64 %i.next, %n790 br i1 %cond, label %for.body, label %for.end791 792for.end:793 ret void794}795 796%i32.4 = type {i32, i32, i32, i32}797define void @i32_factor_4(ptr %data, i64 %n) #0 {798entry:799 br label %for.body800 801; VF_2-LABEL: Checking a loop in 'i32_factor_4'802; VF_2: Found an estimated cost of 12 for VF 2 For instruction: %tmp4 = load i32, ptr %tmp0, align 4803; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp5 = load i32, ptr %tmp1, align 4804; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp6 = load i32, ptr %tmp2, align 4805; VF_2-NEXT: Found an estimated cost of 12 for VF 2 For instruction: %tmp7 = load i32, ptr %tmp3, align 4806; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp4, ptr %tmp0, align 4807; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp5, ptr %tmp1, align 4808; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp6, ptr %tmp2, align 4809; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store i32 %tmp7, ptr %tmp3, align 4810; VF_4-LABEL: Checking a loop in 'i32_factor_4'811; VF_4: Found an estimated cost of 8 for VF 4 For instruction: %tmp4 = load i32, ptr %tmp0, align 4812; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp5 = load i32, ptr %tmp1, align 4813; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp6 = load i32, ptr %tmp2, align 4814; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp7 = load i32, ptr %tmp3, align 4815; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp4, ptr %tmp0, align 4816; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp5, ptr %tmp1, align 4817; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp6, ptr %tmp2, align 4818; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store i32 %tmp7, ptr %tmp3, align 4819; VF_8-LABEL: Checking a loop in 'i32_factor_4'820; VF_8: Found an estimated cost of 48 for VF 8 For instruction: %tmp4 = load i32, ptr %tmp0, align 4821; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp5 = load i32, ptr %tmp1, align 4822; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp6 = load i32, ptr %tmp2, align 4823; VF_8-NEXT: Found an estimated cost of 48 for VF 8 For instruction: %tmp7 = load i32, ptr %tmp3, align 4824; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp4, ptr %tmp0, align 4825; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp5, ptr %tmp1, align 4826; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp6, ptr %tmp2, align 4827; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store i32 %tmp7, ptr %tmp3, align 4828; VF_16-LABEL: Checking a loop in 'i32_factor_4'829; VF_16: Found an estimated cost of 96 for VF 16 For instruction: %tmp4 = load i32, ptr %tmp0, align 4830; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp5 = load i32, ptr %tmp1, align 4831; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp6 = load i32, ptr %tmp2, align 4832; VF_16-NEXT: Found an estimated cost of 96 for VF 16 For instruction: %tmp7 = load i32, ptr %tmp3, align 4833; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp4, ptr %tmp0, align 4834; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp5, ptr %tmp1, align 4835; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp6, ptr %tmp2, align 4836; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store i32 %tmp7, ptr %tmp3, align 4837for.body:838 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]839 %tmp0 = getelementptr inbounds %i32.4, ptr %data, i64 %i, i32 0840 %tmp1 = getelementptr inbounds %i32.4, ptr %data, i64 %i, i32 1841 %tmp2 = getelementptr inbounds %i32.4, ptr %data, i64 %i, i32 2842 %tmp3 = getelementptr inbounds %i32.4, ptr %data, i64 %i, i32 3843 %tmp4 = load i32, ptr %tmp0, align 4844 %tmp5 = load i32, ptr %tmp1, align 4845 %tmp6 = load i32, ptr %tmp2, align 4846 %tmp7 = load i32, ptr %tmp3, align 4847 store i32 %tmp4, ptr %tmp0, align 4848 store i32 %tmp5, ptr %tmp1, align 4849 store i32 %tmp6, ptr %tmp2, align 4850 store i32 %tmp7, ptr %tmp3, align 4851 %i.next = add nuw nsw i64 %i, 1852 %cond = icmp slt i64 %i.next, %n853 br i1 %cond, label %for.body, label %for.end854 855for.end:856 ret void857}858 859%i64.4 = type {i64, i64, i64, i64}860define void @i64_factor_4(ptr %data, i64 %n) #0 {861entry:862 br label %for.body863 864; VF_2-LABEL: Checking a loop in 'i64_factor_4'865; VF_2: Found an estimated cost of 22 for VF 2 For instruction: %tmp4 = load i64, ptr %tmp0, align 8866; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp5 = load i64, ptr %tmp1, align 8867; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp6 = load i64, ptr %tmp2, align 8868; VF_2-NEXT: Found an estimated cost of 22 for VF 2 For instruction: %tmp7 = load i64, ptr %tmp3, align 8869; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp4, ptr %tmp0, align 8870; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp5, ptr %tmp1, align 8871; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp6, ptr %tmp2, align 8872; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: store i64 %tmp7, ptr %tmp3, align 8873; VF_4-LABEL: Checking a loop in 'i64_factor_4'874; VF_4: Found an estimated cost of 44 for VF 4 For instruction: %tmp4 = load i64, ptr %tmp0, align 8875; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp5 = load i64, ptr %tmp1, align 8876; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp6 = load i64, ptr %tmp2, align 8877; VF_4-NEXT: Found an estimated cost of 44 for VF 4 For instruction: %tmp7 = load i64, ptr %tmp3, align 8878; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp4, ptr %tmp0, align 8879; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp5, ptr %tmp1, align 8880; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp6, ptr %tmp2, align 8881; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: store i64 %tmp7, ptr %tmp3, align 8882; VF_8-LABEL: Checking a loop in 'i64_factor_4'883; VF_8: Found an estimated cost of 88 for VF 8 For instruction: %tmp4 = load i64, ptr %tmp0, align 8884; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp5 = load i64, ptr %tmp1, align 8885; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp6 = load i64, ptr %tmp2, align 8886; VF_8-NEXT: Found an estimated cost of 88 for VF 8 For instruction: %tmp7 = load i64, ptr %tmp3, align 8887; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp4, ptr %tmp0, align 8888; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp5, ptr %tmp1, align 8889; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp6, ptr %tmp2, align 8890; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: store i64 %tmp7, ptr %tmp3, align 8891; VF_16-LABEL: Checking a loop in 'i64_factor_4'892; VF_16: Found an estimated cost of 176 for VF 16 For instruction: %tmp4 = load i64, ptr %tmp0, align 8893; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp5 = load i64, ptr %tmp1, align 8894; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp6 = load i64, ptr %tmp2, align 8895; VF_16-NEXT: Found an estimated cost of 176 for VF 16 For instruction: %tmp7 = load i64, ptr %tmp3, align 8896; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp4, ptr %tmp0, align 8897; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp5, ptr %tmp1, align 8898; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp6, ptr %tmp2, align 8899; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: store i64 %tmp7, ptr %tmp3, align 8900for.body:901 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]902 %tmp0 = getelementptr inbounds %i64.4, ptr %data, i64 %i, i32 0903 %tmp1 = getelementptr inbounds %i64.4, ptr %data, i64 %i, i32 1904 %tmp2 = getelementptr inbounds %i64.4, ptr %data, i64 %i, i32 2905 %tmp3 = getelementptr inbounds %i64.4, ptr %data, i64 %i, i32 3906 %tmp4 = load i64, ptr %tmp0, align 8907 %tmp5 = load i64, ptr %tmp1, align 8908 %tmp6 = load i64, ptr %tmp2, align 8909 %tmp7 = load i64, ptr %tmp3, align 8910 store i64 %tmp4, ptr %tmp0, align 8911 store i64 %tmp5, ptr %tmp1, align 8912 store i64 %tmp6, ptr %tmp2, align 8913 store i64 %tmp7, ptr %tmp3, align 8914 %i.next = add nuw nsw i64 %i, 1915 %cond = icmp slt i64 %i.next, %n916 br i1 %cond, label %for.body, label %for.end917 918for.end:919 ret void920}921 922%f16.4 = type {half, half, half, half}923define void @f16_factor_4(ptr %data, i64 %n) #0 {924entry:925 br label %for.body926 927; VF_2-LABEL: Checking a loop in 'f16_factor_4'928; VF_2: Found an estimated cost of 18 for VF 2 For instruction: %tmp4 = load half, ptr %tmp0, align 2929; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp5 = load half, ptr %tmp1, align 2930; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp6 = load half, ptr %tmp2, align 2931; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp7 = load half, ptr %tmp3, align 2932; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store half %tmp4, ptr %tmp0, align 2933; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store half %tmp5, ptr %tmp1, align 2934; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store half %tmp6, ptr %tmp2, align 2935; VF_2-NEXT: Found an estimated cost of 18 for VF 2 For instruction: store half %tmp7, ptr %tmp3, align 2936; VF_4-LABEL: Checking a loop in 'f16_factor_4'937; VF_4: Found an estimated cost of 36 for VF 4 For instruction: %tmp4 = load half, ptr %tmp0, align 2938; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp5 = load half, ptr %tmp1, align 2939; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp6 = load half, ptr %tmp2, align 2940; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: %tmp7 = load half, ptr %tmp3, align 2941; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp4, ptr %tmp0, align 2942; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp5, ptr %tmp1, align 2943; VF_4-NEXT: Found an estimated cost of 0 for VF 4 For instruction: store half %tmp6, ptr %tmp2, align 2944; VF_4-NEXT: Found an estimated cost of 36 for VF 4 For instruction: store half %tmp7, ptr %tmp3, align 2945; VF_8-LABEL: Checking a loop in 'f16_factor_4'946; VF_8: Found an estimated cost of 72 for VF 8 For instruction: %tmp4 = load half, ptr %tmp0, align 2947; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp5 = load half, ptr %tmp1, align 2948; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp6 = load half, ptr %tmp2, align 2949; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp7 = load half, ptr %tmp3, align 2950; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp4, ptr %tmp0, align 2951; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp5, ptr %tmp1, align 2952; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store half %tmp6, ptr %tmp2, align 2953; VF_8-NEXT: Found an estimated cost of 72 for VF 8 For instruction: store half %tmp7, ptr %tmp3, align 2954; VF_16-LABEL: Checking a loop in 'f16_factor_4'955; VF_16: Found an estimated cost of 144 for VF 16 For instruction: %tmp4 = load half, ptr %tmp0, align 2956; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp5 = load half, ptr %tmp1, align 2957; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp6 = load half, ptr %tmp2, align 2958; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp7 = load half, ptr %tmp3, align 2959; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp4, ptr %tmp0, align 2960; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp5, ptr %tmp1, align 2961; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store half %tmp6, ptr %tmp2, align 2962; VF_16-NEXT: Found an estimated cost of 144 for VF 16 For instruction: store half %tmp7, ptr %tmp3, align 2963for.body:964 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]965 %tmp0 = getelementptr inbounds %f16.4, ptr %data, i64 %i, i32 0966 %tmp1 = getelementptr inbounds %f16.4, ptr %data, i64 %i, i32 1967 %tmp2 = getelementptr inbounds %f16.4, ptr %data, i64 %i, i32 2968 %tmp3 = getelementptr inbounds %f16.4, ptr %data, i64 %i, i32 3969 %tmp4 = load half, ptr %tmp0, align 2970 %tmp5 = load half, ptr %tmp1, align 2971 %tmp6 = load half, ptr %tmp2, align 2972 %tmp7 = load half, ptr %tmp3, align 2973 store half %tmp4, ptr %tmp0, align 2974 store half %tmp5, ptr %tmp1, align 2975 store half %tmp6, ptr %tmp2, align 2976 store half %tmp7, ptr %tmp3, align 2977 %i.next = add nuw nsw i64 %i, 1978 %cond = icmp slt i64 %i.next, %n979 br i1 %cond, label %for.body, label %for.end980 981for.end:982 ret void983}984 985%f32.4 = type {float, float, float, float}986define void @f32_factor_4(ptr %data, i64 %n) #0 {987entry:988 br label %for.body989 990; VF_2-LABEL: Checking a loop in 'f32_factor_4'991; VF_2: Found an estimated cost of 20 for VF 2 For instruction: %tmp4 = load float, ptr %tmp0, align 4992; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp5 = load float, ptr %tmp1, align 4993; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp6 = load float, ptr %tmp2, align 4994; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: %tmp7 = load float, ptr %tmp3, align 4995; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp4, ptr %tmp0, align 4996; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp5, ptr %tmp1, align 4997; VF_2-NEXT: Found an estimated cost of 0 for VF 2 For instruction: store float %tmp6, ptr %tmp2, align 4998; VF_2-NEXT: Found an estimated cost of 20 for VF 2 For instruction: store float %tmp7, ptr %tmp3, align 4999; VF_4-LABEL: Checking a loop in 'f32_factor_4'1000; VF_4: Found an estimated cost of 8 for VF 4 For instruction: %tmp4 = load float, ptr %tmp0, align 41001; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp5 = load float, ptr %tmp1, align 41002; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp6 = load float, ptr %tmp2, align 41003; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: %tmp7 = load float, ptr %tmp3, align 41004; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp4, ptr %tmp0, align 41005; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp5, ptr %tmp1, align 41006; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp6, ptr %tmp2, align 41007; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store float %tmp7, ptr %tmp3, align 41008; VF_8-LABEL: Checking a loop in 'f32_factor_4'1009; VF_8: Found an estimated cost of 80 for VF 8 For instruction: %tmp4 = load float, ptr %tmp0, align 41010; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp5 = load float, ptr %tmp1, align 41011; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp6 = load float, ptr %tmp2, align 41012; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: %tmp7 = load float, ptr %tmp3, align 41013; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp4, ptr %tmp0, align 41014; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp5, ptr %tmp1, align 41015; VF_8-NEXT: Found an estimated cost of 0 for VF 8 For instruction: store float %tmp6, ptr %tmp2, align 41016; VF_8-NEXT: Found an estimated cost of 80 for VF 8 For instruction: store float %tmp7, ptr %tmp3, align 41017; VF_16-LABEL: Checking a loop in 'f32_factor_4'1018; VF_16: Found an estimated cost of 160 for VF 16 For instruction: %tmp4 = load float, ptr %tmp0, align 41019; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp5 = load float, ptr %tmp1, align 41020; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp6 = load float, ptr %tmp2, align 41021; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: %tmp7 = load float, ptr %tmp3, align 41022; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp4, ptr %tmp0, align 41023; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp5, ptr %tmp1, align 41024; VF_16-NEXT: Found an estimated cost of 0 for VF 16 For instruction: store float %tmp6, ptr %tmp2, align 41025; VF_16-NEXT: Found an estimated cost of 160 for VF 16 For instruction: store float %tmp7, ptr %tmp3, align 41026for.body:1027 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]1028 %tmp0 = getelementptr inbounds %f32.4, ptr %data, i64 %i, i32 01029 %tmp1 = getelementptr inbounds %f32.4, ptr %data, i64 %i, i32 11030 %tmp2 = getelementptr inbounds %f32.4, ptr %data, i64 %i, i32 21031 %tmp3 = getelementptr inbounds %f32.4, ptr %data, i64 %i, i32 31032 %tmp4 = load float, ptr %tmp0, align 41033 %tmp5 = load float, ptr %tmp1, align 41034 %tmp6 = load float, ptr %tmp2, align 41035 %tmp7 = load float, ptr %tmp3, align 41036 store float %tmp4, ptr %tmp0, align 41037 store float %tmp5, ptr %tmp1, align 41038 store float %tmp6, ptr %tmp2, align 41039 store float %tmp7, ptr %tmp3, align 41040 %i.next = add nuw nsw i64 %i, 11041 %cond = icmp slt i64 %i.next, %n1042 br i1 %cond, label %for.body, label %for.end1043 1044for.end:1045 ret void1046}1047 1048%f64.4 = type {double, double, double, double}1049define void @f64_factor_4(ptr %data, i64 %n) #0 {1050entry:1051 br label %for.body1052 1053; VF_2-LABEL: Checking a loop in 'f64_factor_4'1054; VF_2: Found an estimated cost of 6 for VF 2 For instruction: %tmp4 = load double, ptr %tmp0, align 81055; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp5 = load double, ptr %tmp1, align 81056; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp6 = load double, ptr %tmp2, align 81057; VF_2-NEXT: Found an estimated cost of 6 for VF 2 For instruction: %tmp7 = load double, ptr %tmp3, align 81058; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp4, ptr %tmp0, align 81059; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp5, ptr %tmp1, align 81060; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp6, ptr %tmp2, align 81061; VF_2-NEXT: Found an estimated cost of 4 for VF 2 For instruction: store double %tmp7, ptr %tmp3, align 81062; VF_4-LABEL: Checking a loop in 'f64_factor_4'1063; VF_4: Found an estimated cost of 12 for VF 4 For instruction: %tmp4 = load double, ptr %tmp0, align 81064; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp5 = load double, ptr %tmp1, align 81065; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp6 = load double, ptr %tmp2, align 81066; VF_4-NEXT: Found an estimated cost of 12 for VF 4 For instruction: %tmp7 = load double, ptr %tmp3, align 81067; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp4, ptr %tmp0, align 81068; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp5, ptr %tmp1, align 81069; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp6, ptr %tmp2, align 81070; VF_4-NEXT: Found an estimated cost of 8 for VF 4 For instruction: store double %tmp7, ptr %tmp3, align 81071; VF_8-LABEL: Checking a loop in 'f64_factor_4'1072; VF_8: Found an estimated cost of 24 for VF 8 For instruction: %tmp4 = load double, ptr %tmp0, align 81073; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp5 = load double, ptr %tmp1, align 81074; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp6 = load double, ptr %tmp2, align 81075; VF_8-NEXT: Found an estimated cost of 24 for VF 8 For instruction: %tmp7 = load double, ptr %tmp3, align 81076; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp4, ptr %tmp0, align 81077; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp5, ptr %tmp1, align 81078; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp6, ptr %tmp2, align 81079; VF_8-NEXT: Found an estimated cost of 16 for VF 8 For instruction: store double %tmp7, ptr %tmp3, align 81080; VF_16-LABEL: Checking a loop in 'f64_factor_4'1081; VF_16: Found an estimated cost of 48 for VF 16 For instruction: %tmp4 = load double, ptr %tmp0, align 81082; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp5 = load double, ptr %tmp1, align 81083; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp6 = load double, ptr %tmp2, align 81084; VF_16-NEXT: Found an estimated cost of 48 for VF 16 For instruction: %tmp7 = load double, ptr %tmp3, align 81085; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp4, ptr %tmp0, align 81086; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp5, ptr %tmp1, align 81087; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp6, ptr %tmp2, align 81088; VF_16-NEXT: Found an estimated cost of 32 for VF 16 For instruction: store double %tmp7, ptr %tmp3, align 81089for.body:1090 %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]1091 %tmp0 = getelementptr inbounds %f64.4, ptr %data, i64 %i, i32 01092 %tmp1 = getelementptr inbounds %f64.4, ptr %data, i64 %i, i32 11093 %tmp2 = getelementptr inbounds %f64.4, ptr %data, i64 %i, i32 21094 %tmp3 = getelementptr inbounds %f64.4, ptr %data, i64 %i, i32 31095 %tmp4 = load double, ptr %tmp0, align 81096 %tmp5 = load double, ptr %tmp1, align 81097 %tmp6 = load double, ptr %tmp2, align 81098 %tmp7 = load double, ptr %tmp3, align 81099 store double %tmp4, ptr %tmp0, align 81100 store double %tmp5, ptr %tmp1, align 81101 store double %tmp6, ptr %tmp2, align 81102 store double %tmp7, ptr %tmp3, align 81103 %i.next = add nuw nsw i64 %i, 11104 %cond = icmp slt i64 %i.next, %n1105 br i1 %cond, label %for.body, label %for.end1106 1107for.end:1108 ret void1109}1110 1111attributes #0 = { "target-features"="+mve.fp" }1112