1; Show that we can move between float (S) and integer (GPR) registers. 2 3; REQUIRES: allow_dump 4 5; Compile using standalone assembler. 6; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ 7; RUN: --reg-use=s20,r5,r6 | FileCheck %s --check-prefix=ASM 8 9; Show bytes in assembled standalone code. 10; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ 11; RUN: --args -Om1 --reg-use=s20,r5,r6 | FileCheck %s --check-prefix=DIS 12 13; Compile using integrated assembler. 14; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \ 15; RUN: --reg-use=s20,r5,r6 \ 16; RUN: | FileCheck %s --check-prefix=IASM 17 18; Show bytes in assembled integrated code. 19; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ 20; RUN: --args -Om1 --reg-use=s20,r5,r6 | FileCheck %s --check-prefix=DIS 21 22define internal void @FloatToI1() { 23; ASM-LABEL: FloatToI1: 24; DIS-LABEL: {{.+}} <FloatToI1>: 25 26 %v = fptoui float 0.0 to i1 27 28; ASM: vmov r5, s20 29; DIS: {{.+}}: ee1a5a10 30; IASM-NOT: vmov 31 32 ret void 33} 34 35define internal void @FloatToI8() { 36; ASM-LABEL: FloatToI8: 37; DIS-LABEL: {{.+}} <FloatToI8>: 38 39 %v = fptoui float 0.0 to i8 40 41; ASM: vmov r5, s20 42; DIS: {{.+}}: ee1a5a10 43; IASM-NOT: vmov 44 45 ret void 46} 47 48define internal void @FloatToI16() { 49; ASM-LABEL: FloatToI16: 50; DIS-LABEL: {{.+}} <FloatToI16>: 51 52 %v = fptoui float 0.0 to i16 53 54; ASM: vmov r5, s20 55; DIS: {{.+}}: ee1a5a10 56; IASM-NOT: vmov 57 58 ret void 59} 60 61define internal void @FloatToI32() { 62; ASM-LABEL: FloatToI32: 63; DIS-LABEL: {{.+}} <FloatToI32>: 64 65 %v = fptoui float 0.0 to i32 66 67; ASM: vmov r5, s20 68; DIS: {{.+}}: ee1a5a10 69; IASM-NOT: vmov 70 71 ret void 72} 73 74define internal float @I1ToFloat() { 75; ASM-LABEL: I1ToFloat: 76; DIS-LABEL: {{.+}} <I1ToFloat>: 77 78 %v = uitofp i1 1 to float 79 80; ASM: vmov s20, r5 81; DIS: {{.+}}: ee0a5a10 82; IASM-NOT: vmov 83 84 ret float %v 85} 86 87define internal float @I8ToFloat() { 88; ASM-LABEL: I8ToFloat: 89; DIS-LABEL: {{.+}} <I8ToFloat>: 90 91 %v = uitofp i8 1 to float 92 93; ASM: vmov s20, r5 94; DIS: {{.+}}: ee0a5a10 95; IASM-NOT: vmov 96 97 ret float %v 98} 99 100define internal float @I16ToFloat() { 101; ASM-LABEL: I16ToFloat: 102; DIS-LABEL: {{.+}} <I16ToFloat>: 103 104 %v = uitofp i16 1 to float 105 106; ASM: vmov s20, r5 107; DIS: {{.+}}: ee0a5a10 108; IASM-NOT: vmov 109 110 ret float %v 111} 112 113define internal float @I32ToFloat() { 114; ASM-LABEL: I32ToFloat: 115; DIS-LABEL: {{.+}} <I32ToFloat>: 116 117 %v = uitofp i32 17 to float 118 119; ASM: vmov s20, r5 120; DIS: {{.+}}: ee0a5a10 121; IASM-NOT: vmov 122 123 ret float %v 124} 125