llvm.org GIT mirror llvm / fcc04c2
Merging r227603: ------------------------------------------------------------------------ r227603 | compnerd | 2015-01-30 11:35:18 -0800 (Fri, 30 Jan 2015) | 7 lines ARM: further correct .fpu directive handling If the original FPU specification involved a restricted VFP unit (d16), ensure that we reset the functionality when we encounter a new FPU type. In particular, if the user specified vfpv3-d16, but switched to a VFPv3 (which has 32 double precision registers), we would fail to reset the D16 feature, and treat it as being equivalent to vfpv3-d16. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@227854 91177308-0d34-0410-b5e6-96231b3b80d8 Hans Wennborg 5 years ago
2 changed file(s) with 46 addition(s) and 7 deletion(s). Raw diff Collapse all Expand all
91969196 } FPUs[] = {
91979197 {ARM::VFP, ARM::FeatureVFP2, ARM::FeatureNEON},
91989198 {ARM::VFPV2, ARM::FeatureVFP2, ARM::FeatureNEON},
9199 {ARM::VFPV3, ARM::FeatureVFP2 | ARM::FeatureVFP3, ARM::FeatureNEON},
9199 {ARM::VFPV3, ARM::FeatureVFP2 | ARM::FeatureVFP3,
9200 ARM::FeatureNEON | ARM::FeatureD16},
92009201 {ARM::VFPV3_D16, ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureD16,
92019202 ARM::FeatureNEON},
92029203 {ARM::VFPV4, ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4,
9203 ARM::FeatureNEON},
9204 ARM::FeatureNEON | ARM::FeatureD16},
92049205 {ARM::VFPV4_D16,
92059206 ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4 | ARM::FeatureD16,
92069207 ARM::FeatureNEON},
92099210 ARM::FeatureNEON | ARM::FeatureCrypto},
92109211 {ARM::FP_ARMV8, ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4 |
92119212 ARM::FeatureFPARMv8,
9212 ARM::FeatureNEON | ARM::FeatureCrypto},
9213 {ARM::NEON, ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureNEON, 0},
9213 ARM::FeatureNEON | ARM::FeatureCrypto | ARM::FeatureD16},
9214 {ARM::NEON, ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureNEON,
9215 ARM::FeatureD16},
92149216 {ARM::NEON_VFPV4,
92159217 ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4 | ARM::FeatureNEON,
9216 0},
9218 ARM::FeatureD16},
92179219 {ARM::NEON_FP_ARMV8,
92189220 ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4 |
92199221 ARM::FeatureFPARMv8 | ARM::FeatureNEON,
9220 ARM::FeatureCrypto},
9222 ARM::FeatureCrypto | ARM::FeatureD16},
92219223 {ARM::CRYPTO_NEON_FP_ARMV8,
92229224 ARM::FeatureVFP2 | ARM::FeatureVFP3 | ARM::FeatureVFP4 |
92239225 ARM::FeatureFPARMv8 | ARM::FeatureNEON | ARM::FeatureCrypto,
9224 0},
9226 ARM::FeatureD16},
92259227 {ARM::SOFTVFP, 0, 0},
92269228 };
92279229
0 @ RUN: llvm-mc -triple armv4t-eabi -mattr +d16 -filetype asm -o - %s 2>&1 | FileCheck %s
1
2 .text
3 .thumb
4
5 .p2align 2
6
7 .fpu vfpv3
8 vldmia r0, {d16-d31}
9 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
10 @ CHECK-NOT: error: register expected
11
12 .fpu vfpv4
13 vldmia r0, {d16-d31}
14 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
15 @ CHECK-NOT: error: register expected
16
17 .fpu neon
18 vldmia r0, {d16-d31}
19 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
20 @ CHECK-NOT: error: register expected
21
22 .fpu neon-vfpv4
23 vldmia r0, {d16-d31}
24 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
25 @ CHECK-NOT: error: register expected
26
27 .fpu neon-fp-armv8
28 vldmia r0, {d16-d31}
29 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
30 @ CHECK-NOT: error: register expected
31
32 .fpu crypto-neon-fp-armv8
33 vldmia r0, {d16-d31}
34 @ CHECK: vldmia r0, {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
35 @ CHECK-NOT: error: register expected
36