xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-vector-imm.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_orrimm(<8 x i8>* %A) nounwind {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_orrimm:
5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov
6*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn
7*9880d681SAndroid Build Coastguard Worker; CHECK: orr
8*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
9*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <8 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
10*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_orrimmQ(<16 x i8>* %A) nounwind {
14*9880d681SAndroid Build Coastguard Worker; CHECK: v_orrimmQ
15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov
16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn
17*9880d681SAndroid Build Coastguard Worker; CHECK: orr
18*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
19*9880d681SAndroid Build Coastguard Worker	%tmp3 = or <16 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
20*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_bicimm(<8 x i8>* %A) nounwind {
24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimm:
25*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov
26*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn
27*9880d681SAndroid Build Coastguard Worker; CHECK: bic
28*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <8 x i8>, <8 x i8>* %A
29*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
30*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp3
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_bicimmQ(<16 x i8>* %A) nounwind {
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimmQ:
35*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov
36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn
37*9880d681SAndroid Build Coastguard Worker; CHECK: bic
38*9880d681SAndroid Build Coastguard Worker	%tmp1 = load <16 x i8>, <16 x i8>* %A
39*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
40*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp3
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @foo(<2 x double> %bar) nounwind {
44*9880d681SAndroid Build Coastguard Worker; CHECK: foo
45*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.2d	v1, #1.0000000
46*9880d681SAndroid Build Coastguard Worker  %add = fadd <2 x double> %bar, <double 1.0, double 1.0>
47*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %add
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t1() nounwind readnone ssp {
51*9880d681SAndroid Build Coastguard Workerentry:
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t1:
53*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75
54*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> <i32 75, i32 75, i32 75, i32 75>
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t2() nounwind readnone ssp {
58*9880d681SAndroid Build Coastguard Workerentry:
59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t2:
60*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #8
61*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> <i32 19200, i32 19200, i32 19200, i32 19200>
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t3() nounwind readnone ssp {
65*9880d681SAndroid Build Coastguard Workerentry:
66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t3:
67*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #16
68*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> <i32 4915200, i32 4915200, i32 4915200, i32 4915200>
69*9880d681SAndroid Build Coastguard Worker}
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t4() nounwind readnone ssp {
72*9880d681SAndroid Build Coastguard Workerentry:
73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t4:
74*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #24
75*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> <i32 1258291200, i32 1258291200, i32 1258291200, i32 1258291200>
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @movi_8h_imm_t5() nounwind readnone ssp {
79*9880d681SAndroid Build Coastguard Workerentry:
80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_8h_imm_t5:
81*9880d681SAndroid Build Coastguard Worker; CHECK: movi.8h v0, #75
82*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> <i16 75, i16 75, i16 75, i16 75, i16 75, i16 75, i16 75, i16 75>
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker; rdar://11989841
86*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @movi_8h_imm_t6() nounwind readnone ssp {
87*9880d681SAndroid Build Coastguard Workerentry:
88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_8h_imm_t6:
89*9880d681SAndroid Build Coastguard Worker; CHECK: movi.8h v0, #75, lsl #8
90*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> <i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200>
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t7() nounwind readnone ssp {
94*9880d681SAndroid Build Coastguard Workerentry:
95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t7:
96*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, msl #8
97*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 19455, i32 19455, i32 19455, i32 19455>
98*9880d681SAndroid Build Coastguard Worker}
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t8() nounwind readnone ssp {
101*9880d681SAndroid Build Coastguard Workerentry:
102*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t8:
103*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, msl #16
104*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 4980735, i32 4980735, i32 4980735, i32 4980735>
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @movi_16b_imm_t9() nounwind readnone ssp {
108*9880d681SAndroid Build Coastguard Workerentry:
109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_16b_imm_t9:
110*9880d681SAndroid Build Coastguard Worker; CHECK: movi.16b v0, #75
111*9880d681SAndroid Build Coastguard Workerret <16 x i8> <i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75,
112*9880d681SAndroid Build Coastguard Worker               i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75>
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @movi_2d_imm_t10() nounwind readnone ssp {
116*9880d681SAndroid Build Coastguard Workerentry:
117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_2d_imm_t10:
118*9880d681SAndroid Build Coastguard Worker; CHECK: movi.2d v0, #0xff00ff00ff00ff
119*9880d681SAndroid Build Coastguard Workerret <2 x i64> <i64 71777214294589695, i64 71777214294589695>
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t11() nounwind readnone ssp {
123*9880d681SAndroid Build Coastguard Workerentry:
124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t11:
125*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.4s v0, #-0.32812500
126*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 3198681088, i32 3198681088, i32 3198681088, i32 3198681088>
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @movi_2d_imm_t12() nounwind readnone ssp {
130*9880d681SAndroid Build Coastguard Workerentry:
131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_2d_imm_t12:
132*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.2d v0, #-0.17187500
133*9880d681SAndroid Build Coastguard Workerret <2 x i64> <i64 13818732506632945664, i64 13818732506632945664>
134*9880d681SAndroid Build Coastguard Worker}
135