http://llvm.org/bugs/show_bug.cgi?id=11691
Bug #: 11691
Summary: llc assertion failure generating arm neon vst2 with
pointer update
Product: new-bugs
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: new bugs
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
Created attachment 7828
--> http://llvm.org/bugs/attachment.cgi?id=7828
bugpoint-reduced failure case
llc fails an assertion when generating the arm neon VST2 instruction when it
detects it can use the address-updating form:
llc: /data/scratch/omap4/llvm/include/llvm/CodeGen/MachineOperand.h:385:
int64_t llvm::MachineOperand::getImm() const: Assertion `isImm() && "Wrong
MachineOperand accessor"' failed.
Stack dump:
0. Program arguments: llc bugpoint-reduced-simplified.bc
1. Running pass 'Function Pass Manager' on module
'bugpoint-reduced-simplified.bc'.
2. Running pass 'If Converter' on function '@curved_inner'
Aborted
I believe this is the case because the assertion is no longer triggered if you
include this check in ARMISelLowering.cpp at line 7340
--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -7335,6 +7335,10 @@ static SDValue CombineBaseUpdate(SDNode *N,
unsigned NumVecs = 0;
if (isIntrinsic) {
unsigned IntNo = cast<ConstantSDNode>(N->getOperand(1))->getZExtValue();
+
+ // AA: bail out for VST2 to avoid bug
+ if (IntNo == Intrinsic::arm_neon_vst2) continue;
+
switch (IntNo) {
default: assert(0 && "unexpected intrinsic for Neon base update");
case Intrinsic::arm_neon_vld1: NewOpc = ARMISD::VLD1_UPD;
A bugpoint-simplified bc file is attached. Compile it with -march=arm
-mcpu=cortex-a9
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs