summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-05-31 14:27:10 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-05-31 14:27:10 +0000
commita580273b3ff6102e55c67d041161b35a412e5f75 (patch)
tree8db95b6d6d3864f0fce4682920d41741e8e95cf9 /llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
parent1cb7ee130048d57e177d9d3fdc6cdb7621bb5d74 (diff)
downloadbcm5719-llvm-a580273b3ff6102e55c67d041161b35a412e5f75.tar.gz
bcm5719-llvm-a580273b3ff6102e55c67d041161b35a412e5f75.zip
[Hexagon] Disable expanding MUX instructions that define a subregister
The code in HexagonExpandCondsets.cpp does not handle those cases at the moment. llvm-svn: 271281
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp b/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
index b00e9966d7e..b5f709241f2 100644
--- a/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
@@ -991,6 +991,11 @@ bool HexagonExpandCondsets::predicate(MachineInstr *TfrI, bool Cond) {
// some registers, which would complicate the transformation considerably.
if (!MS.isKill())
return false;
+ // Avoid predicating instructions that define a subregister. The code
+ // does not handle correctly cases where both subregisters of a register
+ // are defined by a condset.
+ if (MD.getSubReg())
+ return false;
RegisterRef RT(MS);
unsigned PredR = MP.getReg();
OpenPOWER on IntegriCloud