ARM: NEON instruction templates modified to set the predicate flag to false when needed.
This commit is contained in:
parent
3de8e0a0d4
commit
7ee2de31c4
|
@ -202,6 +202,8 @@ def template MicroNeonMixExecute {{
|
|||
{
|
||||
%(op_wb)s;
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0) {
|
||||
|
|
|
@ -234,6 +234,8 @@ def template NeonLoadExecute {{
|
|||
if (fault == NoFault) {
|
||||
%(op_wb)s;
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0 &&
|
||||
|
@ -313,6 +315,8 @@ def template NeonStoreExecute {{
|
|||
if (fault == NoFault) {
|
||||
%(op_wb)s;
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0 &&
|
||||
|
@ -459,6 +463,8 @@ def template NeonStoreInitiateAcc {{
|
|||
fault = xc->writeBytes(memUnion.bytes, %(size)d, EA,
|
||||
memAccessFlags, NULL);
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0 &&
|
||||
|
@ -515,9 +521,12 @@ def template NeonLoadInitiateAcc {{
|
|||
if (fault == NoFault) {
|
||||
fault = xc->readBytes(EA, NULL, %(size)d, memAccessFlags);
|
||||
}
|
||||
} else if (fault == NoFault && machInst.itstateMask != 0 &&
|
||||
(!isMicroop() || isLastMicroop())) {
|
||||
xc->setMiscReg(MISCREG_ITSTATE, machInst.newItstate);
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
if (fault == NoFault && machInst.itstateMask != 0 &&
|
||||
(!isMicroop() || isLastMicroop())) {
|
||||
xc->setMiscReg(MISCREG_ITSTATE, machInst.newItstate);
|
||||
}
|
||||
}
|
||||
|
||||
return fault;
|
||||
|
|
|
@ -225,6 +225,8 @@ def template NeonEqualRegExecute {{
|
|||
{
|
||||
%(op_wb)s;
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0) {
|
||||
|
@ -275,6 +277,8 @@ def template NeonUnequalRegExecute {{
|
|||
{
|
||||
%(op_wb)s;
|
||||
}
|
||||
} else {
|
||||
xc->setPredicate(false);
|
||||
}
|
||||
|
||||
if (fault == NoFault && machInst.itstateMask != 0) {
|
||||
|
|
Loading…
Reference in a new issue