xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/vect/vect-vshifts.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon -mcpu=hexagonv5 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Check that store is post-incremented.
4*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+:[0-9]+}} = vasrw(r{{[0-9]+:[0-9]+}}, r{{[0-9]+}})
5*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+:[0-9]+}} = vaslw(r{{[0-9]+:[0-9]+}}, r{{[0-9]+}})
6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32"
7*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon"
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* nocapture %buf, i32* nocapture %dest, i32 %offset, i32 %oddBlock, i32 %gb) #0 {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %buf, align 4, !tbaa !0
12*9880d681SAndroid Build Coastguard Worker  %shr = ashr i32 %0, %gb
13*9880d681SAndroid Build Coastguard Worker  store i32 %shr, i32* %buf, align 4, !tbaa !0
14*9880d681SAndroid Build Coastguard Worker  %not.tobool = icmp eq i32 %oddBlock, 0
15*9880d681SAndroid Build Coastguard Worker  %1 = sub i32 %offset, %oddBlock
16*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %not.tobool to i32
17*9880d681SAndroid Build Coastguard Worker  %3 = and i32 %1, 7
18*9880d681SAndroid Build Coastguard Worker  %4 = add i32 %2, %3
19*9880d681SAndroid Build Coastguard Worker  %5 = add i32 %4, 8
20*9880d681SAndroid Build Coastguard Worker  %p_sub8 = sub nsw i32 31, %gb
21*9880d681SAndroid Build Coastguard Worker  %6 = insertelement <2 x i32> undef, i32 %p_sub8, i32 0
22*9880d681SAndroid Build Coastguard Worker  %7 = insertelement <2 x i32> %6, i32 %p_sub8, i32 1
23*9880d681SAndroid Build Coastguard Worker  %8 = bitcast <2 x i32> %7 to i64
24*9880d681SAndroid Build Coastguard Worker  %9 = tail call i64 @llvm.hexagon.S2.asl.i.vw(i64 %8, i32 1)
25*9880d681SAndroid Build Coastguard Worker  %10 = bitcast i64 %9 to <2 x i32>
26*9880d681SAndroid Build Coastguard Worker  %11 = tail call i64 @llvm.hexagon.A2.combinew(i32 -1, i32 -1)
27*9880d681SAndroid Build Coastguard Worker  %12 = bitcast i64 %11 to <2 x i32>
28*9880d681SAndroid Build Coastguard Worker  %sub12p_vec = add <2 x i32> %10, %12
29*9880d681SAndroid Build Coastguard Worker  %p_22 = add i32 %4, 64
30*9880d681SAndroid Build Coastguard Worker  %p_d.018 = getelementptr i32, i32* %dest, i32 %4
31*9880d681SAndroid Build Coastguard Worker  %p_d.01823 = getelementptr i32, i32* %dest, i32 %p_22
32*9880d681SAndroid Build Coastguard Worker  %p_25 = add i32 %4, 72
33*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14 = getelementptr i32, i32* %dest, i32 %5
34*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426 = getelementptr i32, i32* %dest, i32 %p_25
35*9880d681SAndroid Build Coastguard Worker  %_p_scalar_ = load i32, i32* %p_d.018, align 4
36*9880d681SAndroid Build Coastguard Worker  %_p_vec_ = insertelement <2 x i32> undef, i32 %_p_scalar_, i32 0
37*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27 = load i32, i32* %p_d.01823, align 4
38*9880d681SAndroid Build Coastguard Worker  %_p_vec_28 = insertelement <2 x i32> %_p_vec_, i32 %_p_scalar_27, i32 1
39*9880d681SAndroid Build Coastguard Worker  %13 = bitcast <2 x i32> %_p_vec_28 to i64
40*9880d681SAndroid Build Coastguard Worker  %14 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %13, i32 31)
41*9880d681SAndroid Build Coastguard Worker  %15 = bitcast i64 %14 to <2 x i32>
42*9880d681SAndroid Build Coastguard Worker  %shr9p_vec = ashr <2 x i32> %_p_vec_28, %7
43*9880d681SAndroid Build Coastguard Worker  %xorp_vec = xor <2 x i32> %15, %sub12p_vec
44*9880d681SAndroid Build Coastguard Worker  %16 = bitcast <2 x i32> %shr9p_vec to i64
45*9880d681SAndroid Build Coastguard Worker  %17 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %14, i64 %16)
46*9880d681SAndroid Build Coastguard Worker  %18 = bitcast <2 x i32> %xorp_vec to i64
47*9880d681SAndroid Build Coastguard Worker  %19 = tail call i64 @llvm.hexagon.C2.vmux(i32 %17, i64 %13, i64 %18)
48*9880d681SAndroid Build Coastguard Worker  %20 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %19, i32 %gb)
49*9880d681SAndroid Build Coastguard Worker  %21 = bitcast i64 %20 to <2 x i32>
50*9880d681SAndroid Build Coastguard Worker  %22 = extractelement <2 x i32> %21, i32 0
51*9880d681SAndroid Build Coastguard Worker  store i32 %22, i32* %p_arrayidx14, align 4
52*9880d681SAndroid Build Coastguard Worker  %23 = extractelement <2 x i32> %21, i32 1
53*9880d681SAndroid Build Coastguard Worker  store i32 %23, i32* %p_arrayidx1426, align 4
54*9880d681SAndroid Build Coastguard Worker  store i32 %22, i32* %p_d.018, align 4
55*9880d681SAndroid Build Coastguard Worker  store i32 %23, i32* %p_d.01823, align 4
56*9880d681SAndroid Build Coastguard Worker  %p_21.1 = add i32 %4, 128
57*9880d681SAndroid Build Coastguard Worker  %p_22.1 = add i32 %4, 192
58*9880d681SAndroid Build Coastguard Worker  %p_d.018.1 = getelementptr i32, i32* %dest, i32 %p_21.1
59*9880d681SAndroid Build Coastguard Worker  %p_d.01823.1 = getelementptr i32, i32* %dest, i32 %p_22.1
60*9880d681SAndroid Build Coastguard Worker  %p_24.1 = add i32 %4, 136
61*9880d681SAndroid Build Coastguard Worker  %p_25.1 = add i32 %4, 200
62*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.1 = getelementptr i32, i32* %dest, i32 %p_24.1
63*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.1 = getelementptr i32, i32* %dest, i32 %p_25.1
64*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.1 = load i32, i32* %p_d.018.1, align 4
65*9880d681SAndroid Build Coastguard Worker  %_p_vec_.1 = insertelement <2 x i32> undef, i32 %_p_scalar_.1, i32 0
66*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.1 = load i32, i32* %p_d.01823.1, align 4
67*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.1 = insertelement <2 x i32> %_p_vec_.1, i32 %_p_scalar_27.1, i32 1
68*9880d681SAndroid Build Coastguard Worker  %24 = bitcast <2 x i32> %_p_vec_28.1 to i64
69*9880d681SAndroid Build Coastguard Worker  %25 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %24, i32 31)
70*9880d681SAndroid Build Coastguard Worker  %26 = bitcast i64 %25 to <2 x i32>
71*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.1 = ashr <2 x i32> %_p_vec_28.1, %7
72*9880d681SAndroid Build Coastguard Worker  %xorp_vec.1 = xor <2 x i32> %26, %sub12p_vec
73*9880d681SAndroid Build Coastguard Worker  %27 = bitcast <2 x i32> %shr9p_vec.1 to i64
74*9880d681SAndroid Build Coastguard Worker  %28 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %25, i64 %27)
75*9880d681SAndroid Build Coastguard Worker  %29 = bitcast <2 x i32> %xorp_vec.1 to i64
76*9880d681SAndroid Build Coastguard Worker  %30 = tail call i64 @llvm.hexagon.C2.vmux(i32 %28, i64 %24, i64 %29)
77*9880d681SAndroid Build Coastguard Worker  %31 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %30, i32 %gb)
78*9880d681SAndroid Build Coastguard Worker  %32 = bitcast i64 %31 to <2 x i32>
79*9880d681SAndroid Build Coastguard Worker  %33 = extractelement <2 x i32> %32, i32 0
80*9880d681SAndroid Build Coastguard Worker  store i32 %33, i32* %p_arrayidx14.1, align 4
81*9880d681SAndroid Build Coastguard Worker  %34 = extractelement <2 x i32> %32, i32 1
82*9880d681SAndroid Build Coastguard Worker  store i32 %34, i32* %p_arrayidx1426.1, align 4
83*9880d681SAndroid Build Coastguard Worker  store i32 %33, i32* %p_d.018.1, align 4
84*9880d681SAndroid Build Coastguard Worker  store i32 %34, i32* %p_d.01823.1, align 4
85*9880d681SAndroid Build Coastguard Worker  %p_21.2 = add i32 %4, 256
86*9880d681SAndroid Build Coastguard Worker  %p_22.2 = add i32 %4, 320
87*9880d681SAndroid Build Coastguard Worker  %p_d.018.2 = getelementptr i32, i32* %dest, i32 %p_21.2
88*9880d681SAndroid Build Coastguard Worker  %p_d.01823.2 = getelementptr i32, i32* %dest, i32 %p_22.2
89*9880d681SAndroid Build Coastguard Worker  %p_24.2 = add i32 %4, 264
90*9880d681SAndroid Build Coastguard Worker  %p_25.2 = add i32 %4, 328
91*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.2 = getelementptr i32, i32* %dest, i32 %p_24.2
92*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.2 = getelementptr i32, i32* %dest, i32 %p_25.2
93*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.2 = load i32, i32* %p_d.018.2, align 4
94*9880d681SAndroid Build Coastguard Worker  %_p_vec_.2 = insertelement <2 x i32> undef, i32 %_p_scalar_.2, i32 0
95*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.2 = load i32, i32* %p_d.01823.2, align 4
96*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.2 = insertelement <2 x i32> %_p_vec_.2, i32 %_p_scalar_27.2, i32 1
97*9880d681SAndroid Build Coastguard Worker  %35 = bitcast <2 x i32> %_p_vec_28.2 to i64
98*9880d681SAndroid Build Coastguard Worker  %36 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %35, i32 31)
99*9880d681SAndroid Build Coastguard Worker  %37 = bitcast i64 %36 to <2 x i32>
100*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.2 = ashr <2 x i32> %_p_vec_28.2, %7
101*9880d681SAndroid Build Coastguard Worker  %xorp_vec.2 = xor <2 x i32> %37, %sub12p_vec
102*9880d681SAndroid Build Coastguard Worker  %38 = bitcast <2 x i32> %shr9p_vec.2 to i64
103*9880d681SAndroid Build Coastguard Worker  %39 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %36, i64 %38)
104*9880d681SAndroid Build Coastguard Worker  %40 = bitcast <2 x i32> %xorp_vec.2 to i64
105*9880d681SAndroid Build Coastguard Worker  %41 = tail call i64 @llvm.hexagon.C2.vmux(i32 %39, i64 %35, i64 %40)
106*9880d681SAndroid Build Coastguard Worker  %42 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %41, i32 %gb)
107*9880d681SAndroid Build Coastguard Worker  %43 = bitcast i64 %42 to <2 x i32>
108*9880d681SAndroid Build Coastguard Worker  %44 = extractelement <2 x i32> %43, i32 0
109*9880d681SAndroid Build Coastguard Worker  store i32 %44, i32* %p_arrayidx14.2, align 4
110*9880d681SAndroid Build Coastguard Worker  %45 = extractelement <2 x i32> %43, i32 1
111*9880d681SAndroid Build Coastguard Worker  store i32 %45, i32* %p_arrayidx1426.2, align 4
112*9880d681SAndroid Build Coastguard Worker  store i32 %44, i32* %p_d.018.2, align 4
113*9880d681SAndroid Build Coastguard Worker  store i32 %45, i32* %p_d.01823.2, align 4
114*9880d681SAndroid Build Coastguard Worker  %p_21.3 = add i32 %4, 384
115*9880d681SAndroid Build Coastguard Worker  %p_22.3 = add i32 %4, 448
116*9880d681SAndroid Build Coastguard Worker  %p_d.018.3 = getelementptr i32, i32* %dest, i32 %p_21.3
117*9880d681SAndroid Build Coastguard Worker  %p_d.01823.3 = getelementptr i32, i32* %dest, i32 %p_22.3
118*9880d681SAndroid Build Coastguard Worker  %p_24.3 = add i32 %4, 392
119*9880d681SAndroid Build Coastguard Worker  %p_25.3 = add i32 %4, 456
120*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.3 = getelementptr i32, i32* %dest, i32 %p_24.3
121*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.3 = getelementptr i32, i32* %dest, i32 %p_25.3
122*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.3 = load i32, i32* %p_d.018.3, align 4
123*9880d681SAndroid Build Coastguard Worker  %_p_vec_.3 = insertelement <2 x i32> undef, i32 %_p_scalar_.3, i32 0
124*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.3 = load i32, i32* %p_d.01823.3, align 4
125*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.3 = insertelement <2 x i32> %_p_vec_.3, i32 %_p_scalar_27.3, i32 1
126*9880d681SAndroid Build Coastguard Worker  %46 = bitcast <2 x i32> %_p_vec_28.3 to i64
127*9880d681SAndroid Build Coastguard Worker  %47 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %46, i32 31)
128*9880d681SAndroid Build Coastguard Worker  %48 = bitcast i64 %47 to <2 x i32>
129*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.3 = ashr <2 x i32> %_p_vec_28.3, %7
130*9880d681SAndroid Build Coastguard Worker  %xorp_vec.3 = xor <2 x i32> %48, %sub12p_vec
131*9880d681SAndroid Build Coastguard Worker  %49 = bitcast <2 x i32> %shr9p_vec.3 to i64
132*9880d681SAndroid Build Coastguard Worker  %50 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %47, i64 %49)
133*9880d681SAndroid Build Coastguard Worker  %51 = bitcast <2 x i32> %xorp_vec.3 to i64
134*9880d681SAndroid Build Coastguard Worker  %52 = tail call i64 @llvm.hexagon.C2.vmux(i32 %50, i64 %46, i64 %51)
135*9880d681SAndroid Build Coastguard Worker  %53 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %52, i32 %gb)
136*9880d681SAndroid Build Coastguard Worker  %54 = bitcast i64 %53 to <2 x i32>
137*9880d681SAndroid Build Coastguard Worker  %55 = extractelement <2 x i32> %54, i32 0
138*9880d681SAndroid Build Coastguard Worker  store i32 %55, i32* %p_arrayidx14.3, align 4
139*9880d681SAndroid Build Coastguard Worker  %56 = extractelement <2 x i32> %54, i32 1
140*9880d681SAndroid Build Coastguard Worker  store i32 %56, i32* %p_arrayidx1426.3, align 4
141*9880d681SAndroid Build Coastguard Worker  store i32 %55, i32* %p_d.018.3, align 4
142*9880d681SAndroid Build Coastguard Worker  store i32 %56, i32* %p_d.01823.3, align 4
143*9880d681SAndroid Build Coastguard Worker  %p_21.4 = add i32 %4, 512
144*9880d681SAndroid Build Coastguard Worker  %p_22.4 = add i32 %4, 576
145*9880d681SAndroid Build Coastguard Worker  %p_d.018.4 = getelementptr i32, i32* %dest, i32 %p_21.4
146*9880d681SAndroid Build Coastguard Worker  %p_d.01823.4 = getelementptr i32, i32* %dest, i32 %p_22.4
147*9880d681SAndroid Build Coastguard Worker  %p_24.4 = add i32 %4, 520
148*9880d681SAndroid Build Coastguard Worker  %p_25.4 = add i32 %4, 584
149*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.4 = getelementptr i32, i32* %dest, i32 %p_24.4
150*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.4 = getelementptr i32, i32* %dest, i32 %p_25.4
151*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.4 = load i32, i32* %p_d.018.4, align 4
152*9880d681SAndroid Build Coastguard Worker  %_p_vec_.4 = insertelement <2 x i32> undef, i32 %_p_scalar_.4, i32 0
153*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.4 = load i32, i32* %p_d.01823.4, align 4
154*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.4 = insertelement <2 x i32> %_p_vec_.4, i32 %_p_scalar_27.4, i32 1
155*9880d681SAndroid Build Coastguard Worker  %57 = bitcast <2 x i32> %_p_vec_28.4 to i64
156*9880d681SAndroid Build Coastguard Worker  %58 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %57, i32 31)
157*9880d681SAndroid Build Coastguard Worker  %59 = bitcast i64 %58 to <2 x i32>
158*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.4 = ashr <2 x i32> %_p_vec_28.4, %7
159*9880d681SAndroid Build Coastguard Worker  %xorp_vec.4 = xor <2 x i32> %59, %sub12p_vec
160*9880d681SAndroid Build Coastguard Worker  %60 = bitcast <2 x i32> %shr9p_vec.4 to i64
161*9880d681SAndroid Build Coastguard Worker  %61 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %58, i64 %60)
162*9880d681SAndroid Build Coastguard Worker  %62 = bitcast <2 x i32> %xorp_vec.4 to i64
163*9880d681SAndroid Build Coastguard Worker  %63 = tail call i64 @llvm.hexagon.C2.vmux(i32 %61, i64 %57, i64 %62)
164*9880d681SAndroid Build Coastguard Worker  %64 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %63, i32 %gb)
165*9880d681SAndroid Build Coastguard Worker  %65 = bitcast i64 %64 to <2 x i32>
166*9880d681SAndroid Build Coastguard Worker  %66 = extractelement <2 x i32> %65, i32 0
167*9880d681SAndroid Build Coastguard Worker  store i32 %66, i32* %p_arrayidx14.4, align 4
168*9880d681SAndroid Build Coastguard Worker  %67 = extractelement <2 x i32> %65, i32 1
169*9880d681SAndroid Build Coastguard Worker  store i32 %67, i32* %p_arrayidx1426.4, align 4
170*9880d681SAndroid Build Coastguard Worker  store i32 %66, i32* %p_d.018.4, align 4
171*9880d681SAndroid Build Coastguard Worker  store i32 %67, i32* %p_d.01823.4, align 4
172*9880d681SAndroid Build Coastguard Worker  %p_21.5 = add i32 %4, 640
173*9880d681SAndroid Build Coastguard Worker  %p_22.5 = add i32 %4, 704
174*9880d681SAndroid Build Coastguard Worker  %p_d.018.5 = getelementptr i32, i32* %dest, i32 %p_21.5
175*9880d681SAndroid Build Coastguard Worker  %p_d.01823.5 = getelementptr i32, i32* %dest, i32 %p_22.5
176*9880d681SAndroid Build Coastguard Worker  %p_24.5 = add i32 %4, 648
177*9880d681SAndroid Build Coastguard Worker  %p_25.5 = add i32 %4, 712
178*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.5 = getelementptr i32, i32* %dest, i32 %p_24.5
179*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.5 = getelementptr i32, i32* %dest, i32 %p_25.5
180*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.5 = load i32, i32* %p_d.018.5, align 4
181*9880d681SAndroid Build Coastguard Worker  %_p_vec_.5 = insertelement <2 x i32> undef, i32 %_p_scalar_.5, i32 0
182*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.5 = load i32, i32* %p_d.01823.5, align 4
183*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.5 = insertelement <2 x i32> %_p_vec_.5, i32 %_p_scalar_27.5, i32 1
184*9880d681SAndroid Build Coastguard Worker  %68 = bitcast <2 x i32> %_p_vec_28.5 to i64
185*9880d681SAndroid Build Coastguard Worker  %69 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %68, i32 31)
186*9880d681SAndroid Build Coastguard Worker  %70 = bitcast i64 %69 to <2 x i32>
187*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.5 = ashr <2 x i32> %_p_vec_28.5, %7
188*9880d681SAndroid Build Coastguard Worker  %xorp_vec.5 = xor <2 x i32> %70, %sub12p_vec
189*9880d681SAndroid Build Coastguard Worker  %71 = bitcast <2 x i32> %shr9p_vec.5 to i64
190*9880d681SAndroid Build Coastguard Worker  %72 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %69, i64 %71)
191*9880d681SAndroid Build Coastguard Worker  %73 = bitcast <2 x i32> %xorp_vec.5 to i64
192*9880d681SAndroid Build Coastguard Worker  %74 = tail call i64 @llvm.hexagon.C2.vmux(i32 %72, i64 %68, i64 %73)
193*9880d681SAndroid Build Coastguard Worker  %75 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %74, i32 %gb)
194*9880d681SAndroid Build Coastguard Worker  %76 = bitcast i64 %75 to <2 x i32>
195*9880d681SAndroid Build Coastguard Worker  %77 = extractelement <2 x i32> %76, i32 0
196*9880d681SAndroid Build Coastguard Worker  store i32 %77, i32* %p_arrayidx14.5, align 4
197*9880d681SAndroid Build Coastguard Worker  %78 = extractelement <2 x i32> %76, i32 1
198*9880d681SAndroid Build Coastguard Worker  store i32 %78, i32* %p_arrayidx1426.5, align 4
199*9880d681SAndroid Build Coastguard Worker  store i32 %77, i32* %p_d.018.5, align 4
200*9880d681SAndroid Build Coastguard Worker  store i32 %78, i32* %p_d.01823.5, align 4
201*9880d681SAndroid Build Coastguard Worker  %p_21.6 = add i32 %4, 768
202*9880d681SAndroid Build Coastguard Worker  %p_22.6 = add i32 %4, 832
203*9880d681SAndroid Build Coastguard Worker  %p_d.018.6 = getelementptr i32, i32* %dest, i32 %p_21.6
204*9880d681SAndroid Build Coastguard Worker  %p_d.01823.6 = getelementptr i32, i32* %dest, i32 %p_22.6
205*9880d681SAndroid Build Coastguard Worker  %p_24.6 = add i32 %4, 776
206*9880d681SAndroid Build Coastguard Worker  %p_25.6 = add i32 %4, 840
207*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.6 = getelementptr i32, i32* %dest, i32 %p_24.6
208*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.6 = getelementptr i32, i32* %dest, i32 %p_25.6
209*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.6 = load i32, i32* %p_d.018.6, align 4
210*9880d681SAndroid Build Coastguard Worker  %_p_vec_.6 = insertelement <2 x i32> undef, i32 %_p_scalar_.6, i32 0
211*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.6 = load i32, i32* %p_d.01823.6, align 4
212*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.6 = insertelement <2 x i32> %_p_vec_.6, i32 %_p_scalar_27.6, i32 1
213*9880d681SAndroid Build Coastguard Worker  %79 = bitcast <2 x i32> %_p_vec_28.6 to i64
214*9880d681SAndroid Build Coastguard Worker  %80 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %79, i32 31)
215*9880d681SAndroid Build Coastguard Worker  %81 = bitcast i64 %80 to <2 x i32>
216*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.6 = ashr <2 x i32> %_p_vec_28.6, %7
217*9880d681SAndroid Build Coastguard Worker  %xorp_vec.6 = xor <2 x i32> %81, %sub12p_vec
218*9880d681SAndroid Build Coastguard Worker  %82 = bitcast <2 x i32> %shr9p_vec.6 to i64
219*9880d681SAndroid Build Coastguard Worker  %83 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %80, i64 %82)
220*9880d681SAndroid Build Coastguard Worker  %84 = bitcast <2 x i32> %xorp_vec.6 to i64
221*9880d681SAndroid Build Coastguard Worker  %85 = tail call i64 @llvm.hexagon.C2.vmux(i32 %83, i64 %79, i64 %84)
222*9880d681SAndroid Build Coastguard Worker  %86 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %85, i32 %gb)
223*9880d681SAndroid Build Coastguard Worker  %87 = bitcast i64 %86 to <2 x i32>
224*9880d681SAndroid Build Coastguard Worker  %88 = extractelement <2 x i32> %87, i32 0
225*9880d681SAndroid Build Coastguard Worker  store i32 %88, i32* %p_arrayidx14.6, align 4
226*9880d681SAndroid Build Coastguard Worker  %89 = extractelement <2 x i32> %87, i32 1
227*9880d681SAndroid Build Coastguard Worker  store i32 %89, i32* %p_arrayidx1426.6, align 4
228*9880d681SAndroid Build Coastguard Worker  store i32 %88, i32* %p_d.018.6, align 4
229*9880d681SAndroid Build Coastguard Worker  store i32 %89, i32* %p_d.01823.6, align 4
230*9880d681SAndroid Build Coastguard Worker  %p_21.7 = add i32 %4, 896
231*9880d681SAndroid Build Coastguard Worker  %p_22.7 = add i32 %4, 960
232*9880d681SAndroid Build Coastguard Worker  %p_d.018.7 = getelementptr i32, i32* %dest, i32 %p_21.7
233*9880d681SAndroid Build Coastguard Worker  %p_d.01823.7 = getelementptr i32, i32* %dest, i32 %p_22.7
234*9880d681SAndroid Build Coastguard Worker  %p_24.7 = add i32 %4, 904
235*9880d681SAndroid Build Coastguard Worker  %p_25.7 = add i32 %4, 968
236*9880d681SAndroid Build Coastguard Worker  %p_arrayidx14.7 = getelementptr i32, i32* %dest, i32 %p_24.7
237*9880d681SAndroid Build Coastguard Worker  %p_arrayidx1426.7 = getelementptr i32, i32* %dest, i32 %p_25.7
238*9880d681SAndroid Build Coastguard Worker  %_p_scalar_.7 = load i32, i32* %p_d.018.7, align 4
239*9880d681SAndroid Build Coastguard Worker  %_p_vec_.7 = insertelement <2 x i32> undef, i32 %_p_scalar_.7, i32 0
240*9880d681SAndroid Build Coastguard Worker  %_p_scalar_27.7 = load i32, i32* %p_d.01823.7, align 4
241*9880d681SAndroid Build Coastguard Worker  %_p_vec_28.7 = insertelement <2 x i32> %_p_vec_.7, i32 %_p_scalar_27.7, i32 1
242*9880d681SAndroid Build Coastguard Worker  %90 = bitcast <2 x i32> %_p_vec_28.7 to i64
243*9880d681SAndroid Build Coastguard Worker  %91 = tail call i64 @llvm.hexagon.S2.asr.i.vw(i64 %90, i32 31)
244*9880d681SAndroid Build Coastguard Worker  %92 = bitcast i64 %91 to <2 x i32>
245*9880d681SAndroid Build Coastguard Worker  %shr9p_vec.7 = ashr <2 x i32> %_p_vec_28.7, %7
246*9880d681SAndroid Build Coastguard Worker  %xorp_vec.7 = xor <2 x i32> %92, %sub12p_vec
247*9880d681SAndroid Build Coastguard Worker  %93 = bitcast <2 x i32> %shr9p_vec.7 to i64
248*9880d681SAndroid Build Coastguard Worker  %94 = tail call i32 @llvm.hexagon.A2.vcmpweq(i64 %91, i64 %93)
249*9880d681SAndroid Build Coastguard Worker  %95 = bitcast <2 x i32> %xorp_vec.7 to i64
250*9880d681SAndroid Build Coastguard Worker  %96 = tail call i64 @llvm.hexagon.C2.vmux(i32 %94, i64 %90, i64 %95)
251*9880d681SAndroid Build Coastguard Worker  %97 = tail call i64 @llvm.hexagon.S2.asl.r.vw(i64 %96, i32 %gb)
252*9880d681SAndroid Build Coastguard Worker  %98 = bitcast i64 %97 to <2 x i32>
253*9880d681SAndroid Build Coastguard Worker  %99 = extractelement <2 x i32> %98, i32 0
254*9880d681SAndroid Build Coastguard Worker  store i32 %99, i32* %p_arrayidx14.7, align 4
255*9880d681SAndroid Build Coastguard Worker  %100 = extractelement <2 x i32> %98, i32 1
256*9880d681SAndroid Build Coastguard Worker  store i32 %100, i32* %p_arrayidx1426.7, align 4
257*9880d681SAndroid Build Coastguard Worker  store i32 %99, i32* %p_d.018.7, align 4
258*9880d681SAndroid Build Coastguard Worker  store i32 %100, i32* %p_d.01823.7, align 4
259*9880d681SAndroid Build Coastguard Worker  ret void
260*9880d681SAndroid Build Coastguard Worker}
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asr.i.vw(i64, i32) #1
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asl.i.vw(i64, i32) #1
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.A2.combinew(i32, i32) #1
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.A2.vcmpweq(i64, i64) #1
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.C2.vmux(i32, i64, i64) #1
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.hexagon.S2.asl.r.vw(i64, i32) #1
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
275*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone }
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Worker!0 = !{!"int", !1}
278*9880d681SAndroid Build Coastguard Worker!1 = !{!"omnipotent char", !2}
279*9880d681SAndroid Build Coastguard Worker!2 = !{!"Simple C/C++ TBAA"}
280