brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · a6d38fb Raw
146 lines · plain
1; REQUIRES: asserts2; RUN: opt < %s -S -debug -passes=loop-vectorize -mcpu=slm 2>&1 | FileCheck %s --check-prefix=SLM3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-linux-gnu"6 7define i8 @mul_i8(ptr %dataA, ptr %dataB, i32 %N) {8entry:9  %cmp12 = icmp eq i32 %N, 010  br i1 %cmp12, label %for.cond.cleanup, label %for.body.preheader11 12for.body.preheader:                               ; preds = %entry13  %wide.trip.count = zext i32 %N to i6414  br label %for.body15 16for.cond.cleanup.loopexit:                        ; preds = %for.body17  %phitmp = trunc i32 %add4 to i818  br label %for.cond.cleanup19 20for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry21  %acc.0.lcssa = phi i8 [ 0, %entry ], [ %phitmp, %for.cond.cleanup.loopexit ]22  ret i8 %acc.0.lcssa23 24for.body:                                         ; preds = %for.body.preheader, %for.body25  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]26  %acc.013 = phi i32 [ %add4, %for.body ], [ 0, %for.body.preheader ]27  %arrayidx = getelementptr inbounds i8, ptr %dataA, i64 %indvars.iv28  %0 = load i8, ptr %arrayidx, align 129  %conv = sext i8 %0 to i3230  %arrayidx2 = getelementptr inbounds i8, ptr %dataB, i64 %indvars.iv31  %1 = load i8, ptr %arrayidx2, align 132  %conv3 = sext i8 %1 to i3233; sources of the mul is sext\sext from i834; use pmullw\sext seq.35; SLM: Cost of 3 for VF 2: WIDEN ir<%mul> = mul nsw ir<%conv3>, ir<%conv>36  %mul = mul nsw i32 %conv3, %conv37; sources of the mul is zext\sext from i838; use pmulhw\pmullw\pshuf39; SLM: Cost of 2 for VF 2: WIDEN ir<%mul2> = mul nsw ir<%conv4>, ir<%conv>40  %conv4 = zext i8 %1 to i3241  %mul2 = mul nsw i32 %conv4, %conv42  %sum0 = add i32 %mul, %mul243; sources of the mul is zext\zext from i844; use pmullw\zext45; SLM: Cost of 2 for VF 2: WIDEN ir<%mul3> = mul nsw ir<%conv5>, ir<%conv4>46  %conv5 = zext i8 %0 to i3247  %mul3 = mul nsw i32 %conv5, %conv448  %sum1 = add i32 %sum0, %mul349; sources of the mul is sext\-12050; use pmullw\sext51; SLM: Cost of 3 for VF 2: WIDEN ir<%mul4> = mul nsw ir<-120>, ir<%conv3>52  %mul4 = mul nsw i32 -120, %conv353  %sum2 = add i32 %sum1, %mul454; sources of the mul is sext\25055; use pmulhw\pmullw\pshuf56; SLM: Cost of 2 for VF 2: WIDEN ir<%mul5> = mul nsw ir<250>, ir<%conv3>57  %mul5 = mul nsw i32 250, %conv358  %sum3 = add i32 %sum2, %mul559; sources of the mul is zext\-12060; use pmulhw\pmullw\pshuf61; SLM: Cost of 2 for VF 2: WIDEN ir<%mul6> = mul nsw ir<-120>, ir<%conv4>62  %mul6 = mul nsw i32 -120, %conv463  %sum4 = add i32 %sum3, %mul664; sources of the mul is zext\25065; use pmullw\zext66; SLM: Cost of 2 for VF 2: WIDEN ir<%mul7> = mul nsw ir<250>, ir<%conv4>67  %mul7 = mul nsw i32 250, %conv468  %sum5 = add i32 %sum4, %mul769  %add = add i32 %acc.013, 570  %add4 = add i32 %add, %sum571  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 172  %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count73  br i1 %exitcond, label %for.cond.cleanup.loopexit, label %for.body74}75 76define i16 @mul_i16(ptr %dataA, ptr %dataB, i32 %N) {77entry:78  %cmp12 = icmp eq i32 %N, 079  br i1 %cmp12, label %for.cond.cleanup, label %for.body.preheader80 81for.body.preheader:                               ; preds = %entry82  %wide.trip.count = zext i32 %N to i6483  br label %for.body84 85for.cond.cleanup.loopexit:                        ; preds = %for.body86  %phitmp = trunc i32 %add4 to i1687  br label %for.cond.cleanup88 89for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry90  %acc.0.lcssa = phi i16 [ 0, %entry ], [ %phitmp, %for.cond.cleanup.loopexit ]91  ret i16 %acc.0.lcssa92 93for.body:                                         ; preds = %for.body.preheader, %for.body94  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]95  %acc.013 = phi i32 [ %add4, %for.body ], [ 0, %for.body.preheader ]96  %arrayidx = getelementptr inbounds i16, ptr %dataA, i64 %indvars.iv97  %0 = load i16, ptr %arrayidx, align 198  %conv = sext i16 %0 to i3299  %arrayidx2 = getelementptr inbounds i16, ptr %dataB, i64 %indvars.iv100  %1 = load i16, ptr %arrayidx2, align 1101  %conv3 = sext i16 %1 to i32102; sources of the mul is sext\sext from i16103; use pmulhw\pmullw\pshuf seq.104; SLM: Cost of 2 for VF 4: WIDEN ir<%mul> = mul nsw ir<%conv3>, ir<%conv>105  %mul = mul nsw i32 %conv3, %conv106; sources of the mul is zext\sext from i16107; use pmulld108; SLM: Cost of 11 for VF 4: WIDEN ir<%mul2> = mul nsw ir<%conv4>, ir<%conv>109  %conv4 = zext i16 %1 to i32110  %mul2 = mul nsw i32 %conv4, %conv111  %sum0 = add i32 %mul, %mul2112; sources of the mul is zext\zext from i16113; use pmulhw\pmullw\zext114; SLM: Cost of 5 for VF 4: WIDEN ir<%mul3> = mul nsw ir<%conv5>, ir<%conv4>115  %conv5 = zext i16 %0 to i32116  %mul3 = mul nsw i32 %conv5, %conv4117  %sum1 = add i32 %sum0, %mul3118; sources of the mul is sext\-32000119; use pmulhw\pmullw\sext120; SLM: Cost of 2 for VF 4: WIDEN ir<%mul4> = mul nsw ir<-32000>, ir<%conv3>121  %mul4 = mul nsw i32 -32000, %conv3122  %sum2 = add i32 %sum1, %mul4123; sources of the mul is sext\64000124; use pmulld125; SLM: Cost of 11 for VF 4: WIDEN ir<%mul5> = mul nsw ir<64000>, ir<%conv3>126  %mul5 = mul nsw i32 64000, %conv3127  %sum3 = add i32 %sum2, %mul5128; sources of the mul is zext\-32000129; use pmulld130; SLM: Cost of 11 for VF 4: WIDEN ir<%mul6> = mul nsw ir<-32000>, ir<%conv4>131  %mul6 = mul nsw i32 -32000, %conv4132  %sum4 = add i32 %sum3, %mul6133; sources of the mul is zext\64000134; use pmulhw\pmullw\zext135; SLM: Cost of 5 for VF 4: WIDEN ir<%mul7> = mul nsw ir<250>, ir<%conv4>136  %mul7 = mul nsw i32 250, %conv4137  %sum5 = add i32 %sum4, %mul7138  %add = add i32 %acc.013, 5139  %add4 = add i32 %add, %sum5140  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1141  %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count142  br i1 %exitcond, label %for.cond.cleanup.loopexit, label %for.body143}144 145 146