diff options
author | John Brawn <john.brawn@arm.com> | 2015-06-12 09:38:51 +0000 |
---|---|---|
committer | John Brawn <john.brawn@arm.com> | 2015-06-12 09:38:51 +0000 |
commit | d9e39d53b6ebe528d0c5728a9dd95e227856bfee (patch) | |
tree | 087a847b185f00e2cec57999d373c8f35ce84116 /llvm/lib/Support/TargetParser.cpp | |
parent | b5a87b256d7450a8a655900b7057e3af69213893 (diff) | |
download | bcm5719-llvm-d9e39d53b6ebe528d0c5728a9dd95e227856bfee.tar.gz bcm5719-llvm-d9e39d53b6ebe528d0c5728a9dd95e227856bfee.zip |
[ARM] Disabling vfp4 should disable fp16
ARMTargetParser::getFPUFeatures should disable fp16 whenever it
disables vfp4, as otherwise something like -mcpu=cortex-a7 -mfpu=none
leaves us with fp16 enabled (though the only effect that will have is
a wrong build attribute).
Differential Revision: http://reviews.llvm.org/D10397
llvm-svn: 239599
Diffstat (limited to 'llvm/lib/Support/TargetParser.cpp')
-rw-r--r-- | llvm/lib/Support/TargetParser.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp index 757483b9586..760cdc11f26 100644 --- a/llvm/lib/Support/TargetParser.cpp +++ b/llvm/lib/Support/TargetParser.cpp @@ -276,7 +276,8 @@ bool ARMTargetParser::getFPUFeatures(unsigned FPUKind, // FPU version subtarget features are inclusive of lower-numbered ones, so // enable the one corresponding to this version and disable all that are - // higher. + // higher. We also have to make sure to disable fp16 when vfp4 is disabled, + // as +vfp4 implies +fp16 but -vfp4 does not imply -fp16. switch (FPUNames[FPUKind].FPUVersion) { case 5: Features.push_back("+fp-armv8"); @@ -287,18 +288,21 @@ bool ARMTargetParser::getFPUFeatures(unsigned FPUKind, break; case 3: Features.push_back("+vfp3"); + Features.push_back("-fp16"); Features.push_back("-vfp4"); Features.push_back("-fp-armv8"); break; case 2: Features.push_back("+vfp2"); Features.push_back("-vfp3"); + Features.push_back("-fp16"); Features.push_back("-vfp4"); Features.push_back("-fp-armv8"); break; case 0: Features.push_back("-vfp2"); Features.push_back("-vfp3"); + Features.push_back("-fp16"); Features.push_back("-vfp4"); Features.push_back("-fp-armv8"); break; |