| OLD | NEW |
| 1 ; Tests validating the vfp calling convention for ARM32. | 1 ; Tests validating the vfp calling convention for ARM32. |
| 2 ; | 2 ; |
| 3 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 3 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 4 ; RUN: --command %p2i --filetype=asm --assemble \ | 4 ; RUN: --command %p2i --filetype=asm --assemble \ |
| 5 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ | 5 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
| 6 ; RUN: -allow-externally-defined-symbols \ | 6 ; RUN: -allow-externally-defined-symbols \ |
| 7 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 7 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 8 ; RUN: --command FileCheck %s | 8 ; RUN: --command FileCheck %s |
| 9 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 9 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 10 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ | 10 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 float %p5, float %p6, float %p7, float %p8, float %p9, | 55 float %p5, float %p6, float %p7, float %p8, float %p9, |
| 56 float %p10, float %p11, float %p12, float %p13, | 56 float %p10, float %p11, float %p12, float %p13, |
| 57 float %p14, float %p15, float %p16) | 57 float %p14, float %p15, float %p16) |
| 58 declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4, | 58 declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4, |
| 59 float %p5, float %p6, float %p7, float %p8, float %p9, | 59 float %p5, float %p6, float %p7, float %p8, float %p9, |
| 60 float %p10, float %p11, float %p12, float %p13, | 60 float %p10, float %p11, float %p12, float %p13, |
| 61 float %p14, float %p15, float %p16, float %p17) | 61 float %p14, float %p15, float %p16, float %p17) |
| 62 define internal void @floatHarness() nounwind { | 62 define internal void @floatHarness() nounwind { |
| 63 ; CHECK-LABEL: floatHarness | 63 ; CHECK-LABEL: floatHarness |
| 64 call void @float1(float 1.0) | 64 call void @float1(float 1.0) |
| 65 ; CHECK-DAG: vldr s0 | 65 ; CHECK-DAG: vmov.f32 s0 |
| 66 ; CHECK: bl {{.*}} float1 | 66 ; CHECK: bl {{.*}} float1 |
| 67 call void @float2(float 1.0, float 2.0) | 67 call void @float2(float 1.0, float 2.0) |
| 68 ; CHECK-DAG: vldr s0 | 68 ; CHECK-DAG: vmov.f32 s0 |
| 69 ; CHECK-DAG: vldr s1 | 69 ; CHECK-DAG: vmov.f32 s1 |
| 70 ; CHECK: bl {{.*}} float2 | 70 ; CHECK: bl {{.*}} float2 |
| 71 call void @float3(float 1.0, float 2.0, float 3.0) | 71 call void @float3(float 1.0, float 2.0, float 3.0) |
| 72 ; CHECK-DAG: vldr s0 | 72 ; CHECK-DAG: vmov.f32 s0 |
| 73 ; CHECK-DAG: vldr s1 | 73 ; CHECK-DAG: vmov.f32 s1 |
| 74 ; CHECK-DAG: vldr s2 | 74 ; CHECK-DAG: vmov.f32 s2 |
| 75 ; CHECK: bl {{.*}} float3 | 75 ; CHECK: bl {{.*}} float3 |
| 76 call void @float4(float 1.0, float 2.0, float 3.0, float 4.0) | 76 call void @float4(float 1.0, float 2.0, float 3.0, float 4.0) |
| 77 ; CHECK-DAG: vldr s0 | 77 ; CHECK-DAG: vmov.f32 s0 |
| 78 ; CHECK-DAG: vldr s1 | 78 ; CHECK-DAG: vmov.f32 s1 |
| 79 ; CHECK-DAG: vldr s2 | 79 ; CHECK-DAG: vmov.f32 s2 |
| 80 ; CHECK-DAG: vldr s3 | 80 ; CHECK-DAG: vmov.f32 s3 |
| 81 ; CHECK: bl {{.*}} float4 | 81 ; CHECK: bl {{.*}} float4 |
| 82 call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0) | 82 call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0) |
| 83 ; CHECK-DAG: vldr s0 | 83 ; CHECK-DAG: vmov.f32 s0 |
| 84 ; CHECK-DAG: vldr s1 | 84 ; CHECK-DAG: vmov.f32 s1 |
| 85 ; CHECK-DAG: vldr s2 | 85 ; CHECK-DAG: vmov.f32 s2 |
| 86 ; CHECK-DAG: vldr s3 | 86 ; CHECK-DAG: vmov.f32 s3 |
| 87 ; CHECK-DAG: vldr s4 | 87 ; CHECK-DAG: vmov.f32 s4 |
| 88 ; CHECK: bl {{.*}} float5 | 88 ; CHECK: bl {{.*}} float5 |
| 89 call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 89 call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 90 float 6.0) | 90 float 6.0) |
| 91 ; CHECK-DAG: vldr s0 | 91 ; CHECK-DAG: vmov.f32 s0 |
| 92 ; CHECK-DAG: vldr s1 | 92 ; CHECK-DAG: vmov.f32 s1 |
| 93 ; CHECK-DAG: vldr s2 | 93 ; CHECK-DAG: vmov.f32 s2 |
| 94 ; CHECK-DAG: vldr s3 | 94 ; CHECK-DAG: vmov.f32 s3 |
| 95 ; CHECK-DAG: vldr s4 | 95 ; CHECK-DAG: vmov.f32 s4 |
| 96 ; CHECK-DAG: vldr s5 | 96 ; CHECK-DAG: vmov.f32 s5 |
| 97 ; CHECK: bl {{.*}} float6 | 97 ; CHECK: bl {{.*}} float6 |
| 98 call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 98 call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 99 float 6.0, float 7.0) | 99 float 6.0, float 7.0) |
| 100 ; CHECK-DAG: vldr s0 | 100 ; CHECK-DAG: vmov.f32 s0 |
| 101 ; CHECK-DAG: vldr s1 | 101 ; CHECK-DAG: vmov.f32 s1 |
| 102 ; CHECK-DAG: vldr s2 | 102 ; CHECK-DAG: vmov.f32 s2 |
| 103 ; CHECK-DAG: vldr s3 | 103 ; CHECK-DAG: vmov.f32 s3 |
| 104 ; CHECK-DAG: vldr s4 | 104 ; CHECK-DAG: vmov.f32 s4 |
| 105 ; CHECK-DAG: vldr s5 | 105 ; CHECK-DAG: vmov.f32 s5 |
| 106 ; CHECK-DAG: vldr s6 | 106 ; CHECK-DAG: vmov.f32 s6 |
| 107 ; CHECK: bl {{.*}} float7 | 107 ; CHECK: bl {{.*}} float7 |
| 108 call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 108 call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 109 float 6.0, float 7.0, float 8.0) | 109 float 6.0, float 7.0, float 8.0) |
| 110 ; CHECK-DAG: vldr s0 | 110 ; CHECK-DAG: vmov.f32 s0 |
| 111 ; CHECK-DAG: vldr s1 | 111 ; CHECK-DAG: vmov.f32 s1 |
| 112 ; CHECK-DAG: vldr s2 | 112 ; CHECK-DAG: vmov.f32 s2 |
| 113 ; CHECK-DAG: vldr s3 | 113 ; CHECK-DAG: vmov.f32 s3 |
| 114 ; CHECK-DAG: vldr s4 | 114 ; CHECK-DAG: vmov.f32 s4 |
| 115 ; CHECK-DAG: vldr s5 | 115 ; CHECK-DAG: vmov.f32 s5 |
| 116 ; CHECK-DAG: vldr s6 | 116 ; CHECK-DAG: vmov.f32 s6 |
| 117 ; CHECK-DAG: vldr s7 | 117 ; CHECK-DAG: vmov.f32 s7 |
| 118 ; CHECK: bl {{.*}} float8 | 118 ; CHECK: bl {{.*}} float8 |
| 119 call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 119 call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 120 float 6.0, float 7.0, float 8.0, float 9.0) | 120 float 6.0, float 7.0, float 8.0, float 9.0) |
| 121 ; CHECK-DAG: vldr s0 | 121 ; CHECK-DAG: vmov.f32 s0 |
| 122 ; CHECK-DAG: vldr s1 | 122 ; CHECK-DAG: vmov.f32 s1 |
| 123 ; CHECK-DAG: vldr s2 | 123 ; CHECK-DAG: vmov.f32 s2 |
| 124 ; CHECK-DAG: vldr s3 | 124 ; CHECK-DAG: vmov.f32 s3 |
| 125 ; CHECK-DAG: vldr s4 | 125 ; CHECK-DAG: vmov.f32 s4 |
| 126 ; CHECK-DAG: vldr s5 | 126 ; CHECK-DAG: vmov.f32 s5 |
| 127 ; CHECK-DAG: vldr s6 | 127 ; CHECK-DAG: vmov.f32 s6 |
| 128 ; CHECK-DAG: vldr s7 | 128 ; CHECK-DAG: vmov.f32 s7 |
| 129 ; CHECK-DAG: vldr s8 | 129 ; CHECK-DAG: vmov.f32 s8 |
| 130 ; CHECK: bl {{.*}} float9 | 130 ; CHECK: bl {{.*}} float9 |
| 131 call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 131 call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 132 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0) | 132 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0) |
| 133 ; CHECK-DAG: vldr s0 | 133 ; CHECK-DAG: vmov.f32 s0 |
| 134 ; CHECK-DAG: vldr s1 | 134 ; CHECK-DAG: vmov.f32 s1 |
| 135 ; CHECK-DAG: vldr s2 | 135 ; CHECK-DAG: vmov.f32 s2 |
| 136 ; CHECK-DAG: vldr s3 | 136 ; CHECK-DAG: vmov.f32 s3 |
| 137 ; CHECK-DAG: vldr s4 | 137 ; CHECK-DAG: vmov.f32 s4 |
| 138 ; CHECK-DAG: vldr s5 | 138 ; CHECK-DAG: vmov.f32 s5 |
| 139 ; CHECK-DAG: vldr s6 | 139 ; CHECK-DAG: vmov.f32 s6 |
| 140 ; CHECK-DAG: vldr s7 | 140 ; CHECK-DAG: vmov.f32 s7 |
| 141 ; CHECK-DAG: vldr s8 | 141 ; CHECK-DAG: vmov.f32 s8 |
| 142 ; CHECK-DAG: vldr s9 | 142 ; CHECK-DAG: vmov.f32 s9 |
| 143 ; CHECK: bl {{.*}} float10 | 143 ; CHECK: bl {{.*}} float10 |
| 144 call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 144 call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 145 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 145 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 146 float 11.0) | 146 float 11.0) |
| 147 ; CHECK-DAG: vldr s0 | 147 ; CHECK-DAG: vmov.f32 s0 |
| 148 ; CHECK-DAG: vldr s1 | 148 ; CHECK-DAG: vmov.f32 s1 |
| 149 ; CHECK-DAG: vldr s2 | 149 ; CHECK-DAG: vmov.f32 s2 |
| 150 ; CHECK-DAG: vldr s3 | 150 ; CHECK-DAG: vmov.f32 s3 |
| 151 ; CHECK-DAG: vldr s4 | 151 ; CHECK-DAG: vmov.f32 s4 |
| 152 ; CHECK-DAG: vldr s5 | 152 ; CHECK-DAG: vmov.f32 s5 |
| 153 ; CHECK-DAG: vldr s6 | 153 ; CHECK-DAG: vmov.f32 s6 |
| 154 ; CHECK-DAG: vldr s7 | 154 ; CHECK-DAG: vmov.f32 s7 |
| 155 ; CHECK-DAG: vldr s8 | 155 ; CHECK-DAG: vmov.f32 s8 |
| 156 ; CHECK-DAG: vldr s9 | 156 ; CHECK-DAG: vmov.f32 s9 |
| 157 ; CHECK-DAG: vldr s10 | 157 ; CHECK-DAG: vmov.f32 s10 |
| 158 ; CHECK: bl {{.*}} float11 | 158 ; CHECK: bl {{.*}} float11 |
| 159 call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 159 call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 160 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 160 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 161 float 11.0, float 12.0) | 161 float 11.0, float 12.0) |
| 162 ; CHECK-DAG: vldr s0 | 162 ; CHECK-DAG: vmov.f32 s0 |
| 163 ; CHECK-DAG: vldr s1 | 163 ; CHECK-DAG: vmov.f32 s1 |
| 164 ; CHECK-DAG: vldr s2 | 164 ; CHECK-DAG: vmov.f32 s2 |
| 165 ; CHECK-DAG: vldr s3 | 165 ; CHECK-DAG: vmov.f32 s3 |
| 166 ; CHECK-DAG: vldr s4 | 166 ; CHECK-DAG: vmov.f32 s4 |
| 167 ; CHECK-DAG: vldr s5 | 167 ; CHECK-DAG: vmov.f32 s5 |
| 168 ; CHECK-DAG: vldr s6 | 168 ; CHECK-DAG: vmov.f32 s6 |
| 169 ; CHECK-DAG: vldr s7 | 169 ; CHECK-DAG: vmov.f32 s7 |
| 170 ; CHECK-DAG: vldr s8 | 170 ; CHECK-DAG: vmov.f32 s8 |
| 171 ; CHECK-DAG: vldr s9 | 171 ; CHECK-DAG: vmov.f32 s9 |
| 172 ; CHECK-DAG: vldr s10 | 172 ; CHECK-DAG: vmov.f32 s10 |
| 173 ; CHECK-DAG: vldr s11 | 173 ; CHECK-DAG: vmov.f32 s11 |
| 174 ; CHECK: bl {{.*}} float12 | 174 ; CHECK: bl {{.*}} float12 |
| 175 call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 175 call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 176 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 176 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 177 float 11.0, float 12.0, float 13.0) | 177 float 11.0, float 12.0, float 13.0) |
| 178 ; CHECK-DAG: vldr s0 | 178 ; CHECK-DAG: vmov.f32 s0 |
| 179 ; CHECK-DAG: vldr s1 | 179 ; CHECK-DAG: vmov.f32 s1 |
| 180 ; CHECK-DAG: vldr s2 | 180 ; CHECK-DAG: vmov.f32 s2 |
| 181 ; CHECK-DAG: vldr s3 | 181 ; CHECK-DAG: vmov.f32 s3 |
| 182 ; CHECK-DAG: vldr s4 | 182 ; CHECK-DAG: vmov.f32 s4 |
| 183 ; CHECK-DAG: vldr s5 | 183 ; CHECK-DAG: vmov.f32 s5 |
| 184 ; CHECK-DAG: vldr s6 | 184 ; CHECK-DAG: vmov.f32 s6 |
| 185 ; CHECK-DAG: vldr s7 | 185 ; CHECK-DAG: vmov.f32 s7 |
| 186 ; CHECK-DAG: vldr s8 | 186 ; CHECK-DAG: vmov.f32 s8 |
| 187 ; CHECK-DAG: vldr s9 | 187 ; CHECK-DAG: vmov.f32 s9 |
| 188 ; CHECK-DAG: vldr s10 | 188 ; CHECK-DAG: vmov.f32 s10 |
| 189 ; CHECK-DAG: vldr s11 | 189 ; CHECK-DAG: vmov.f32 s11 |
| 190 ; CHECK-DAG: vldr s12 | 190 ; CHECK-DAG: vmov.f32 s12 |
| 191 ; CHECK: bl {{.*}} float13 | 191 ; CHECK: bl {{.*}} float13 |
| 192 call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 192 call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 193 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 193 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 194 float 11.0, float 12.0, float 13.0, float 14.0) | 194 float 11.0, float 12.0, float 13.0, float 14.0) |
| 195 ; CHECK-DAG: vldr s0 | 195 ; CHECK-DAG: vmov.f32 s0 |
| 196 ; CHECK-DAG: vldr s1 | 196 ; CHECK-DAG: vmov.f32 s1 |
| 197 ; CHECK-DAG: vldr s2 | 197 ; CHECK-DAG: vmov.f32 s2 |
| 198 ; CHECK-DAG: vldr s3 | 198 ; CHECK-DAG: vmov.f32 s3 |
| 199 ; CHECK-DAG: vldr s4 | 199 ; CHECK-DAG: vmov.f32 s4 |
| 200 ; CHECK-DAG: vldr s5 | 200 ; CHECK-DAG: vmov.f32 s5 |
| 201 ; CHECK-DAG: vldr s6 | 201 ; CHECK-DAG: vmov.f32 s6 |
| 202 ; CHECK-DAG: vldr s7 | 202 ; CHECK-DAG: vmov.f32 s7 |
| 203 ; CHECK-DAG: vldr s8 | 203 ; CHECK-DAG: vmov.f32 s8 |
| 204 ; CHECK-DAG: vldr s9 | 204 ; CHECK-DAG: vmov.f32 s9 |
| 205 ; CHECK-DAG: vldr s10 | 205 ; CHECK-DAG: vmov.f32 s10 |
| 206 ; CHECK-DAG: vldr s11 | 206 ; CHECK-DAG: vmov.f32 s11 |
| 207 ; CHECK-DAG: vldr s12 | 207 ; CHECK-DAG: vmov.f32 s12 |
| 208 ; CHECK-DAG: vldr s13 | 208 ; CHECK-DAG: vmov.f32 s13 |
| 209 ; CHECK: bl {{.*}} float14 | 209 ; CHECK: bl {{.*}} float14 |
| 210 call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 210 call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 211 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 211 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 212 float 11.0, float 12.0, float 13.0, float 14.0, | 212 float 11.0, float 12.0, float 13.0, float 14.0, |
| 213 float 15.0) | 213 float 15.0) |
| 214 ; CHECK-DAG: vldr s0 | 214 ; CHECK-DAG: vmov.f32 s0 |
| 215 ; CHECK-DAG: vldr s1 | 215 ; CHECK-DAG: vmov.f32 s1 |
| 216 ; CHECK-DAG: vldr s2 | 216 ; CHECK-DAG: vmov.f32 s2 |
| 217 ; CHECK-DAG: vldr s3 | 217 ; CHECK-DAG: vmov.f32 s3 |
| 218 ; CHECK-DAG: vldr s4 | 218 ; CHECK-DAG: vmov.f32 s4 |
| 219 ; CHECK-DAG: vldr s5 | 219 ; CHECK-DAG: vmov.f32 s5 |
| 220 ; CHECK-DAG: vldr s6 | 220 ; CHECK-DAG: vmov.f32 s6 |
| 221 ; CHECK-DAG: vldr s7 | 221 ; CHECK-DAG: vmov.f32 s7 |
| 222 ; CHECK-DAG: vldr s8 | 222 ; CHECK-DAG: vmov.f32 s8 |
| 223 ; CHECK-DAG: vldr s9 | 223 ; CHECK-DAG: vmov.f32 s9 |
| 224 ; CHECK-DAG: vldr s10 | 224 ; CHECK-DAG: vmov.f32 s10 |
| 225 ; CHECK-DAG: vldr s11 | 225 ; CHECK-DAG: vmov.f32 s11 |
| 226 ; CHECK-DAG: vldr s12 | 226 ; CHECK-DAG: vmov.f32 s12 |
| 227 ; CHECK-DAG: vldr s13 | 227 ; CHECK-DAG: vmov.f32 s13 |
| 228 ; CHECK-DAG: vldr s14 | 228 ; CHECK-DAG: vmov.f32 s14 |
| 229 ; CHECK: bl {{.*}} float15 | 229 ; CHECK: bl {{.*}} float15 |
| 230 call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 230 call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 231 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 231 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 232 float 11.0, float 12.0, float 13.0, float 14.0, | 232 float 11.0, float 12.0, float 13.0, float 14.0, |
| 233 float 15.0, float 16.0) | 233 float 15.0, float 16.0) |
| 234 ; CHECK-DAG: vldr s0 | 234 ; CHECK-DAG: vmov.f32 s0 |
| 235 ; CHECK-DAG: vldr s1 | 235 ; CHECK-DAG: vmov.f32 s1 |
| 236 ; CHECK-DAG: vldr s2 | 236 ; CHECK-DAG: vmov.f32 s2 |
| 237 ; CHECK-DAG: vldr s3 | 237 ; CHECK-DAG: vmov.f32 s3 |
| 238 ; CHECK-DAG: vldr s4 | 238 ; CHECK-DAG: vmov.f32 s4 |
| 239 ; CHECK-DAG: vldr s5 | 239 ; CHECK-DAG: vmov.f32 s5 |
| 240 ; CHECK-DAG: vldr s6 | 240 ; CHECK-DAG: vmov.f32 s6 |
| 241 ; CHECK-DAG: vldr s7 | 241 ; CHECK-DAG: vmov.f32 s7 |
| 242 ; CHECK-DAG: vldr s8 | 242 ; CHECK-DAG: vmov.f32 s8 |
| 243 ; CHECK-DAG: vldr s9 | 243 ; CHECK-DAG: vmov.f32 s9 |
| 244 ; CHECK-DAG: vldr s10 | 244 ; CHECK-DAG: vmov.f32 s10 |
| 245 ; CHECK-DAG: vldr s11 | 245 ; CHECK-DAG: vmov.f32 s11 |
| 246 ; CHECK-DAG: vldr s12 | 246 ; CHECK-DAG: vmov.f32 s12 |
| 247 ; CHECK-DAG: vldr s13 | 247 ; CHECK-DAG: vmov.f32 s13 |
| 248 ; CHECK-DAG: vldr s14 | 248 ; CHECK-DAG: vmov.f32 s14 |
| 249 ; CHECK-DAG: vldr s15 | 249 ; CHECK-DAG: vmov.f32 s15 |
| 250 ; CHECK: bl {{.*}} float16 | 250 ; CHECK: bl {{.*}} float16 |
| 251 call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 251 call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 252 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 252 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 253 float 11.0, float 12.0, float 13.0, float 14.0, | 253 float 11.0, float 12.0, float 13.0, float 14.0, |
| 254 float 15.0, float 16.0, float 17.0) | 254 float 15.0, float 16.0, float 17.0) |
| 255 ; CHECK-DAG: vldr s0 | 255 ; CHECK-DAG: vmov.f32 s0 |
| 256 ; CHECK-DAG: vldr s1 | 256 ; CHECK-DAG: vmov.f32 s1 |
| 257 ; CHECK-DAG: vldr s2 | 257 ; CHECK-DAG: vmov.f32 s2 |
| 258 ; CHECK-DAG: vldr s3 | 258 ; CHECK-DAG: vmov.f32 s3 |
| 259 ; CHECK-DAG: vldr s4 | 259 ; CHECK-DAG: vmov.f32 s4 |
| 260 ; CHECK-DAG: vldr s5 | 260 ; CHECK-DAG: vmov.f32 s5 |
| 261 ; CHECK-DAG: vldr s6 | 261 ; CHECK-DAG: vmov.f32 s6 |
| 262 ; CHECK-DAG: vldr s7 | 262 ; CHECK-DAG: vmov.f32 s7 |
| 263 ; CHECK-DAG: vldr s8 | 263 ; CHECK-DAG: vmov.f32 s8 |
| 264 ; CHECK-DAG: vldr s9 | 264 ; CHECK-DAG: vmov.f32 s9 |
| 265 ; CHECK-DAG: vldr s10 | 265 ; CHECK-DAG: vmov.f32 s10 |
| 266 ; CHECK-DAG: vldr s11 | 266 ; CHECK-DAG: vmov.f32 s11 |
| 267 ; CHECK-DAG: vldr s12 | 267 ; CHECK-DAG: vmov.f32 s12 |
| 268 ; CHECK-DAG: vldr s13 | 268 ; CHECK-DAG: vmov.f32 s13 |
| 269 ; CHECK-DAG: vldr s14 | 269 ; CHECK-DAG: vmov.f32 s14 |
| 270 ; CHECK-DAG: vldr s15 | 270 ; CHECK-DAG: vmov.f32 s15 |
| 271 ; CHECK-DAG: vstr s{{.*}}, [sp] | 271 ; CHECK-DAG: vstr s{{.*}}, [sp] |
| 272 ; CHECK: bl {{.*}} float17 | 272 ; CHECK: bl {{.*}} float17 |
| 273 call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 273 call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
| 274 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 274 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
| 275 float 11.0, float 12.0, float 13.0, float 14.0, | 275 float 11.0, float 12.0, float 13.0, float 14.0, |
| 276 float 15.0, float 16.0, float 17.0, float 18.0) | 276 float 15.0, float 16.0, float 17.0, float 18.0) |
| 277 ; CHECK-DAG: vldr s0 | 277 ; CHECK-DAG: vmov.f32 s0 |
| 278 ; CHECK-DAG: vldr s1 | 278 ; CHECK-DAG: vmov.f32 s1 |
| 279 ; CHECK-DAG: vldr s2 | 279 ; CHECK-DAG: vmov.f32 s2 |
| 280 ; CHECK-DAG: vldr s3 | 280 ; CHECK-DAG: vmov.f32 s3 |
| 281 ; CHECK-DAG: vldr s4 | 281 ; CHECK-DAG: vmov.f32 s4 |
| 282 ; CHECK-DAG: vldr s5 | 282 ; CHECK-DAG: vmov.f32 s5 |
| 283 ; CHECK-DAG: vldr s6 | 283 ; CHECK-DAG: vmov.f32 s6 |
| 284 ; CHECK-DAG: vldr s7 | 284 ; CHECK-DAG: vmov.f32 s7 |
| 285 ; CHECK-DAG: vldr s8 | 285 ; CHECK-DAG: vmov.f32 s8 |
| 286 ; CHECK-DAG: vldr s9 | 286 ; CHECK-DAG: vmov.f32 s9 |
| 287 ; CHECK-DAG: vldr s10 | 287 ; CHECK-DAG: vmov.f32 s10 |
| 288 ; CHECK-DAG: vldr s11 | 288 ; CHECK-DAG: vmov.f32 s11 |
| 289 ; CHECK-DAG: vldr s12 | 289 ; CHECK-DAG: vmov.f32 s12 |
| 290 ; CHECK-DAG: vldr s13 | 290 ; CHECK-DAG: vmov.f32 s13 |
| 291 ; CHECK-DAG: vldr s14 | 291 ; CHECK-DAG: vmov.f32 s14 |
| 292 ; CHECK-DAG: vldr s15 | 292 ; CHECK-DAG: vmov.f32 s15 |
| 293 ; CHECK-DAG: vstr s{{.*}}, [sp] | 293 ; CHECK-DAG: vstr s{{.*}}, [sp] |
| 294 ; CHECK-DAG: vstr s{{.*}}, [sp, #4] | 294 ; CHECK-DAG: vstr s{{.*}}, [sp, #4] |
| 295 ; CHECK: bl {{.*}} float18 | 295 ; CHECK: bl {{.*}} float18 |
| 296 ret void | 296 ret void |
| 297 } | 297 } |
| 298 | 298 |
| 299 declare void @double1(double %p0) | 299 declare void @double1(double %p0) |
| 300 declare void @double2(double %p0, double %p1) | 300 declare void @double2(double %p0, double %p1) |
| 301 declare void @double3(double %p0, double %p1, double %p2) | 301 declare void @double3(double %p0, double %p1, double %p2) |
| 302 declare void @double4(double %p0, double %p1, double %p2, double %p3) | 302 declare void @double4(double %p0, double %p1, double %p2, double %p3) |
| 303 declare void @double5(double %p0, double %p1, double %p2, double %p3, | 303 declare void @double5(double %p0, double %p1, double %p2, double %p3, |
| 304 double %p4) | 304 double %p4) |
| 305 declare void @double6(double %p0, double %p1, double %p2, double %p3, | 305 declare void @double6(double %p0, double %p1, double %p2, double %p3, |
| 306 double %p4, double %p5) | 306 double %p4, double %p5) |
| 307 declare void @double7(double %p0, double %p1, double %p2, double %p3, | 307 declare void @double7(double %p0, double %p1, double %p2, double %p3, |
| 308 double %p4, double %p5, double %p6) | 308 double %p4, double %p5, double %p6) |
| 309 declare void @double8(double %p0, double %p1, double %p2, double %p3, | 309 declare void @double8(double %p0, double %p1, double %p2, double %p3, |
| 310 double %p4, double %p5, double %p6, double %p7) | 310 double %p4, double %p5, double %p6, double %p7) |
| 311 declare void @double9(double %p0, double %p1, double %p2, double %p3, | 311 declare void @double9(double %p0, double %p1, double %p2, double %p3, |
| 312 double %p4, double %p5, double %p6, double %p7, | 312 double %p4, double %p5, double %p6, double %p7, |
| 313 double %p8) | 313 double %p8) |
| 314 declare void @double10(double %p0, double %p1, double %p2, double %p3, | 314 declare void @double10(double %p0, double %p1, double %p2, double %p3, |
| 315 double %p4, double %p5, double %p6, double %p7, | 315 double %p4, double %p5, double %p6, double %p7, |
| 316 double %p8, double %p9) | 316 double %p8, double %p9) |
| 317 define internal void @doubleHarness() nounwind { | 317 define internal void @doubleHarness() nounwind { |
| 318 ; CHECK-LABEL: doubleHarness | 318 ; CHECK-LABEL: doubleHarness |
| 319 call void @double1(double 1.0) | 319 call void @double1(double 1.0) |
| 320 ; CHECK-DAG: vldr d0 | 320 ; CHECK-DAG: vmov.f64 d0 |
| 321 ; CHECK: bl {{.*}} double1 | 321 ; CHECK: bl {{.*}} double1 |
| 322 call void @double2(double 1.0, double 2.0) | 322 call void @double2(double 1.0, double 2.0) |
| 323 ; CHECK-DAG: vldr d0 | 323 ; CHECK-DAG: vmov.f64 d0 |
| 324 ; CHECK-DAG: vldr d1 | 324 ; CHECK-DAG: vmov.f64 d1 |
| 325 ; CHECK: bl {{.*}} double2 | 325 ; CHECK: bl {{.*}} double2 |
| 326 call void @double3(double 1.0, double 2.0, double 3.0) | 326 call void @double3(double 1.0, double 2.0, double 3.0) |
| 327 ; CHECK-DAG: vldr d0 | 327 ; CHECK-DAG: vmov.f64 d0 |
| 328 ; CHECK-DAG: vldr d1 | 328 ; CHECK-DAG: vmov.f64 d1 |
| 329 ; CHECK-DAG: vldr d2 | 329 ; CHECK-DAG: vmov.f64 d2 |
| 330 ; CHECK: bl {{.*}} double3 | 330 ; CHECK: bl {{.*}} double3 |
| 331 call void @double4(double 1.0, double 2.0, double 3.0, double 4.0) | 331 call void @double4(double 1.0, double 2.0, double 3.0, double 4.0) |
| 332 ; CHECK-DAG: vldr d0 | 332 ; CHECK-DAG: vmov.f64 d0 |
| 333 ; CHECK-DAG: vldr d1 | 333 ; CHECK-DAG: vmov.f64 d1 |
| 334 ; CHECK-DAG: vldr d2 | 334 ; CHECK-DAG: vmov.f64 d2 |
| 335 ; CHECK-DAG: vldr d3 | 335 ; CHECK-DAG: vmov.f64 d3 |
| 336 ; CHECK: bl {{.*}} double4 | 336 ; CHECK: bl {{.*}} double4 |
| 337 call void @double5(double 1.0, double 2.0, double 3.0, double 4.0, | 337 call void @double5(double 1.0, double 2.0, double 3.0, double 4.0, |
| 338 double 5.0) | 338 double 5.0) |
| 339 ; CHECK-DAG: vldr d0 | 339 ; CHECK-DAG: vmov.f64 d0 |
| 340 ; CHECK-DAG: vldr d1 | 340 ; CHECK-DAG: vmov.f64 d1 |
| 341 ; CHECK-DAG: vldr d2 | 341 ; CHECK-DAG: vmov.f64 d2 |
| 342 ; CHECK-DAG: vldr d3 | 342 ; CHECK-DAG: vmov.f64 d3 |
| 343 ; CHECK-DAG: vldr d4 | 343 ; CHECK-DAG: vmov.f64 d4 |
| 344 ; CHECK: bl {{.*}} double5 | 344 ; CHECK: bl {{.*}} double5 |
| 345 call void @double6(double 1.0, double 2.0, double 3.0, double 4.0, | 345 call void @double6(double 1.0, double 2.0, double 3.0, double 4.0, |
| 346 double 5.0, double 6.0) | 346 double 5.0, double 6.0) |
| 347 ; CHECK-DAG: vldr d0 | 347 ; CHECK-DAG: vmov.f64 d0 |
| 348 ; CHECK-DAG: vldr d1 | 348 ; CHECK-DAG: vmov.f64 d1 |
| 349 ; CHECK-DAG: vldr d2 | 349 ; CHECK-DAG: vmov.f64 d2 |
| 350 ; CHECK-DAG: vldr d3 | 350 ; CHECK-DAG: vmov.f64 d3 |
| 351 ; CHECK-DAG: vldr d4 | 351 ; CHECK-DAG: vmov.f64 d4 |
| 352 ; CHECK-DAG: vldr d5 | 352 ; CHECK-DAG: vmov.f64 d5 |
| 353 ; CHECK: bl {{.*}} double6 | 353 ; CHECK: bl {{.*}} double6 |
| 354 call void @double7(double 1.0, double 2.0, double 3.0, double 4.0, | 354 call void @double7(double 1.0, double 2.0, double 3.0, double 4.0, |
| 355 double 5.0, double 6.0, double 7.0) | 355 double 5.0, double 6.0, double 7.0) |
| 356 ; CHECK-DAG: vldr d0 | 356 ; CHECK-DAG: vmov.f64 d0 |
| 357 ; CHECK-DAG: vldr d1 | 357 ; CHECK-DAG: vmov.f64 d1 |
| 358 ; CHECK-DAG: vldr d2 | 358 ; CHECK-DAG: vmov.f64 d2 |
| 359 ; CHECK-DAG: vldr d3 | 359 ; CHECK-DAG: vmov.f64 d3 |
| 360 ; CHECK-DAG: vldr d4 | 360 ; CHECK-DAG: vmov.f64 d4 |
| 361 ; CHECK-DAG: vldr d5 | 361 ; CHECK-DAG: vmov.f64 d5 |
| 362 ; CHECK-DAG: vldr d6 | 362 ; CHECK-DAG: vmov.f64 d6 |
| 363 ; CHECK: bl {{.*}} double7 | 363 ; CHECK: bl {{.*}} double7 |
| 364 call void @double8(double 1.0, double 2.0, double 3.0, double 4.0, | 364 call void @double8(double 1.0, double 2.0, double 3.0, double 4.0, |
| 365 double 5.0, double 6.0, double 7.0, double 8.0) | 365 double 5.0, double 6.0, double 7.0, double 8.0) |
| 366 ; CHECK-DAG: vldr d0 | 366 ; CHECK-DAG: vmov.f64 d0 |
| 367 ; CHECK-DAG: vldr d1 | 367 ; CHECK-DAG: vmov.f64 d1 |
| 368 ; CHECK-DAG: vldr d2 | 368 ; CHECK-DAG: vmov.f64 d2 |
| 369 ; CHECK-DAG: vldr d3 | 369 ; CHECK-DAG: vmov.f64 d3 |
| 370 ; CHECK-DAG: vldr d4 | 370 ; CHECK-DAG: vmov.f64 d4 |
| 371 ; CHECK-DAG: vldr d5 | 371 ; CHECK-DAG: vmov.f64 d5 |
| 372 ; CHECK-DAG: vldr d6 | 372 ; CHECK-DAG: vmov.f64 d6 |
| 373 ; CHECK-DAG: vldr d7 | 373 ; CHECK-DAG: vmov.f64 d7 |
| 374 ; CHECK: bl {{.*}} double8 | 374 ; CHECK: bl {{.*}} double8 |
| 375 call void @double9(double 1.0, double 2.0, double 3.0, double 4.0, | 375 call void @double9(double 1.0, double 2.0, double 3.0, double 4.0, |
| 376 double 5.0, double 6.0, double 7.0, double 8.0, | 376 double 5.0, double 6.0, double 7.0, double 8.0, |
| 377 double 9.0) | 377 double 9.0) |
| 378 ; CHECK-DAG: vldr d0 | 378 ; CHECK-DAG: vmov.f64 d0 |
| 379 ; CHECK-DAG: vldr d1 | 379 ; CHECK-DAG: vmov.f64 d1 |
| 380 ; CHECK-DAG: vldr d2 | 380 ; CHECK-DAG: vmov.f64 d2 |
| 381 ; CHECK-DAG: vldr d3 | 381 ; CHECK-DAG: vmov.f64 d3 |
| 382 ; CHECK-DAG: vldr d4 | 382 ; CHECK-DAG: vmov.f64 d4 |
| 383 ; CHECK-DAG: vldr d5 | 383 ; CHECK-DAG: vmov.f64 d5 |
| 384 ; CHECK-DAG: vldr d6 | 384 ; CHECK-DAG: vmov.f64 d6 |
| 385 ; CHECK-DAG: vldr d7 | 385 ; CHECK-DAG: vmov.f64 d7 |
| 386 ; CHECK-DAG: vstr d{{.*}}, [sp] | 386 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 387 ; CHECK: bl {{.*}} double9 | 387 ; CHECK: bl {{.*}} double9 |
| 388 call void @double10(double 1.0, double 2.0, double 3.0, double 4.0, | 388 call void @double10(double 1.0, double 2.0, double 3.0, double 4.0, |
| 389 double 5.0, double 6.0, double 7.0, double 8.0, | 389 double 5.0, double 6.0, double 7.0, double 8.0, |
| 390 double 9.0, double 10.0) | 390 double 9.0, double 10.0) |
| 391 ; CHECK-DAG: vldr d0 | 391 ; CHECK-DAG: vmov.f64 d0 |
| 392 ; CHECK-DAG: vldr d1 | 392 ; CHECK-DAG: vmov.f64 d1 |
| 393 ; CHECK-DAG: vldr d2 | 393 ; CHECK-DAG: vmov.f64 d2 |
| 394 ; CHECK-DAG: vldr d3 | 394 ; CHECK-DAG: vmov.f64 d3 |
| 395 ; CHECK-DAG: vldr d4 | 395 ; CHECK-DAG: vmov.f64 d4 |
| 396 ; CHECK-DAG: vldr d5 | 396 ; CHECK-DAG: vmov.f64 d5 |
| 397 ; CHECK-DAG: vldr d6 | 397 ; CHECK-DAG: vmov.f64 d6 |
| 398 ; CHECK-DAG: vldr d7 | 398 ; CHECK-DAG: vmov.f64 d7 |
| 399 ; CHECK-DAG: vstr d{{.*}}, [sp] | 399 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 400 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] | 400 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] |
| 401 ; CHECK: bl {{.*}} double10 | 401 ; CHECK: bl {{.*}} double10 |
| 402 | 402 |
| 403 ret void | 403 ret void |
| 404 } | 404 } |
| 405 | 405 |
| 406 declare void @testFDF(float %p0, double %p1, float %p2) | 406 declare void @testFDF(float %p0, double %p1, float %p2) |
| 407 declare void @testFDDF(float %p0, double %p1, double %p2, float %p3) | 407 declare void @testFDDF(float %p0, double %p1, double %p2, float %p3) |
| 408 declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3, | 408 declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 427 double %p8, double %p9, float %p10) | 427 double %p8, double %p9, float %p10) |
| 428 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, | 428 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, |
| 429 double %p4, double %p5, double %p6, double %p7, | 429 double %p4, double %p5, double %p6, double %p7, |
| 430 double %p8, float %p9, double %p10) | 430 double %p8, float %p9, double %p10) |
| 431 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, | 431 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, |
| 432 double %p4, double %p5, double %p6, double %p7, | 432 double %p4, double %p5, double %p6, double %p7, |
| 433 double %p8, float %p9, double %p10, float %p11) | 433 double %p8, float %p9, double %p10, float %p11) |
| 434 define internal void @packsFloats() nounwind { | 434 define internal void @packsFloats() nounwind { |
| 435 ; CHECK-LABEL: packsFloats | 435 ; CHECK-LABEL: packsFloats |
| 436 call void @testFDF(float 1.0, double 2.0, float 3.0) | 436 call void @testFDF(float 1.0, double 2.0, float 3.0) |
| 437 ; CHECK-DAG: vldr s0 | 437 ; CHECK-DAG: vmov.f32 s0 |
| 438 ; CHECK-DAG: vldr d1 | 438 ; CHECK-DAG: vmov.f64 d1 |
| 439 ; CHECK-DAG: vldr s1 | 439 ; CHECK-DAG: vmov.f32 s1 |
| 440 ; CHECK: bl {{.*}} testFDF | 440 ; CHECK: bl {{.*}} testFDF |
| 441 call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0) | 441 call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0) |
| 442 ; CHECK-DAG: vldr s0 | 442 ; CHECK-DAG: vmov.f32 s0 |
| 443 ; CHECK-DAG: vldr d1 | 443 ; CHECK-DAG: vmov.f64 d1 |
| 444 ; CHECK-DAG: vldr d2 | 444 ; CHECK-DAG: vmov.f64 d2 |
| 445 ; CHECK-DAG: vldr s1 | 445 ; CHECK-DAG: vmov.f32 s1 |
| 446 ; CHECK: bl {{.*}} testFDDF | 446 ; CHECK: bl {{.*}} testFDDF |
| 447 call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 447 call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 448 float 5.0) | 448 float 5.0) |
| 449 ; CHECK-DAG: vldr s0 | 449 ; CHECK-DAG: vmov.f32 s0 |
| 450 ; CHECK-DAG: vldr d1 | 450 ; CHECK-DAG: vmov.f64 d1 |
| 451 ; CHECK-DAG: vldr d2 | 451 ; CHECK-DAG: vmov.f64 d2 |
| 452 ; CHECK-DAG: vldr d3 | 452 ; CHECK-DAG: vmov.f64 d3 |
| 453 ; CHECK-DAG: vldr s1 | 453 ; CHECK-DAG: vmov.f32 s1 |
| 454 ; CHECK: bl {{.*}} testFDDDF | 454 ; CHECK: bl {{.*}} testFDDDF |
| 455 call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 455 call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 456 double 5.0, float 6.0) | 456 double 5.0, float 6.0) |
| 457 ; CHECK-DAG: vldr s0 | 457 ; CHECK-DAG: vmov.f32 s0 |
| 458 ; CHECK-DAG: vldr d1 | 458 ; CHECK-DAG: vmov.f64 d1 |
| 459 ; CHECK-DAG: vldr d2 | 459 ; CHECK-DAG: vmov.f64 d2 |
| 460 ; CHECK-DAG: vldr d3 | 460 ; CHECK-DAG: vmov.f64 d3 |
| 461 ; CHECK-DAG: vldr d4 | 461 ; CHECK-DAG: vmov.f64 d4 |
| 462 ; CHECK-DAG: vldr s1 | 462 ; CHECK-DAG: vmov.f32 s1 |
| 463 ; CHECK: bl {{.*}} testFDDDDF | 463 ; CHECK: bl {{.*}} testFDDDDF |
| 464 call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 464 call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 465 double 5.0, double 6.0, float 7.0) | 465 double 5.0, double 6.0, float 7.0) |
| 466 ; CHECK-DAG: vldr s0 | 466 ; CHECK-DAG: vmov.f32 s0 |
| 467 ; CHECK-DAG: vldr d1 | 467 ; CHECK-DAG: vmov.f64 d1 |
| 468 ; CHECK-DAG: vldr d2 | 468 ; CHECK-DAG: vmov.f64 d2 |
| 469 ; CHECK-DAG: vldr d3 | 469 ; CHECK-DAG: vmov.f64 d3 |
| 470 ; CHECK-DAG: vldr d4 | 470 ; CHECK-DAG: vmov.f64 d4 |
| 471 ; CHECK-DAG: vldr d5 | 471 ; CHECK-DAG: vmov.f64 d5 |
| 472 ; CHECK-DAG: vldr s1 | 472 ; CHECK-DAG: vmov.f32 s1 |
| 473 ; CHECK: bl {{.*}} testFDDDDDF | 473 ; CHECK: bl {{.*}} testFDDDDDF |
| 474 call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 474 call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 475 double 5.0, double 6.0, double 7.0, float 8.0) | 475 double 5.0, double 6.0, double 7.0, float 8.0) |
| 476 ; CHECK-DAG: vldr s0 | 476 ; CHECK-DAG: vmov.f32 s0 |
| 477 ; CHECK-DAG: vldr d1 | 477 ; CHECK-DAG: vmov.f64 d1 |
| 478 ; CHECK-DAG: vldr d2 | 478 ; CHECK-DAG: vmov.f64 d2 |
| 479 ; CHECK-DAG: vldr d3 | 479 ; CHECK-DAG: vmov.f64 d3 |
| 480 ; CHECK-DAG: vldr d4 | 480 ; CHECK-DAG: vmov.f64 d4 |
| 481 ; CHECK-DAG: vldr d5 | 481 ; CHECK-DAG: vmov.f64 d5 |
| 482 ; CHECK-DAG: vldr d6 | 482 ; CHECK-DAG: vmov.f64 d6 |
| 483 ; CHECK-DAG: vldr s1 | 483 ; CHECK-DAG: vmov.f32 s1 |
| 484 ; CHECK: bl {{.*}} testFDDDDDDF | 484 ; CHECK: bl {{.*}} testFDDDDDDF |
| 485 call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 485 call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 486 double 5.0, double 6.0, double 7.0, double 8.0, | 486 double 5.0, double 6.0, double 7.0, double 8.0, |
| 487 float 9.0) | 487 float 9.0) |
| 488 ; CHECK-DAG: vldr s0 | 488 ; CHECK-DAG: vmov.f32 s0 |
| 489 ; CHECK-DAG: vldr d1 | 489 ; CHECK-DAG: vmov.f64 d1 |
| 490 ; CHECK-DAG: vldr d2 | 490 ; CHECK-DAG: vmov.f64 d2 |
| 491 ; CHECK-DAG: vldr d3 | 491 ; CHECK-DAG: vmov.f64 d3 |
| 492 ; CHECK-DAG: vldr d4 | 492 ; CHECK-DAG: vmov.f64 d4 |
| 493 ; CHECK-DAG: vldr d5 | 493 ; CHECK-DAG: vmov.f64 d5 |
| 494 ; CHECK-DAG: vldr d6 | 494 ; CHECK-DAG: vmov.f64 d6 |
| 495 ; CHECK-DAG: vldr d7 | 495 ; CHECK-DAG: vmov.f64 d7 |
| 496 ; CHECK-DAG: vldr s1 | 496 ; CHECK-DAG: vmov.f32 s1 |
| 497 ; CHECK: bl {{.*}} testFDDDDDDDF | 497 ; CHECK: bl {{.*}} testFDDDDDDDF |
| 498 call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, | 498 call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, |
| 499 double 5.0, double 6.0, double 7.0, double 8.0, | 499 double 5.0, double 6.0, double 7.0, double 8.0, |
| 500 float 9.0, double 10.0) | 500 float 9.0, double 10.0) |
| 501 ; CHECK-DAG: vldr s0 | 501 ; CHECK-DAG: vmov.f32 s0 |
| 502 ; CHECK-DAG: vldr d1 | 502 ; CHECK-DAG: vmov.f64 d1 |
| 503 ; CHECK-DAG: vldr d2 | 503 ; CHECK-DAG: vmov.f64 d2 |
| 504 ; CHECK-DAG: vldr d3 | 504 ; CHECK-DAG: vmov.f64 d3 |
| 505 ; CHECK-DAG: vldr d4 | 505 ; CHECK-DAG: vmov.f64 d4 |
| 506 ; CHECK-DAG: vldr d5 | 506 ; CHECK-DAG: vmov.f64 d5 |
| 507 ; CHECK-DAG: vldr d6 | 507 ; CHECK-DAG: vmov.f64 d6 |
| 508 ; CHECK-DAG: vldr d7 | 508 ; CHECK-DAG: vmov.f64 d7 |
| 509 ; CHECK-DAG: vstr d{{.*}}, [sp] | 509 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 510 ; CHECK-DAG: vldr s1 | 510 ; CHECK-DAG: vmov.f32 s1 |
| 511 ; CHECK: bl {{.*}} testFDDDDDDDFD | 511 ; CHECK: bl {{.*}} testFDDDDDDDFD |
| 512 call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 512 call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 513 double 5.0, double 6.0, double 7.0, double 8.0, | 513 double 5.0, double 6.0, double 7.0, double 8.0, |
| 514 double 9.0, float 10.0) | 514 double 9.0, float 10.0) |
| 515 ; CHECK-DAG: vldr s0 | 515 ; CHECK-DAG: vmov.f32 s0 |
| 516 ; CHECK-DAG: vldr d1 | 516 ; CHECK-DAG: vmov.f64 d1 |
| 517 ; CHECK-DAG: vldr d2 | 517 ; CHECK-DAG: vmov.f64 d2 |
| 518 ; CHECK-DAG: vldr d3 | 518 ; CHECK-DAG: vmov.f64 d3 |
| 519 ; CHECK-DAG: vldr d4 | 519 ; CHECK-DAG: vmov.f64 d4 |
| 520 ; CHECK-DAG: vldr d5 | 520 ; CHECK-DAG: vmov.f64 d5 |
| 521 ; CHECK-DAG: vldr d6 | 521 ; CHECK-DAG: vmov.f64 d6 |
| 522 ; CHECK-DAG: vldr d7 | 522 ; CHECK-DAG: vmov.f64 d7 |
| 523 ; CHECK-DAG: vstr d{{.*}}, [sp] | 523 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 524 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 524 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
| 525 ; CHECK: bl {{.*}} testFDDDDDDDDF | 525 ; CHECK: bl {{.*}} testFDDDDDDDDF |
| 526 call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 526 call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 527 double 5.0, double 6.0, double 7.0, double 8.0, | 527 double 5.0, double 6.0, double 7.0, double 8.0, |
| 528 double 9.0, double 10.0, float 11.0) | 528 double 9.0, double 10.0, float 11.0) |
| 529 ; CHECK-DAG: vldr s0 | 529 ; CHECK-DAG: vmov.f32 s0 |
| 530 ; CHECK-DAG: vldr d1 | 530 ; CHECK-DAG: vmov.f64 d1 |
| 531 ; CHECK-DAG: vldr d2 | 531 ; CHECK-DAG: vmov.f64 d2 |
| 532 ; CHECK-DAG: vldr d3 | 532 ; CHECK-DAG: vmov.f64 d3 |
| 533 ; CHECK-DAG: vldr d4 | 533 ; CHECK-DAG: vmov.f64 d4 |
| 534 ; CHECK-DAG: vldr d5 | 534 ; CHECK-DAG: vmov.f64 d5 |
| 535 ; CHECK-DAG: vldr d6 | 535 ; CHECK-DAG: vmov.f64 d6 |
| 536 ; CHECK-DAG: vldr d7 | 536 ; CHECK-DAG: vmov.f64 d7 |
| 537 ; CHECK-DAG: vstr d{{.*}}, [sp] | 537 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 538 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] | 538 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] |
| 539 ; CHECK-DAG: vstr s{{.*}}, [sp, #16] | 539 ; CHECK-DAG: vstr s{{.*}}, [sp, #16] |
| 540 ; CHECK: bl {{.*}} testFDDDDDDDDDF | 540 ; CHECK: bl {{.*}} testFDDDDDDDDDF |
| 541 call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, | 541 call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, |
| 542 double 5.0, double 6.0, double 7.0, double 8.0, | 542 double 5.0, double 6.0, double 7.0, double 8.0, |
| 543 double 9.0, float 10.0, double 11.0) | 543 double 9.0, float 10.0, double 11.0) |
| 544 ; CHECK-DAG: vldr s0 | 544 ; CHECK-DAG: vmov.f32 s0 |
| 545 ; CHECK-DAG: vldr d1 | 545 ; CHECK-DAG: vmov.f64 d1 |
| 546 ; CHECK-DAG: vldr d2 | 546 ; CHECK-DAG: vmov.f64 d2 |
| 547 ; CHECK-DAG: vldr d3 | 547 ; CHECK-DAG: vmov.f64 d3 |
| 548 ; CHECK-DAG: vldr d4 | 548 ; CHECK-DAG: vmov.f64 d4 |
| 549 ; CHECK-DAG: vldr d5 | 549 ; CHECK-DAG: vmov.f64 d5 |
| 550 ; CHECK-DAG: vldr d6 | 550 ; CHECK-DAG: vmov.f64 d6 |
| 551 ; CHECK-DAG: vldr d7 | 551 ; CHECK-DAG: vmov.f64 d7 |
| 552 ; CHECK-DAG: vstr d{{.*}}, [sp] | 552 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 553 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 553 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
| 554 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] | 554 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] |
| 555 ; CHECK: bl {{.*}} testFDDDDDDDDFD | 555 ; CHECK: bl {{.*}} testFDDDDDDDDFD |
| 556 call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0, | 556 call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0, |
| 557 double 5.0, double 6.0, double 7.0, double 8.0, | 557 double 5.0, double 6.0, double 7.0, double 8.0, |
| 558 double 9.0, float 10.0, double 11.0, float 12.0) | 558 double 9.0, float 10.0, double 11.0, float 12.0) |
| 559 ; CHECK-DAG: vldr s0 | 559 ; CHECK-DAG: vmov.f32 s0 |
| 560 ; CHECK-DAG: vldr d1 | 560 ; CHECK-DAG: vmov.f64 d1 |
| 561 ; CHECK-DAG: vldr d2 | 561 ; CHECK-DAG: vmov.f64 d2 |
| 562 ; CHECK-DAG: vldr d3 | 562 ; CHECK-DAG: vmov.f64 d3 |
| 563 ; CHECK-DAG: vldr d4 | 563 ; CHECK-DAG: vmov.f64 d4 |
| 564 ; CHECK-DAG: vldr d5 | 564 ; CHECK-DAG: vmov.f64 d5 |
| 565 ; CHECK-DAG: vldr d6 | 565 ; CHECK-DAG: vmov.f64 d6 |
| 566 ; CHECK-DAG: vldr d7 | 566 ; CHECK-DAG: vmov.f64 d7 |
| 567 ; CHECK-DAG: vstr d{{.*}}, [sp] | 567 ; CHECK-DAG: vstr d{{.*}}, [sp] |
| 568 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 568 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
| 569 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] | 569 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] |
| 570 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] | 570 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] |
| 571 ; CHECK: bl {{.*}} testFDDDDDDDDFD | 571 ; CHECK: bl {{.*}} testFDDDDDDDDFD |
| 572 | 572 |
| 573 ret void | 573 ret void |
| 574 } | 574 } |
| 575 | 575 |
| 576 ; TODO(jpp): add tests for stack alignment. | 576 ; TODO(jpp): add tests for stack alignment. |
| OLD | NEW |