; Test vldr{s,d} and vstr{s,d} when address is offset with an immediate. ; REQUIRES: allow_dump ; Compile using standalone assembler. ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ ; RUN: -reg-use d20 \ ; RUN: | FileCheck %s --check-prefix=ASM ; Show bytes in assembled standalone code. ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ ; RUN: --args -Om1 \ ; RUN: -reg-use d20 \ ; RUN: | FileCheck %s --check-prefix=DIS ; Compile using integrated assembler. ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \ ; RUN: -reg-use d20 \ ; RUN: | FileCheck %s --check-prefix=IASM ; Show bytes in assembled integrated code. ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ ; RUN: --args -Om1 \ ; RUN: -reg-use d20 \ ; RUN: | FileCheck %s --check-prefix=DIS define internal i32 @testFloatImm(float %f) { ; ASM-LABEL: testFloatImm: ; DIS-LABEL: 00000000 : ; IASM-LABEL: testFloatImm: entry: ; ASM: .LtestFloatImm$entry: ; IASM: .LtestFloatImm$entry: ; ASM: vstr s0, [sp, #4] ; DIS: 4: ed8d0a01 ; IASM-NOT: vstr %v = bitcast float %f to i32 ; ASM: vldr s0, [sp, #4] ; DIS: 8: ed9d0a01 ; IASM-NOT: vldr ret i32 %v } define internal i64 @testDoubleImm(double %d) { ; ASM-LABEL: testDoubleImm: ; DIS-LABEL: 00000020 : ; IASM-LABEL: testDoubleImm: entry: ; ASM: .LtestDoubleImm$entry: ; IASM: .LtestDoubleImm$entry: ; ASM: vstr d0, [sp, #8] ; DIS: 24: ed8d0b02 ; IASM-NOT: vstr %v = bitcast double %d to i64 ; ASM: vldr d20, [sp, #8] ; DIS: 28: eddd4b02 ; IASM-NOT: vldr ret i64 %v }