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