1 ; Show that we know how to translate (floating point) vldr. 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 r5,s20,d20 \ 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 r5,s20,d20 \ 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 r5,s20,d20 \ 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 r5,s20,d20 \ 25 ; RUN: | FileCheck %s --check-prefix=DIS 26 27 define internal float @testFloat() { 28 ; ASM-LABEL: testFloat: 29 ; DIS-LABEL: 00000000 <testFloat>: 30 31 entry: 32 ; ASM: .LtestFloat$entry: 33 34 %vaddr = inttoptr i32 0 to float* 35 %v = load float, float* %vaddr, align 1 36 37 ; ASM: vldr s20, [r5] 38 ; DIS: c: ed95aa00 39 ; IASM-NOT: vldr 40 41 ret float %v 42 } 43 44 define internal double @testDouble() { 45 ; ASM-LABEL: testDouble: 46 ; DIS-LABEL: 00000020 <testDouble>: 47 48 entry: 49 ; ASM: .LtestDouble$entry: 50 51 ; %vaddr = bitcast [8 x i8]* @doubleVal to double* 52 %vaddr = inttoptr i32 0 to double* 53 %v = load double, double* %vaddr, align 1 54 55 ; ASM: vldr d20, [r5] 56 ; DIS: 28: edd54b00 57 ; IASM-NOT: vldr 58 59 ret double %v 60 } 61