]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Transforms/LoopVectorize/AArch64/type-shrinkage-insertelt.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / Transforms / LoopVectorize / AArch64 / type-shrinkage-insertelt.ll
1 ; RUN: opt -S < %s -loop-vectorize -force-vector-width=4 | FileCheck %s
2
3 target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"
4 target triple = "aarch64--linux-gnu"
5
6 ; CHECK-LABEL: test0
7 define void @test0(i16* noalias %M3) {
8 entry:
9   br label %if.then1165.us
10
11 if.then1165.us:                                   ; preds = %if.then1165.us, %entry
12   %indvars.iv1783 = phi i64 [ 0, %entry ], [ %indvars.iv.next1784, %if.then1165.us ]
13   %conv1177.us = zext i16 undef to i32
14   %add1178.us = add nsw i32 %conv1177.us, undef
15   %conv1179.us = trunc i32 %add1178.us to i16
16   %idxprom1181.us = ashr exact i64 undef, 32
17   %arrayidx1185.us = getelementptr inbounds i16, i16* %M3, i64 %idxprom1181.us
18   store i16 %conv1179.us, i16* %arrayidx1185.us, align 2
19   %indvars.iv.next1784 = add nuw nsw i64 %indvars.iv1783, 1
20   %exitcond1785 = icmp eq i64 %indvars.iv.next1784, 16
21   br i1 %exitcond1785, label %for.inc1286.loopexit, label %if.then1165.us
22
23 for.inc1286.loopexit:                             ; preds = %if.then1165.us
24   ret void
25 }
26
27 ; CHECK-LABEL: test1
28 define void @test1(i16* noalias %M3) {
29 entry:
30   br label %if.then1165.us
31
32 if.then1165.us:                                   ; preds = %if.then1165.us, %entry
33   %indvars.iv1783 = phi i64 [ 0, %entry ], [ %indvars.iv.next1784, %if.then1165.us ]
34   %fptr = load i32, i32* undef, align 4
35   %conv1177.us = zext i16 undef to i32
36   %add1178.us = add nsw i32 %conv1177.us, %fptr
37   %conv1179.us = trunc i32 %add1178.us to i16
38   %idxprom1181.us = ashr exact i64 undef, 32
39   %arrayidx1185.us = getelementptr inbounds i16, i16* %M3, i64 %idxprom1181.us
40   store i16 %conv1179.us, i16* %arrayidx1185.us, align 2
41   %indvars.iv.next1784 = add nuw nsw i64 %indvars.iv1783, 1
42   %exitcond1785 = icmp eq i64 %indvars.iv.next1784, 16
43   br i1 %exitcond1785, label %for.inc1286.loopexit, label %if.then1165.us
44
45 for.inc1286.loopexit:                             ; preds = %if.then1165.us
46   ret void
47 }