[llvm] r219748 - [AArch64] Wrong CC access in CSINC-conditional branch sequence
Gerolf Hoflehner
ghoflehner at apple.com
Wed Oct 15 23:32:24 PDT 2014
Valid point. I’m looking to get cbz covered with a test case also.
> On Oct 14, 2014, at 5:57 PM, Justin Bogner <mail at justinbogner.com> wrote:
>
> Gerolf Hoflehner <ghoflehner at apple.com <mailto:ghoflehner at apple.com>> writes:
>> Author: ghoflehner
>> Date: Tue Oct 14 18:55:00 2014
>> New Revision: 219748
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=219748&view=rev
>> Log:
>> [AArch64] Wrong CC access in CSINC-conditional branch sequence
>>
>> This is a follow up to commit r219742. It removes the CCInMI variable
>> and accesses the CC in CSCINC directly. In the case of a conditional
>> branch accessing the CC with CCInMI was wrong.
>
> Can this be tested?
>
>> Modified:
>> llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
>>
>> Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp?rev=219748&r1=219747&r2=219748&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp Tue Oct 14 18:55:00 2014
>> @@ -2869,24 +2869,20 @@ bool AArch64InstrInfo::optimizeCondBranc
>> case AArch64::CBZW:
>> case AArch64::CBZX:
>> TargetBBInMI = 1;
>> - CCInMI = 2;
>> break;
>> case AArch64::CBNZW:
>> case AArch64::CBNZX:
>> TargetBBInMI = 1;
>> - CCInMI = 2;
>> IsNegativeBranch = true;
>> break;
>> case AArch64::TBZW:
>> case AArch64::TBZX:
>> TargetBBInMI = 2;
>> - CCInMI = 3;
>> IsTestAndBranch = true;
>> break;
>> case AArch64::TBNZW:
>> case AArch64::TBNZX:
>> TargetBBInMI = 2;
>> - CCInMI = 3;
>> IsNegativeBranch = true;
>> IsTestAndBranch = true;
>> break;
>> @@ -2921,7 +2917,7 @@ bool AArch64InstrInfo::optimizeCondBranc
>> return false;
>>
>> AArch64CC::CondCode CC =
>> - (AArch64CC::CondCode)DefMI->getOperand(CCInMI).getImm();
>> + (AArch64CC::CondCode)DefMI->getOperand(3).getImm();
>> bool CheckOnlyCCWrites = true;
>> // Convert only when the condition code is not modified between
>> // the CSINC and the branch. The CC may be used by other
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141015/21295d27/attachment.html>
More information about the llvm-commits
mailing list