• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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