This was a thinko. The intent was to flip the explicit bits that need toggling
rather than all bits. This would result in incorrect behaviour (which now is
tested).
Thanks to Nico Weber for pointing this out!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215846
91177308-0d34-0410-b5e6-
96231b3b80d8
- bool ToggleFeatures = EnableFeature
- ? (~STI.getFeatureBits() & Extension.Features)
- : ( STI.getFeatureBits() & Extension.Features);
- if (ToggleFeatures) {
- unsigned Features =
- ComputeAvailableFeatures(STI.ToggleFeature(Extension.Features));
- setAvailableFeatures(Features);
- }
+ unsigned ToggleFeatures = EnableFeature
+ ? (~STI.getFeatureBits() & Extension.Features)
+ : ( STI.getFeatureBits() & Extension.Features);
+ unsigned Features =
+ ComputeAvailableFeatures(STI.ToggleFeature(ToggleFeatures));
+ setAvailableFeatures(Features);
--- /dev/null
+@ RUN: llvm-mc -triple armv7-eabi -mattr hwdiv -filetype asm -o /dev/null %s
+
+ .syntax unified
+ .thumb
+
+ udiv r0, r1, r2
+ .arch_extension idiv
+ udiv r0, r1, r2