annotate test/CodeGen/ARM/float-helpers.s @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2 ; RUN: llc -asm-verbose=false -mattr=-vfp2 -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-SOFT
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
3 ; RUN: llc -asm-verbose=false -mattr=-vfp2 -mtriple=arm-eabi -meabi=gnu < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-SOFT
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
4 ; RUN: llc -asm-verbose=false -mattr=+vfp3 -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-SOFTFP
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
5 ; RUN: llc -asm-verbose=false -mattr=+vfp3 -meabi=gnu -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-SOFTFP
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 ; RUN: llc -asm-verbose=false -mattr=+vfp3 -float-abi=hard -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-DP
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7 ; RUN: llc -asm-verbose=false -mattr=+vfp3 -float-abi=hard -meabi=gnu -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-DP
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8 ; RUN: llc -asm-verbose=false -mattr=+vfp3,+fp-only-sp -float-abi=hard -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-SPONLY
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9 ; RUN: llc -asm-verbose=false -mattr=+vfp3,+fp-only-sp -float-abi=hard -mtriple=arm-eabi -meabi=gnu < %s | FileCheck %s -check-prefix=CHECK-ALL -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-SPONLY
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11 ; The Runtime ABI for the ARM Architecture IHI0043 section 4.1.2 The
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12 ; floating-point helper functions to always use the base AAPCS (soft-float)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13 ; calling convention.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15 ; In this test we cover the following configurations:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16 ; CHECK-SOFT -mfloat-abi=soft
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17 ; * expect no use of floating point instructions
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18 ; * expect to use __aeabi_ helper function in each function
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19 ; CHECK-SOFTFP -mfloat-abi=softfp
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 ; * all functions use base AAPCS
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21 ; * floating point instructions permitted, so __aeabi_ helpers only
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22 ; expected when there is no available instruction.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23 ; CHECK-HARD-FP-SP -mfloat-abi=hardfp (single precision instructions)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24 ; * all non Runtime ABI helper functions use AAPCS VFP
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 ; * floating point instructions permitted, so __aeabi_ helpers only
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26 ; expected when there is no available instruction.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27 ; CHECK-HARD-FP-DP -mfloat-abi=hardfp (double precision instructions)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28 ; CHECK-HARD_FP_SPONLY -mfloat-abi=hardfp (double precision but single
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 ; precision only FPU)
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30 ; * as CHECK-HARD-FP-SP, but we split up the double precision helper
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31 ; functions so we can test a single precision only FPU, which has to use
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32 ; helper function for all double precision operations.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 ; In all cases we must use base AAPCS when calling a helper function from
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 ; section 4.1.2.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38 target triple = "arm-eabi"
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 define float @fadd(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41 ; CHECK-SOFT-LABEL: fadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44 ; CHECK-SOFT-NEXT: bl __aeabi_fadd
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48 ; CHECK-SOFTFP-LABEL: fadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 ; CHECK-SOFTFP: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50 ; CHECK-SOFTFP-NEXT: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51 ; CHECK-SOFTFP-NEXT: vadd.f32 s0, s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55 ; CHECK-HARDFP-SP-LABEL: fadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 ; CHECK-HARDFP-SP: vadd.f32 s0, s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59 %add = fadd float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 ret float %add
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63 define float @fdiv(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64 ; CHECK-SOFT-LABEL: fdiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 ; CHECK-SOFT-NEXT: bl __aeabi_fdiv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71 ; CHECK-SOFTFP-LABEL: fdiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72 ; CHECK-SOFTFP: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 ; CHECK-SOFTFP-NEXT: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
74 ; CHECK-SOFTFP-NEXT: vdiv.f32 s0, s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
75 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
76 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
77 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
78 ; CHECK-HARDFP-SP-LABEL: fdiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
79 ; CHECK-HARDFP-SP: vdiv.f32 s0, s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
80 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
81 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
82 %div = fdiv float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
83 ret float %div
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
84 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
85
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
86 define float @fmul(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
87 ; CHECK-SOFT-LABEL: fmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
88 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
89 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
90 ; CHECK-SOFT-NEXT: bl __aeabi_fmul
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
91 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
92 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
93 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
94 ; CHECK-SOFTFP-LABEL: fmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
95 ; CHECK-SOFTFP: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
96 ; CHECK-SOFTFP-NEXT: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
97 ; CHECK-SOFTFP-NEXT: vmul.f32 s0, s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
98 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
99 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
100 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
101 ; CHECK-HARDFP-SP-LABEL: fmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
102 ; CHECK-HARDFP-SP: vmul.f32 s0, s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
103 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
104 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
105 %mul = fmul float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
106 ret float %mul
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
107 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
108
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
109 define float @fsub(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
110 ; CHECK-SOFT-LABEL: fsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
111 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
112 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
113 ; CHECK-SOFT-NEXT: bl __aeabi_fsub
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
114 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
115 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
116 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
117 ; CHECK-SOFTFP-LABEL: fsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
118 ; CHECK-SOFTFP: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
119 ; CHECK-SOFTFP-NEXT: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
120 ; CHECK-SOFTFP-NEXT: vsub.f32 s0, s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
121 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
122 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
123 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
124 ; CHECK-HARDFP-SP-LABEL: fsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
125 ; CHECK-HARDFP-SP: vsub.f32 s0, s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
126 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
127 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
128 %sub = fsub float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
129 ret float %sub
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
130 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
131
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
132 define i32 @fcmpeq(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
133 ; CHECK-SOFT-LABEL: fcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
134 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
135 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
136 ; CHECK-SOFT-NEXT: bl __aeabi_fcmpeq
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
137 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
138 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
139 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
140 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
141 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
142 ; CHECK-SOFTFP-LABEL: fcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
143 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
144 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
145 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
146 ; CHECK-SOFTFP-NEXT: vcmp.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
147 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
148 ; CHECK-SOFTFP-NEXT: moveq r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
149 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
150 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
151 ; CHECK-HARDFP-SP-LABEL: fcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
152 ; CHECK-HARDFP-SP: vcmp.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
153 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
154 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
155 ; CHECK-HARDFP-SP-NEXT: moveq r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
156 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
157 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
158 %cmp = fcmp oeq float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
159 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
160 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
161 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
162
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
163 define i32 @fcmplt(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
164 ; CHECK-SOFT-LABEL: fcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
165 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
166 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
167 ; CHECK-SOFT-NEXT: bl __aeabi_fcmplt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
168 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
169 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
170 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
171 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
172 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
173 ; CHECK-SOFTFP-LABEL: fcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
174 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
175 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
176 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
177 ; CHECK-SOFTFP-NEXT: vcmpe.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
178 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
179 ; CHECK-SOFTFP-NEXT: movmi r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
180 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
181 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
182 ; CHECK-HARDFP-SP-LABEL: fcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
183 ; CHECK-HARDFP-SP: vcmpe.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
184 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
185 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
186 ; CHECK-HARDFP-SP-NEXT: movmi r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
187 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
188 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
189 %cmp = fcmp olt float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
190 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
191 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
192 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
193
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
194 define i32 @fcmple(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
195 ; CHECK-SOFT-LABEL: fcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
196 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
197 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
198 ; CHECK-SOFT-NEXT: bl __aeabi_fcmple
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
199 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
200 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
201 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
202 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
203 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
204 ; CHECK-SOFTFP-LABEL: fcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
205 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
206 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
207 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
208 ; CHECK-SOFTFP-NEXT: vcmpe.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
209 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
210 ; CHECK-SOFTFP-NEXT: movls r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
211 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
212 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
213 ; CHECK-HARDFP-SP-LABEL: fcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
214 ; CHECK-HARDFP-SP: vcmpe.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
215 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
216 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
217 ; CHECK-HARDFP-SP-NEXT: movls r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
218 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
219 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
220 %cmp = fcmp ole float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
221 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
222 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
223 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
224
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
225 define i32 @fcmpge(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
226 ; CHECK-SOFT-LABEL: fcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
227 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
228 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
229 ; CHECK-SOFT-NEXT: bl __aeabi_fcmpge
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
230 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
231 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
232 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
233 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
234 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
235 ; CHECK-SOFTFP-LABEL: fcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
236 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
237 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
238 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
239 ; CHECK-SOFTFP-NEXT: vcmpe.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
240 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
241 ; CHECK-SOFTFP-NEXT: movge r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
242 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
243 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
244 ; CHECK-HARDFP-SP-LABEL: fcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
245 ; CHECK-HARDFP-SP: vcmpe.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
246 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
247 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
248 ; CHECK-HARDFP-SP-NEXT: movge r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
249 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
250 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
251 %cmp = fcmp oge float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
252 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
253 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
254 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
255
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
256 define i32 @fcmpgt(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
257 ; CHECK-SOFT-LABEL: fcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
258 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
259 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
260 ; CHECK-SOFT-NEXT: bl __aeabi_fcmpgt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
261 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
262 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
263 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
264 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
265 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
266 ; CHECK-SOFTFP-LABEL: fcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
267 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
268 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
269 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
270 ; CHECK-SOFTFP-NEXT: vcmpe.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
271 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
272 ; CHECK-SOFTFP-NEXT: movgt r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
273 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
274 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
275 ; CHECK-HARDFP-SP-LABEL: fcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
276 ; CHECK-HARDFP-SP: vcmpe.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
277 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
278 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
279 ; CHECK-HARDFP-SP-NEXT: movgt r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
280 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
281 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
282 %cmp = fcmp ogt float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
283 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
284 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
285 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
286
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
287 define i32 @fcmpun(float %a, float %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
288 ; CHECK-SOFT-LABEL: fcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
289 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
290 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
291 ; CHECK-SOFT-NEXT: bl __aeabi_fcmpun
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
292 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
293 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
294 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
295 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
296 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
297 ; CHECK-SOFTFP-LABEL: fcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
298 ; CHECK-SOFTFP: vmov s2, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
299 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
300 ; CHECK-SOFTFP-NEXT: vmov s0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
301 ; CHECK-SOFTFP-NEXT: vcmpe.f32 s2, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
302 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
303 ; CHECK-SOFTFP-NEXT: movvs r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
304 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
305 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
306 ; CHECK-HARDFP-SP-LABEL: fcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
307 ; CHECK-HARDFP-SP: vcmpe.f32 s0, s1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
308 ; CHECK-HARDFP-SP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
309 ; CHECK-HARDFP-SP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
310 ; CHECK-HARDFP-SP-NEXT: movvs r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
311 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
312 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
313 %cmp = fcmp uno float %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
314 %0 = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
315 ret i32 %0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
316 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
317
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
318 define double @dadd(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
319 ; CHECK-SOFT-LABEL: dadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
320 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
321 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
322 ; CHECK-SOFT-NEXT: bl __aeabi_dadd
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
323 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
324 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
325 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
326 ; CHECK-SOFTFP-LABEL: dadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
327 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
328 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
329 ; CHECK-SOFTFP-NEXT: vadd.f64 d16, d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
330 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
331 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
332 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
333 ; CHECK-HARDFP-DP-LABEL: dadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
334 ; CHECK-HARDFP-DP: vadd.f64 d0, d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
335 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
336 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
337 ; CHECK-HARDFP-SPONLY-LABEL: dadd:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
338 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
339 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
340 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
341 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
342 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dadd
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
343 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
344 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
345 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
346 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
347 %add = fadd double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
348 ret double %add
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
349 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
350
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
351 define double @ddiv(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
352 ; CHECK-SOFT-LABEL: ddiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
353 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
354 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
355 ; CHECK-SOFT-NEXT: bl __aeabi_ddiv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
356 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
357 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
358 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
359 ; CHECK-SOFTFP-LABEL: ddiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
360 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
361 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
362 ; CHECK-SOFTFP-NEXT: vdiv.f64 d16, d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
363 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
364 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
365 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
366 ; CHECK-HARDFP-DP-LABEL: ddiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
367 ; CHECK-HARDFP-DP: vdiv.f64 d0, d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
368 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
369 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
370 ; CHECK-HARDFP-SPONLY-LABEL: ddiv:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
371 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
372 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
373 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
374 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
375 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_ddiv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
376 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
377 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
378 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
379 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
380 %div = fdiv double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
381 ret double %div
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
382 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
383
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
384 define double @dmul(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
385 ; CHECK-SOFT-LABEL: dmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
386 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
387 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
388 ; CHECK-SOFT-NEXT: bl __aeabi_dmul
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
389 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
390 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
391 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
392 ; CHECK-SOFTFP-LABEL: dmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
393 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
394 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
395 ; CHECK-SOFTFP-NEXT: vmul.f64 d16, d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
396 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
397 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
398 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
399 ; CHECK-HARDFP-DP-LABEL: dmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
400 ; CHECK-HARDFP-DP: vmul.f64 d0, d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
401 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
402 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
403 ; CHECK-HARDFP-SPONLY-LABEL: dmul:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
404 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
405 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
406 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
407 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
408 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dmul
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
409 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
410 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
411 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
412 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
413 %mul = fmul double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
414 ret double %mul
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
415 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
416
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
417 define double @dsub(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
418 ; CHECK-SOFT-LABEL: dsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
419 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
420 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
421 ; CHECK-SOFT-NEXT: bl __aeabi_dsub
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
422 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
423 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
424 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
425 ; CHECK-SOFTFP-LABEL: dsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
426 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
427 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
428 ; CHECK-SOFTFP-NEXT: vsub.f64 d16, d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
429 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
430 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
431 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
432 ; CHECK-HARDFP-DP-LABEL: dsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
433 ; CHECK-HARDFP-DP: vsub.f64 d0, d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
434 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
435 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
436 ; CHECK-HARDFP-SPONLY-LABEL: dsub:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
437 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
438 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
439 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
440 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
441 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dsub
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
442 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
443 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
444 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
445 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
446 %sub = fsub double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
447 ret double %sub
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
448 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
449
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
450 define i32 @dcmpeq(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
451 ; CHECK-SOFT-LABEL: dcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
452 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
453 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
454 ; CHECK-SOFT-NEXT: bl __aeabi_dcmpeq
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
455 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
456 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
457 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
458 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
459 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
460 ; CHECK-SOFTFP-LABEL: dcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
461 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
462 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
463 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
464 ; CHECK-SOFTFP-NEXT: vcmp.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
465 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
466 ; CHECK-SOFTFP-NEXT: moveq r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
467 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
468 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
469 ; CHECK-HARDFP-DP-LABEL: dcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
470 ; CHECK-HARDFP-DP: vcmp.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
471 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
472 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
473 ; CHECK-HARDFP-DP-NEXT: moveq r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
474 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
475 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
476 ; CHECK-HARDFP-SPONLY-LABEL: dcmpeq:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
477 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
478 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
479 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
480 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
481 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmpeq
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
482 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
483 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
484 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
485 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
486 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
487 %cmp = fcmp oeq double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
488 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
489 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
490 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
491
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
492 define i32 @dcmplt(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
493 ; CHECK-SOFT-LABEL: dcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
494 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
495 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
496 ; CHECK-SOFT-NEXT: bl __aeabi_dcmplt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
497 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
498 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
499 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
500 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
501 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
502 ; CHECK-SOFTFP-LABEL: dcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
503 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
504 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
505 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
506 ; CHECK-SOFTFP-NEXT: vcmpe.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
507 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
508 ; CHECK-SOFTFP-NEXT: movmi r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
509 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
510 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
511 ; CHECK-HARDFP-DP-LABEL: dcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
512 ; CHECK-HARDFP-DP: vcmpe.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
513 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
514 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
515 ; CHECK-HARDFP-DP-NEXT: movmi r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
516 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
517 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
518 ; CHECK-HARDFP-SPONLY-LABEL: dcmplt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
519 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
520 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
521 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
522 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
523 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmplt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
524 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
525 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
526 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
527 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
528 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
529 %cmp = fcmp olt double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
530 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
531 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
532 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
533
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
534 define i32 @dcmple(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
535 ; CHECK-SOFT-LABEL: dcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
536 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
537 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
538 ; CHECK-SOFT-NEXT: bl __aeabi_dcmple
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
539 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
540 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
541 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
542 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
543 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
544 ; CHECK-SOFTFP-LABEL: dcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
545 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
546 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
547 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
548 ; CHECK-SOFTFP-NEXT: vcmpe.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
549 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
550 ; CHECK-SOFTFP-NEXT: movls r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
551 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
552 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
553 ; CHECK-HARDFP-DP-LABEL: dcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
554 ; CHECK-HARDFP-DP: vcmpe.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
555 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
556 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
557 ; CHECK-HARDFP-DP-NEXT: movls r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
558 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
559 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
560 ; CHECK-HARDFP-SPONLY-LABEL: dcmple:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
561 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
562 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
563 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
564 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
565 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmple
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
566 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
567 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
568 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
569 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
570 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
571 %cmp = fcmp ole double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
572 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
573 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
574 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
575
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
576 define i32 @dcmpge(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
577 ; CHECK-SOFT-LABEL: dcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
578 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
579 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
580 ; CHECK-SOFT-NEXT: bl __aeabi_dcmpge
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
581 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
582 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
583 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
584 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
585 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
586 ; CHECK-SOFTFP-LABEL: dcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
587 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
588 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
589 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
590 ; CHECK-SOFTFP-NEXT: vcmpe.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
591 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
592 ; CHECK-SOFTFP-NEXT: movge r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
593 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
594 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
595 ; CHECK-HARDFP-DP-LABEL: dcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
596 ; CHECK-HARDFP-DP: vcmpe.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
597 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
598 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
599 ; CHECK-HARDFP-DP-NEXT: movge r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
600 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
601 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
602 ; CHECK-HARDFP-SPONLY-LABEL: dcmpge:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
603 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
604 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
605 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
606 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
607 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmpge
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
608 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
609 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
610 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
611 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
612 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
613 %cmp = fcmp oge double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
614 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
615 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
616 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
617
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
618 define i32 @dcmpgt(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
619 ; CHECK-SOFT-LABEL: dcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
620 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
621 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
622 ; CHECK-SOFT-NEXT: bl __aeabi_dcmpgt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
623 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
624 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
625 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
626 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
627 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
628 ; CHECK-SOFTFP-LABEL: dcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
629 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
630 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
631 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
632 ; CHECK-SOFTFP-NEXT: vcmpe.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
633 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
634 ; CHECK-SOFTFP-NEXT: movgt r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
635 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
636 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
637 ; CHECK-HARDFP-DP-LABEL: dcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
638 ; CHECK-HARDFP-DP: vcmpe.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
639 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
640 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
641 ; CHECK-HARDFP-DP-NEXT: movgt r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
642 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
643 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
644 ; CHECK-HARDFP-SPONLY-LABEL: dcmpgt:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
645 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
646 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
647 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
648 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
649 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmpgt
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
650 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
651 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
652 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
653 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
654 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
655 %cmp = fcmp ogt double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
656 %conv = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
657 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
658 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
659
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
660 define i32 @dcmpun(double %a, double %b) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
661 ; CHECK-SOFT-LABEL: dcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
662 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
663 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
664 ; CHECK-SOFT-NEXT: bl __aeabi_dcmpun
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
665 ; CHECK-SOFT-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
666 ; CHECK-SOFT-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
667 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
668 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
669 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
670 ; CHECK-SOFTFP-LABEL: dcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
671 ; CHECK-SOFTFP: vmov d16, r2, r3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
672 ; CHECK-SOFTFP-NEXT: vmov d17, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
673 ; CHECK-SOFTFP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
674 ; CHECK-SOFTFP-NEXT: vcmpe.f64 d17, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
675 ; CHECK-SOFTFP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
676 ; CHECK-SOFTFP-NEXT: movvs r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
677 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
678 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
679 ; CHECK-HARDFP-DP-LABEL: dcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
680 ; CHECK-HARDFP-DP: vcmpe.f64 d0, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
681 ; CHECK-HARDFP-DP-NEXT: mov r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
682 ; CHECK-HARDFP-DP-NEXT: vmrs APSR_nzcv, fpscr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
683 ; CHECK-HARDFP-DP-NEXT: movvs r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
684 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
685 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
686 ; CHECK-HARDFP-SPONLY-LABEL: dcmpun:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
687 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
688 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
689 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
690 ; CHECK-HARDFP-SPONLY-NEXT: vmov r2, r3, d1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
691 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_dcmpun
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
692 ; CHECK-HARDFP-SPONLY-NEXT: cmp r0, #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
693 ; CHECK-HARDFP-SPONLY-NEXT: movne r0, #1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
694 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
695 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
696 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
697 %cmp = fcmp uno double %a, %b
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
698 %0 = zext i1 %cmp to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
699 ret i32 %0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
700 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
701
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
702 define i32 @d2iz(double %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
703 ; CHECK-SOFT-LABEL: d2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
704 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
705 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
706 ; CHECK-SOFT-NEXT: bl __aeabi_d2iz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
707 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
708 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
709 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
710 ; CHECK-SOFTFP-LABEL: d2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
711 ; CHECK-SOFTFP: vmov d16, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
712 ; CHECK-SOFTFP-NEXT: vcvt.s32.f64 s0, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
713 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
714 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
715 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
716 ; CHECK-HARDFP-DP-LABEL: d2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
717 ; CHECK-HARDFP-DP: vcvt.s32.f64 s0, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
718 ; CHECK-HARDFP-DP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
719 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
720 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
721 ; CHECK-HARDFP-SPONLY-LABEL: d2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
722 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
723 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
724 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
725 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_d2iz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
726 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
727 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
728 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
729 %conv = fptosi double %a to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
730 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
731 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
732
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
733 define i32 @d2uiz(double %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
734 ; CHECK-SOFT-LABEL: d2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
735 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
736 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
737 ; CHECK-SOFT-NEXT: bl __aeabi_d2uiz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
738 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
739 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
740 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
741 ; CHECK-SOFTFP-LABEL: d2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
742 ; CHECK-SOFTFP: vmov d16, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
743 ; CHECK-SOFTFP-NEXT: vcvt.u32.f64 s0, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
744 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
745 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
746 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
747 ; CHECK-HARDFP-DP-LABEL: d2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
748 ; CHECK-HARDFP-DP: vcvt.u32.f64 s0, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
749 ; CHECK-HARDFP-DP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
750 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
751 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
752 ; CHECK-HARDFP-SPONLY-LABEL: d2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
753 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
754 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
755 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
756 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_d2uiz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
757 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
758 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
759 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
760 %conv = fptoui double %a to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
761 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
762 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
763
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
764 define i64 @d2lz(double %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
765 ; CHECK-SOFT-LABEL: d2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
766 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
767 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
768 ; CHECK-SOFT-NEXT: bl __aeabi_d2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
769 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
770 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
771 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
772 ; CHECK-SOFTFP-LABEL: d2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
773 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
774 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
775 ; CHECK-SOFTFP-NEXT: bl __aeabi_d2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
776 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
777 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
778 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
779 ; CHECK-HARDFP-SP-LABEL: d2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
780 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
781 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
782 ; CHECK-HARDFP-SP-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
783 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_d2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
784 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
785 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
786 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
787 %conv = fptosi double %a to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
788 ret i64 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
789 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
790
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
791 define i64 @d2ulz(double %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
792 ; CHECK-SOFT-LABEL: d2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
793 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
794 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
795 ; CHECK-SOFT-NEXT: bl __aeabi_d2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
796 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
797 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
798 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
799 ; CHECK-SOFTFP-LABEL: d2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
800 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
801 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
802 ; CHECK-SOFTFP-NEXT: bl __aeabi_d2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
803 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
804 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
805 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
806 ; CHECK-HARDFP-SP-LABEL: d2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
807 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
808 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
809 ; CHECK-HARDFP-SP-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
810 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_d2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
811 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
812 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
813 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
814 %conv = fptoui double %a to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
815 ret i64 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
816 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
817
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
818 define i32 @f2iz(float %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
819 ; CHECK-SOFT-LABEL: f2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
820 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
821 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
822 ; CHECK-SOFT-NEXT: bl __aeabi_f2iz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
823 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
824 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
825 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
826 ; CHECK-SOFTFP-LABEL: f2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
827 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
828 ; CHECK-SOFTFP-NEXT: vcvt.s32.f32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
829 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
830 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
831 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
832 ; CHECK-HARDFP-SP-LABEL: f2iz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
833 ; CHECK-HARDFP-SP: vcvt.s32.f32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
834 ; CHECK-HARDFP-SP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
835 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
836 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
837 %conv = fptosi float %a to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
838 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
839 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
840
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
841 define i32 @f2uiz(float %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
842 ; CHECK-SOFT-LABEL: f2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
843 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
844 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
845 ; CHECK-SOFT-NEXT: bl __aeabi_f2uiz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
846 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
847 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
848 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
849 ; CHECK-SOFTFP-LABEL: f2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
850 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
851 ; CHECK-SOFTFP-NEXT: vcvt.u32.f32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
852 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
853 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
854 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
855 ; CHECK-HARDFP-SP-LABEL: f2uiz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
856 ; CHECK-HARDFP-SP: vcvt.u32.f32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
857 ; CHECK-HARDFP-SP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
858 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
859 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
860 %conv = fptoui float %a to i32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
861 ret i32 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
862 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
863
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
864 define i64 @f2lz(float %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
865 ; CHECK-SOFT-LABEL: f2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
866 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
867 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
868 ; CHECK-SOFT-NEXT: bl __aeabi_f2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
869 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
870 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
871 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
872 ; CHECK-SOFTFP-LABEL: f2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
873 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
874 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
875 ; CHECK-SOFTFP-NEXT: bl __aeabi_f2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
876 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
877 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
878 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
879 ; CHECK-HARDFP-SP-LABEL: f2lz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
880 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
881 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
882 ; CHECK-HARDFP-SP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
883 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_f2lz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
884 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
885 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
886 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
887 %conv = fptosi float %a to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
888 ret i64 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
889 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
890
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
891 define i64 @f2ulz(float %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
892 ; CHECK-SOFT-LABEL: f2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
893 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
894 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
895 ; CHECK-SOFT-NEXT: bl __aeabi_f2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
896 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
897 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
898 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
899 ; CHECK-SOFTFP-LABEL: f2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
900 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
901 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
902 ; CHECK-SOFTFP-NEXT: bl __aeabi_f2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
903 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
904 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
905 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
906 ; CHECK-HARDFP-SP-LABEL: f2ulz:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
907 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
908 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
909 ; CHECK-HARDFP-SP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
910 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_f2ulz
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
911 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
912 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
913 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
914 %conv = fptoui float %a to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
915 ret i64 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
916 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
917
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
918 define float @d2f(double %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
919 ; CHECK-SOFT-LABEL: d2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
920 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
921 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
922 ; CHECK-SOFT-NEXT: bl __aeabi_d2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
923 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
924 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
925 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
926 ; CHECK-SOFTFP-LABEL: d2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
927 ; CHECK-SOFTFP: vmov d16, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
928 ; CHECK-SOFTFP-NEXT: vcvt.f32.f64 s0, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
929 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
930 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
931 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
932 ; CHECK-HARDFP-DP-LABEL: d2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
933 ; CHECK-HARDFP-DP: vcvt.f32.f64 s0, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
934 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
935 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
936 ; CHECK-HARDFP-SPONLY-LABEL: d2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
937 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
938 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
939 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, r1, d0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
940 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_d2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
941 ; CHECK-HARDFP-SPONLY-NEXT: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
942 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
943 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
944 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
945 %conv = fptrunc double %a to float
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
946 ret float %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
947 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
948
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
949 define double @f2d(float %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
950 ; CHECK-SOFT-LABEL: f2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
951 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
952 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
953 ; CHECK-SOFT-NEXT: bl __aeabi_f2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
954 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
955 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
956 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
957 ; CHECK-SOFTFP-LABEL: f2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
958 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
959 ; CHECK-SOFTFP-NEXT: vcvt.f64.f32 d16, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
960 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
961 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
962 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
963 ; CHECK-HARDFP-DP-LABEL: f2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
964 ; CHECK-HARDFP-DP: vcvt.f64.f32 d0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
965 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
966 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
967 ; CHECK-HARDFP-SPONLY-LABEL: f2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
968 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
969 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
970 ; CHECK-HARDFP-SPONLY-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
971 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_f2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
972 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
973 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
974 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
975 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
976 %conv = fpext float %a to double
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
977 ret double %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
978 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
979
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
980 define double @i2d(i32 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
981 ; CHECK-SOFT-LABEL: i2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
982 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
983 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
984 ; CHECK-SOFT-NEXT: bl __aeabi_i2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
985 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
986 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
987 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
988 ; CHECK-SOFTFP-LABEL: i2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
989 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
990 ; CHECK-SOFTFP-NEXT: vcvt.f64.s32 d16, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
991 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
992 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
993 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
994 ; CHECK-HARDFP-DP-LABEL: i2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
995 ; CHECK-HARDFP-DP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
996 ; CHECK-HARDFP-DP-NEXT: vcvt.f64.s32 d0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
997 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
998 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
999 ; CHECK-HARDFP-SPONLY-LABEL: i2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1000 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1001 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1002 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_i2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1003 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1004 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1005 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1006 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1007 %conv = sitofp i32 %a to double
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1008 ret double %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1009 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1010
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1011 define double @ui2d(i32 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1012 ; CHECK-SOFT-LABEL: ui2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1013 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1014 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1015 ; CHECK-SOFT-NEXT: bl __aeabi_ui2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1016 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1017 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1018 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1019 ; CHECK-SOFTFP-LABEL: ui2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1020 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1021 ; CHECK-SOFTFP-NEXT: vcvt.f64.u32 d16, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1022 ; CHECK-SOFTFP-NEXT: vmov r0, r1, d16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1023 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1024 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1025 ; CHECK-HARDFP-DP-LABEL: ui2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1026 ; CHECK-HARDFP-DP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1027 ; CHECK-HARDFP-DP-NEXT: vcvt.f64.u32 d0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1028 ; CHECK-HARDFP-DP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1029 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1030 ; CHECK-HARDFP-SPONLY-LABEL: ui2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1031 ; CHECK-HARDFP-SPONLY: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1032 ; CHECK-HARDFP-SPONLY-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1033 ; CHECK-HARDFP-SPONLY-NEXT: bl __aeabi_ui2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1034 ; CHECK-HARDFP-SPONLY-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1035 ; CHECK-HARDFP-SPONLY-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1036 ; CHECK-HARDFP-SPONLY-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1037 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1038 %conv = uitofp i32 %a to double
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1039 ret double %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1040 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1041
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1042 define double @l2d(i64 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1043 ; CHECK-SOFT-LABEL: l2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1044 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1045 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1046 ; CHECK-SOFT-NEXT: bl __aeabi_l2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1047 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1048 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1049 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1050 ; CHECK-SOFTFP-LABEL: l2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1051 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1052 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1053 ; CHECK-SOFTFP-NEXT: bl __aeabi_l2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1054 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1055 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1056 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1057 ; CHECK-HARDFP-SP-LABEL: l2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1058 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1059 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1060 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_l2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1061 ; CHECK-HARDFP-SP-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1062 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1063 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1064 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1065 %conv = sitofp i64 %a to double
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1066 ret double %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1067 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1068
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1069 define double @ul2d(i64 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1070 ; CHECK-SOFT-LABEL: ul2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1071 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1072 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1073 ; CHECK-SOFT-NEXT: bl __aeabi_ul2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1074 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1075 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1076 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1077 ; CHECK-SOFTFP-LABEL: ul2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1078 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1079 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1080 ; CHECK-SOFTFP-NEXT: bl __aeabi_ul2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1081 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1082 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1083 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1084 ; CHECK-HARDFP-SP-LABEL: ul2d:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1085 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1086 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1087 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_ul2d
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1088 ; CHECK-HARDFP-SP-NEXT: vmov d0, r0, r1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1089 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1090 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1091 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1092 %conv = uitofp i64 %a to double
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1093 ret double %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1094 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1095
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1096 define float @i2f(i32 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1097 ; CHECK-SOFT-LABEL: i2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1098 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1099 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1100 ; CHECK-SOFT-NEXT: bl __aeabi_i2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1101 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1102 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1103 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1104 ; CHECK-SOFTFP-LABEL: i2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1105 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1106 ; CHECK-SOFTFP-NEXT: vcvt.f32.s32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1107 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1108 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1109 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1110 ; CHECK-HARDFP-SP-LABEL: i2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1111 ; CHECK-HARDFP-SP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1112 ; CHECK-HARDFP-SP-NEXT: vcvt.f32.s32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1113 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1114 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1115 %conv = sitofp i32 %a to float
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1116 ret float %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1117 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1118
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1119 define float @ui2f(i32 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1120 ; CHECK-SOFT-LABEL: ui2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1121 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1122 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1123 ; CHECK-SOFT-NEXT: bl __aeabi_ui2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1124 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1125 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1126 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1127 ; CHECK-SOFTFP-LABEL: ui2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1128 ; CHECK-SOFTFP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1129 ; CHECK-SOFTFP-NEXT: vcvt.f32.u32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1130 ; CHECK-SOFTFP-NEXT: vmov r0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1131 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1132 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1133 ; CHECK-HARDFP-SP-LABEL: ui2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1134 ; CHECK-HARDFP-SP: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1135 ; CHECK-HARDFP-SP-NEXT: vcvt.f32.u32 s0, s0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1136 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1137 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1138 %conv = uitofp i32 %a to float
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1139 ret float %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1140 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1141
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1142 define float @l2f(i64 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1143 ; CHECK-SOFT-LABEL: l2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1144 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1145 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1146 ; CHECK-SOFT-NEXT: bl __aeabi_l2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1147 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1148 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1149 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1150 ; CHECK-SOFTFP-LABEL: l2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1151 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1152 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1153 ; CHECK-SOFTFP-NEXT: bl __aeabi_l2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1154 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1155 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1156 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1157 ; CHECK-HARDFP-SP-LABEL: l2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1158 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1159 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1160 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_l2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1161 ; CHECK-HARDFP-SP-NEXT: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1162 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1163 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1164 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1165 %conv = sitofp i64 %a to float
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1166 ret float %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1167 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1168
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1169 define float @ul2f(i64 %a) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1170 ; CHECK-SOFT-LABEL: ul2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1171 ; CHECK-SOFT: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1172 ; CHECK-SOFT-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1173 ; CHECK-SOFT-NEXT: bl __aeabi_ul2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1174 ; CHECK-SOFT-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1175 ; CHECK-SOFT-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1176 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1177 ; CHECK-SOFTFP-LABEL: ul2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1178 ; CHECK-SOFTFP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1179 ; CHECK-SOFTFP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1180 ; CHECK-SOFTFP-NEXT: bl __aeabi_ul2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1181 ; CHECK-SOFTFP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1182 ; CHECK-SOFTFP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1183 ;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1184 ; CHECK-HARDFP-SP-LABEL: ul2f:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1185 ; CHECK-HARDFP-SP: .save {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1186 ; CHECK-HARDFP-SP-NEXT: push {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1187 ; CHECK-HARDFP-SP-NEXT: bl __aeabi_ul2f
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1188 ; CHECK-HARDFP-SP-NEXT: vmov s0, r0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1189 ; CHECK-HARDFP-SP-NEXT: pop {r11, lr}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1190 ; CHECK-HARDFP-SP-NEXT: mov pc, lr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1191 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1192 %conv = uitofp i64 %a to float
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1193 ret float %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1194 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1195 attributes #0 = { nounwind }