• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; Show that we know how to translate vadd vector instructions.
2
3; REQUIRES: allow_dump
4
5; Compile using standalone assembler.
6; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
7; RUN:   -reg-use q10,q11 \
8; RUN:   | FileCheck %s --check-prefix=ASM
9
10; Show bytes in assembled standalone code.
11; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
12; RUN:   --args -O2 \
13; RUN:   -reg-use q10,q11 \
14; RUN:   | FileCheck %s --check-prefix=DIS
15
16; Compile using integrated assembler.
17; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
18; RUN:   -reg-use q10,q11 \
19; RUN:   | FileCheck %s --check-prefix=IASM
20
21; Show bytes in assembled integrated code.
22; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
23; RUN:   --args -O2 \
24; RUN:   -reg-use q10,q11 \
25; RUN:   | FileCheck %s --check-prefix=DIS
26
27define internal <4 x float> @testVaddFloat4(<4 x float> %v1, <4 x float> %v2) {
28; ASM-LABEL: testVaddFloat4:
29; DIS-LABEL: 00000000 <testVaddFloat4>:
30; IASM-LABEL: testVaddFloat4:
31
32entry:
33  %res = fadd <4 x float> %v1, %v2
34
35; ASM:     vadd.f32        q10, q10, q11
36; DIS:   8:       f2444de6
37; IASM-NOT:     vadd.f32
38
39  ret <4 x float> %res
40}
41
42define internal <4 x i32> @testVadd4i32(<4 x i32> %v1, <4 x i32> %v2) {
43; ASM-LABEL: testVadd4i32:
44; DIS-LABEL: 00000020 <testVadd4i32>:
45; IASM-LABEL: testVadd4i32:
46
47entry:
48  %res = add <4 x i32> %v1, %v2
49
50; ASM:     vadd.i32        q10, q10, q11
51; DIS:   28:       f26448e6
52; IASM-NOT:     vadd.i32
53
54  ret <4 x i32> %res
55}
56
57define internal <8 x i16> @testVadd8i16(<8 x i16> %v1, <8 x i16> %v2) {
58; ASM-LABEL: testVadd8i16:
59; DIS-LABEL: 00000040 <testVadd8i16>:
60; IASM-LABEL: testVadd8i16:
61
62entry:
63  %res = add <8 x i16> %v1, %v2
64
65; ASM:     vadd.i16        q10, q10, q11
66; DIS:   48:       f25448e6
67; IASM-NOT:     vadd.i16
68
69  ret <8 x i16> %res
70}
71
72define internal <16 x i8> @testVadd16i8(<16 x i8> %v1, <16 x i8> %v2) {
73; ASM-LABEL: testVadd16i8:
74; DIS-LABEL: 00000060 <testVadd16i8>:
75; IASM-LABEL: testVadd16i8:
76
77entry:
78  %res = add <16 x i8> %v1, %v2
79
80; ASM:     vadd.i8        q10, q10, q11
81; DIS:   68:       f24448e6
82; IASM-NOT:     vadd.i8
83
84  ret <16 x i8> %res
85}
86