• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; Test that we handle a vector move.
2
3; NOTE: We use -O2 to force a vector move for the return value.
4
5; REQUIRES: allow_dump
6
7; Compile using standalone assembler.
8; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
9; RUN:   | FileCheck %s --check-prefix=ASM
10
11; Show bytes in assembled standalone code.
12; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
13; RUN:   --args -O2 \
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:   | FileCheck %s --check-prefix=IASM
19
20; Show bytes in assembled integrated code.
21; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
22; RUN:   --args -O2 \
23; RUN:   | FileCheck %s --check-prefix=DIS
24
25
26define internal <4 x float> @testMoveVector(<4 x i32> %a, <4 x i32> %b) {
27; ASM-LABEL: testMoveVector:
28; DIS-LABEL:{{.+}} <testMoveVector>:
29; IASM-LABEL: testMoveVector:
30
31entry:
32  %0 = bitcast <4 x i32> %b to <4 x float>
33  ret <4 x float> %0
34
35; ASM:  vmov.f32        q0, q1
36; The integrated assembler emits a vorr instead of a vmov.
37; DIS:  0:     f2220152
38; IASM-NOT: vmov.f32    q0, q1
39; IASM-NOT: vorr        q0, q1, q1
40
41}
42