From: Matthew Gretton-Dann Date: Wed, 7 Dec 2011 16:58:35 +0000 (+0000) Subject: 2011-12-07 Sameera Deshpande X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bd340a044ccea7f1810df7626726ab7ff731693f;p=binutils-gdb.git 2011-12-07 Sameera Deshpande * gas/config/tc-arm.c (do_t_ldstd): Warn for unpredictable cases. * gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.d: New testcase. * gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.l: Likewise. * gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.s: Likewise. * gas/testsuite/gas/testsuite/gas/arm/sp-pc-validations-bad-t.l: Update testcase. * gas/testsuite/gas/testsuite/gas/arm/sp-pc-validations-bad-t.s: Likewise. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index d52c5b68dbf..ebbd477ba6e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2011-12-07 Sameera Deshpande + + * config/tc-arm.c (do_t_ldstd): Warn for unpredictable cases. + 2011-11-07 Matthew Gretton-Dann * config/tc-arm.c (ARM_IT_MAX_OPERANDS): New define. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 064267ed13f..a73f01a73d8 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -563,6 +563,7 @@ const char * const reg_expected_msgs[] = }; /* Some well known registers that we refer to directly elsewhere. */ +#define REG_R12 12 #define REG_SP 13 #define REG_LR 14 #define REG_PC 15 @@ -10654,7 +10655,16 @@ do_t_ldstd (void) inst.operands[1].reg = inst.operands[0].reg + 1; constraint (inst.operands[0].reg == REG_LR, _("r14 not allowed here")); + constraint (inst.operands[0].reg == REG_R12, + _("r12 not allowed here")); } + + if (inst.operands[2].writeback + && (inst.operands[0].reg == inst.operands[2].reg + || inst.operands[1].reg == inst.operands[2].reg)) + as_warn (_("base register written back, and overlaps " + "one of transfer registers")); + inst.instruction |= inst.operands[0].reg << 12; inst.instruction |= inst.operands[1].reg << 8; encode_thumb32_addr_mode (2, /*is_t=*/FALSE, /*is_d=*/TRUE); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 8d6e8b67fb5..446f2600385 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2011-12-07 Sameera Deshpande + + * gas/arm/thumb2_ldstd_unpredictable.d: New testcase. + * gas/arm/thumb2_ldstd_unpredictable.l: Likewise. + * gas/arm/thumb2_ldstd_unpredictable.s: Likewise. + * gas/testsuite/gas/arm/sp-pc-validations-bad-t.l: Update + testcase. + * gas/testsuite/gas/arm/sp-pc-validations-bad-t.s: Likewise. + 2011-11-07 Matthew Gretton-Dann * gas/arm/neon-suffix-bad.l: Add testcase. diff --git a/gas/testsuite/gas/arm/sp-pc-validations-bad-t.l b/gas/testsuite/gas/arm/sp-pc-validations-bad-t.l index 120f6f3f7cc..d20f1c5d981 100644 --- a/gas/testsuite/gas/arm/sp-pc-validations-bad-t.l +++ b/gas/testsuite/gas/arm/sp-pc-validations-bad-t.l @@ -37,207 +37,213 @@ [^:]*:76: Error: r13 not allowed here -- `ldrbt sp,\[r0,#4\]' [^:]*:79: Error: r15 not allowed here -- `ldrd pc,r0,\[r1\]' [^:]*:80: Error: r13 not allowed here -- `ldrd sp,r0,\[r1\]' -[^:]*:81: Error: r15 not allowed here -- `ldrd r0,pc,\[r1\]' -[^:]*:82: Error: r13 not allowed here -- `ldrd r0,sp,\[r1\]' -[^:]*:83: Error: r15 not allowed here -- `ldrd pc,r0,\[r1\],#4' -[^:]*:84: Error: r13 not allowed here -- `ldrd sp,r0,\[r1\],#4' -[^:]*:85: Error: r15 not allowed here -- `ldrd r0,pc,\[r1\],#4' -[^:]*:86: Error: r13 not allowed here -- `ldrd r0,sp,\[r1\],#4' -[^:]*:87: Error: r15 not allowed here -- `ldrd pc,r0,\[r1,#4\]!' -[^:]*:88: Error: r13 not allowed here -- `ldrd sp,r0,\[r1,#4\]!' -[^:]*:89: Error: r15 not allowed here -- `ldrd r0,pc,\[r1,#4\]!' -[^:]*:90: Error: r13 not allowed here -- `ldrd r0,sp,\[r1,#4\]!' -[^:]*:93: Error: r15 not allowed here -- `ldrd pc,r0,label' -[^:]*:94: Error: r13 not allowed here -- `ldrd sp,r0,label' -[^:]*:95: Error: r15 not allowed here -- `ldrd r0,pc,label' -[^:]*:96: Error: r13 not allowed here -- `ldrd r0,sp,label' -[^:]*:97: Error: r15 not allowed here -- `ldrd pc,r0,\[pc,#-0\]' -[^:]*:98: Error: r13 not allowed here -- `ldrd sp,r0,\[pc,#-0\]' -[^:]*:99: Error: r15 not allowed here -- `ldrd r0,pc,\[pc,#-0\]' -[^:]*:100: Error: r13 not allowed here -- `ldrd r0,sp,\[pc,#-0\]' -[^:]*:105: Error: r15 not allowed here -- `ldrex pc,\[r0\]' -[^:]*:106: Error: r13 not allowed here -- `ldrex sp,\[r0\]' -[^:]*:107: Error: r15 not allowed here -- `ldrex r0,\[pc\]' -[^:]*:108: Error: r15 not allowed here -- `ldrexb pc,\[r0\]' -[^:]*:109: Error: r13 not allowed here -- `ldrexb sp,\[r0\]' -[^:]*:110: Error: r15 not allowed here -- `ldrexb r0,\[pc\]' -[^:]*:111: Error: r15 not allowed here -- `ldrexd pc,r0,\[r1\]' -[^:]*:112: Error: r13 not allowed here -- `ldrexd sp,r0,\[r1\]' -[^:]*:113: Error: r15 not allowed here -- `ldrexd r0,pc,\[r1\]' -[^:]*:114: Error: r13 not allowed here -- `ldrexd r0,sp,\[r1\]' -[^:]*:115: Error: r15 not allowed here -- `ldrexd r0,r1,\[pc\]' -[^:]*:116: Error: r15 not allowed here -- `ldrexh pc,\[r0\]' -[^:]*:117: Error: r13 not allowed here -- `ldrexh sp,\[r0\]' -[^:]*:118: Error: r15 not allowed here -- `ldrexh r0,\[pc\]' -[^:]*:121: Error: r15 not allowed here -- `ldrh pc,\[r0\]' -[^:]*:122: Error: r15 not allowed here -- `ldrh pc,\[r0,#4\]' -[^:]*:125: Error: r15 not allowed here -- `ldrh.w pc,\[r0\]' -[^:]*:126: Error: r15 not allowed here -- `ldrh.w pc,\[r0,#4\]' -[^:]*:127: Error: r13 not allowed here -- `ldrh.w sp,\[r0\]' -[^:]*:128: Error: r13 not allowed here -- `ldrh.w sp,\[r0,#4\]' -[^:]*:129: Error: r15 not allowed here -- `ldrh pc,\[r0,#-3\]' -[^:]*:131: Error: r15 not allowed here -- `ldrh pc,\[r0\],#4' -[^:]*:132: Error: r13 not allowed here -- `ldrh sp,\[r0\],#4' -[^:]*:133: Error: r15 not allowed here -- `ldrh pc,\[r0,#4\]!' -[^:]*:134: Error: r13 not allowed here -- `ldrh sp,\[r0,#4\]!' -[^:]*:137: Error: r15 not allowed here -- `ldrh pc,label' -[^:]*:138: Error: r15 not allowed here -- `ldrh pc,\[pc,#-0\]' -[^:]*:139: Error: r13 not allowed here -- `ldrh sp,label' -[^:]*:140: Error: r13 not allowed here -- `ldrh sp,\[pc,#-0\]' -[^:]*:143: Error: r15 not allowed here -- `ldrh pc,\[r0,r1\]' -[^:]*:144: Error: cannot use register index with PC-relative addressing -- `ldrh r0,\[pc,r1\]' -[^:]*:145: Error: r15 not allowed here -- `ldrh r0,\[r1,pc\]' -[^:]*:146: Error: r15 not allowed here -- `ldrh.w pc,\[r0,r1,LSL#1\]' -[^:]*:147: Error: r13 not allowed here -- `ldrh.w sp,\[r0,r1,LSL#1\]' -[^:]*:148: Error: r15 not allowed here -- `ldrh.w r2,\[r0,pc,LSL#1\]' -[^:]*:149: Error: r13 not allowed here -- `ldrh.w r2,\[r0,sp,LSL#1\]' -[^:]*:152: Error: r15 not allowed here -- `ldrht pc,\[r0,#4\]' -[^:]*:153: Error: r13 not allowed here -- `ldrht sp,\[r0,#4\]' -[^:]*:156: Error: r15 not allowed here -- `ldrsb pc,\[r0,#4\]' -[^:]*:158: Error: r13 not allowed here -- `ldrsb sp,\[r0,#4\]' -[^:]*:159: Error: r15 not allowed here -- `ldrsb pc,\[r0,#-4\]' -[^:]*:160: Error: r13 not allowed here -- `ldrsb sp,\[r0,#-4\]' -[^:]*:161: Error: r15 not allowed here -- `ldrsb pc,\[r0\],#4' -[^:]*:162: Error: r13 not allowed here -- `ldrsb sp,\[r0\],#4' -[^:]*:163: Error: r15 not allowed here -- `ldrsb pc,\[r0,#4\]!' -[^:]*:164: Error: r13 not allowed here -- `ldrsb sp,\[r0,#4\]!' -[^:]*:167: Error: r15 not allowed here -- `ldrsb pc,label' -[^:]*:168: Error: r15 not allowed here -- `ldrsb pc,\[pc,#-0\]' -[^:]*:169: Error: r13 not allowed here -- `ldrsb sp,label' -[^:]*:170: Error: r13 not allowed here -- `ldrsb sp,\[pc,#-0\]' -[^:]*:173: Error: r15 not allowed here -- `ldrsb pc,\[r0,r1\]' -[^:]*:174: Error: cannot use register index with PC-relative addressing -- `ldrsb r0,\[pc,r1\]' -[^:]*:175: Error: r15 not allowed here -- `ldrsb r0,\[r1,pc\]' -[^:]*:176: Error: r15 not allowed here -- `ldrsb.w pc,\[r0,r1,LSL#2\]' -[^:]*:178: Error: r13 not allowed here -- `ldrsb.w sp,\[r0,r1,LSL#2\]' -[^:]*:179: Error: r15 not allowed here -- `ldrsb.w r2,\[r0,pc,LSL#2\]' -[^:]*:180: Error: r13 not allowed here -- `ldrsb.w r2,\[r0,sp,LSL#2\]' -[^:]*:184: Error: r15 not allowed here -- `ldrsbt pc,\[r0,#4\]' -[^:]*:185: Error: r13 not allowed here -- `ldrsbt sp,\[r0,#4\]' -[^:]*:189: Error: r15 not allowed here -- `ldrsh pc,\[r0,#4\]' -[^:]*:190: Error: r13 not allowed here -- `ldrsh sp,\[r0,#4\]' -[^:]*:191: Error: r15 not allowed here -- `ldrsh pc,\[r0,#-4\]' -[^:]*:192: Error: r15 not allowed here -- `ldrsh pc,\[r0\],#4' -[^:]*:193: Error: r15 not allowed here -- `ldrsh pc,\[r0,#4\]!' -[^:]*:194: Error: r13 not allowed here -- `ldrsh sp,\[r0,#-4\]' -[^:]*:195: Error: r13 not allowed here -- `ldrsh sp,\[r0\],#4' -[^:]*:196: Error: r13 not allowed here -- `ldrsh sp,\[r0,#4\]!' -[^:]*:199: Error: r15 not allowed here -- `ldrsh pc,label' -[^:]*:200: Error: r13 not allowed here -- `ldrsh sp,label' -[^:]*:201: Error: r13 not allowed here -- `ldrsh sp,\[pc,#-0\]' -[^:]*:204: Error: r15 not allowed here -- `ldrsh pc,\[r0,r1\]' -[^:]*:205: Error: cannot use register index with PC-relative addressing -- `ldrsh r0,\[pc,r1\]' -[^:]*:206: Error: r15 not allowed here -- `ldrsh r0,\[r1,pc\]' -[^:]*:208: Error: r15 not allowed here -- `ldrsh.w pc,\[r0,r1,LSL#3\]' -[^:]*:209: Error: r13 not allowed here -- `ldrsh.w sp,\[r0,r1,LSL#3\]' -[^:]*:210: Error: r13 not allowed here -- `ldrsh.w r0,\[r1,sp,LSL#3\]' -[^:]*:211: Error: r15 not allowed here -- `ldrsh.w r0,\[r1,pc,LSL#3\]' -[^:]*:215: Error: r15 not allowed here -- `ldrsht pc,\[r0,#4\]' -[^:]*:216: Error: r13 not allowed here -- `ldrsht sp,\[r0,#4\]' -[^:]*:220: Error: r15 not allowed here -- `ldrt pc,\[r0,#4\]' -[^:]*:221: Error: r13 not allowed here -- `ldrt sp,\[r0,#4\]' -[^:]*:226: Error: r15 not allowed here -- `str pc,\[r0,#4\]' -[^:]*:227: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,#4\]' -[^:]*:228: Error: cannot use register index with PC-relative addressing -- `str r0,\[pc,#-4\]' -[^:]*:229: Error: cannot use post-indexing with PC-relative addressing -- `str r0,\[pc\],#4' -[^:]*:230: Error: cannot use writeback with PC-relative addressing -- `str r0,\[pc,#4\]!' -[^:]*:233: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,r1\]' -[^:]*:234: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,r1,LSL#2\]' -[^:]*:240: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,#4\]' -[^:]*:241: Error: r15 not allowed here -- `strb.w pc,\[r0,#4\]' -[^:]*:242: Error: r13 not allowed here -- `strb.w sp,\[r0,#4\]' -[^:]*:243: Error: cannot use register index with PC-relative addressing -- `strb r0,\[pc,#-4\]' -[^:]*:244: Error: cannot use post-indexing with PC-relative addressing -- `strb r0,\[pc\],#4' -[^:]*:245: Error: cannot use writeback with PC-relative addressing -- `strb r0,\[pc,#4\]!' -[^:]*:246: Error: r15 not allowed here -- `strb pc,\[r0,#-4\]' -[^:]*:247: Error: r15 not allowed here -- `strb pc,\[r0\],#4' -[^:]*:248: Error: r15 not allowed here -- `strb pc,\[r0,#4\]!' -[^:]*:249: Error: r13 not allowed here -- `strb sp,\[r0,#-4\]' -[^:]*:250: Error: r13 not allowed here -- `strb sp,\[r0\],#4' -[^:]*:251: Error: r13 not allowed here -- `strb sp,\[r0,#4\]!' -[^:]*:254: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,r1\]' -[^:]*:255: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,r1,LSL#2\]' -[^:]*:256: Error: r15 not allowed here -- `strb.w pc,\[r0,r1\]' -[^:]*:257: Error: r15 not allowed here -- `strb.w pc,\[r0,r1,LSL#2\]' -[^:]*:258: Error: r13 not allowed here -- `strb.w sp,\[r0,r1\]' -[^:]*:259: Error: r13 not allowed here -- `strb.w sp,\[r0,r1,LSL#2\]' -[^:]*:260: Error: r15 not allowed here -- `strb.w r0,\[r1,pc\]' -[^:]*:261: Error: r15 not allowed here -- `strb.w r0,\[r1,pc,LSL#2\]' -[^:]*:262: Error: r13 not allowed here -- `strb.w r0,\[r1,sp\]' -[^:]*:263: Error: r13 not allowed here -- `strb.w r0,\[r1,sp,LSL#2\]' -[^:]*:266: Error: cannot use register index with PC-relative addressing -- `strbt r0,\[pc,#4\]' -[^:]*:267: Error: r15 not allowed here -- `strbt pc,\[r0,#4\]' -[^:]*:268: Error: r13 not allowed here -- `strbt sp,\[r0,#4\]' -[^:]*:271: Error: cannot use register index with PC-relative addressing -- `strd r0,r1,\[pc,#4\]' -[^:]*:272: Error: cannot use post-indexing with PC-relative addressing -- `strd r0,r1,\[pc\],#4' -[^:]*:273: Error: cannot use writeback with PC-relative addressing -- `strd r0,r1,\[pc,#4\]!' -[^:]*:274: Error: r15 not allowed here -- `strd pc,r0,\[r1,#4\]' -[^:]*:275: Error: r15 not allowed here -- `strd pc,r0,\[r1\],#4' -[^:]*:276: Error: r15 not allowed here -- `strd pc,r0,\[r1,#4\]!' -[^:]*:277: Error: r13 not allowed here -- `strd sp,r0,\[r1,#4\]' -[^:]*:278: Error: r13 not allowed here -- `strd sp,r0,\[r1\],#4' -[^:]*:279: Error: r13 not allowed here -- `strd sp,r0,\[r1,#4\]!' -[^:]*:280: Error: r15 not allowed here -- `strd r0,pc,\[r1,#4\]' -[^:]*:281: Error: r15 not allowed here -- `strd r0,pc,\[r1\],#4' -[^:]*:282: Error: r15 not allowed here -- `strd r0,pc,\[r1,#4\]!' -[^:]*:283: Error: r13 not allowed here -- `strd r0,sp,\[r1,#4\]' -[^:]*:284: Error: r13 not allowed here -- `strd r0,sp,\[r1\],#4' -[^:]*:285: Error: r13 not allowed here -- `strd r0,sp,\[r1,#4\]!' -[^:]*:291: Error: r15 not allowed here -- `strex pc,r0,\[r1\]' -[^:]*:292: Error: r15 not allowed here -- `strex pc,r0,\[r1,#4\]' -[^:]*:293: Error: r13 not allowed here -- `strex sp,r0,\[r1\]' -[^:]*:294: Error: r13 not allowed here -- `strex sp,r0,\[r1,#4\]' -[^:]*:295: Error: r15 not allowed here -- `strex r0,pc,\[r1\]' -[^:]*:296: Error: r15 not allowed here -- `strex r0,pc,\[r1,#4\]' -[^:]*:297: Error: r13 not allowed here -- `strex r0,sp,\[r1\]' -[^:]*:298: Error: r13 not allowed here -- `strex r0,sp,\[r1,#4\]' -[^:]*:299: Error: r15 not allowed here -- `strex r0,r1,\[pc\]' -[^:]*:300: Error: r15 not allowed here -- `strex r0,r1,\[pc,#4\]' -[^:]*:303: Error: r15 not allowed here -- `strexb pc,r0,\[r1\]' -[^:]*:304: Error: r13 not allowed here -- `strexb sp,r0,\[r1\]' -[^:]*:305: Error: r15 not allowed here -- `strexb r0,pc,\[r1\]' -[^:]*:306: Error: r13 not allowed here -- `strexb r0,sp,\[r1\]' -[^:]*:307: Error: r15 not allowed here -- `strexb r0,r1,\[pc\]' -[^:]*:310: Error: r15 not allowed here -- `strexd pc,r0,r1,\[r2\]' -[^:]*:311: Error: r13 not allowed here -- `strexd sp,r0,r1,\[r2\]' -[^:]*:312: Error: r15 not allowed here -- `strexd r0,pc,r1,\[r2\]' -[^:]*:313: Error: r13 not allowed here -- `strexd r0,sp,r1,\[r2\]' -[^:]*:314: Error: r15 not allowed here -- `strexd r0,r1,pc,\[r2\]' -[^:]*:315: Error: r13 not allowed here -- `strexd r0,r1,sp,\[r2\]' -[^:]*:316: Error: r15 not allowed here -- `strexd r0,r1,r2,\[pc\]' -[^:]*:319: Error: r15 not allowed here -- `strexh pc,r0,\[r1\]' -[^:]*:320: Error: r13 not allowed here -- `strexh sp,r0,\[r1\]' -[^:]*:321: Error: r15 not allowed here -- `strexh r0,pc,\[r1\]' -[^:]*:322: Error: r13 not allowed here -- `strexh r0,sp,\[r1\]' -[^:]*:323: Error: r15 not allowed here -- `strexh r0,r1,\[pc\]' -[^:]*:326: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc\]' -[^:]*:327: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,#4\]' -[^:]*:328: Error: cannot use register index with PC-relative addressing -- `strh r0,\[pc,#-4\]' -[^:]*:329: Error: cannot use post-indexing with PC-relative addressing -- `strh r0,\[pc\],#4' -[^:]*:330: Error: cannot use writeback with PC-relative addressing -- `strh r0,\[pc,#4\]!' -[^:]*:333: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,r1\]' -[^:]*:334: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,r1,LSL#2\]' -[^:]*:335: Error: r15 not allowed here -- `strh.w pc,\[r0,#4\]' -[^:]*:336: Error: r15 not allowed here -- `strh.w pc,\[r0\]' -[^:]*:337: Error: r13 not allowed here -- `strh.w sp,\[r0,#4\]' -[^:]*:338: Error: r13 not allowed here -- `strh.w sp,\[r0\]' -[^:]*:339: Error: r15 not allowed here -- `strh pc,\[r0,#-4\]' -[^:]*:340: Error: r15 not allowed here -- `strh pc,\[r0\],#4' -[^:]*:341: Error: r15 not allowed here -- `strh pc,\[r0,#4\]!' -[^:]*:342: Error: r13 not allowed here -- `strh sp,\[r0,#-4\]' -[^:]*:343: Error: r13 not allowed here -- `strh sp,\[r0\],#4' -[^:]*:344: Error: r13 not allowed here -- `strh sp,\[r0,#4\]!' -[^:]*:345: Error: r15 not allowed here -- `strh.w pc,\[r0,r1\]' -[^:]*:346: Error: r13 not allowed here -- `strh.w sp,\[r0,r1\]' -[^:]*:347: Error: r15 not allowed here -- `strh.w r0,\[r1,pc\]' -[^:]*:348: Error: r13 not allowed here -- `strh.w r0,\[r1,sp\]' -[^:]*:349: Error: r15 not allowed here -- `strh.w pc,\[r0,r1,LSL#2\]' -[^:]*:350: Error: r13 not allowed here -- `strh.w sp,\[r0,r1,LSL#2\]' -[^:]*:351: Error: r15 not allowed here -- `strh.w r0,\[r1,pc,LSL#2\]' -[^:]*:352: Error: r13 not allowed here -- `strh.w r0,\[r1,sp,LSL#2\]' -[^:]*:355: Error: cannot use register index with PC-relative addressing -- `strht r0,\[pc,#4\]' -[^:]*:356: Error: r15 not allowed here -- `strht pc,\[r0,#4\]' -[^:]*:357: Error: r13 not allowed here -- `strht sp,\[pc,#4\]' -[^:]*:360: Error: cannot use register index with PC-relative addressing -- `strt r0,\[pc,#4\]' -[^:]*:361: Error: r15 not allowed here -- `strt pc,\[r0,#4\]' -[^:]*:362: Error: r13 not allowed here -- `strt sp,\[r0,#4\]' +[^:]*:81: Error: r12 not allowed here -- `ldrd r12,\[r1\]' +[^:]*:82: Error: r14 not allowed here -- `ldrd r14,\[r1\]' +[^:]*:83: Error: r15 not allowed here -- `ldrd r0,pc,\[r1\]' +[^:]*:84: Error: r13 not allowed here -- `ldrd r0,sp,\[r1\]' +[^:]*:85: Error: r15 not allowed here -- `ldrd pc,r0,\[r1\],#4' +[^:]*:86: Error: r13 not allowed here -- `ldrd sp,r0,\[r1\],#4' +[^:]*:87: Error: r15 not allowed here -- `ldrd r0,pc,\[r1\],#4' +[^:]*:88: Error: r13 not allowed here -- `ldrd r0,sp,\[r1\],#4' +[^:]*:89: Error: r12 not allowed here -- `ldrd r12,\[r1\],#4' +[^:]*:90: Error: r14 not allowed here -- `ldrd r14,\[r1\],#4' +[^:]*:91: Error: r15 not allowed here -- `ldrd pc,r0,\[r1,#4\]!' +[^:]*:92: Error: r13 not allowed here -- `ldrd sp,r0,\[r1,#4\]!' +[^:]*:93: Error: r15 not allowed here -- `ldrd r0,pc,\[r1,#4\]!' +[^:]*:94: Error: r13 not allowed here -- `ldrd r0,sp,\[r1,#4\]!' +[^:]*:95: Error: r12 not allowed here -- `ldrd r12,\[r1,#4\]!' +[^:]*:96: Error: r14 not allowed here -- `ldrd r14,\[r1,#4\]!' +[^:]*:99: Error: r15 not allowed here -- `ldrd pc,r0,label' +[^:]*:100: Error: r13 not allowed here -- `ldrd sp,r0,label' +[^:]*:101: Error: r15 not allowed here -- `ldrd r0,pc,label' +[^:]*:102: Error: r13 not allowed here -- `ldrd r0,sp,label' +[^:]*:103: Error: r15 not allowed here -- `ldrd pc,r0,\[pc,#-0\]' +[^:]*:104: Error: r13 not allowed here -- `ldrd sp,r0,\[pc,#-0\]' +[^:]*:105: Error: r15 not allowed here -- `ldrd r0,pc,\[pc,#-0\]' +[^:]*:106: Error: r13 not allowed here -- `ldrd r0,sp,\[pc,#-0\]' +[^:]*:111: Error: r15 not allowed here -- `ldrex pc,\[r0\]' +[^:]*:112: Error: r13 not allowed here -- `ldrex sp,\[r0\]' +[^:]*:113: Error: r15 not allowed here -- `ldrex r0,\[pc\]' +[^:]*:114: Error: r15 not allowed here -- `ldrexb pc,\[r0\]' +[^:]*:115: Error: r13 not allowed here -- `ldrexb sp,\[r0\]' +[^:]*:116: Error: r15 not allowed here -- `ldrexb r0,\[pc\]' +[^:]*:117: Error: r15 not allowed here -- `ldrexd pc,r0,\[r1\]' +[^:]*:118: Error: r13 not allowed here -- `ldrexd sp,r0,\[r1\]' +[^:]*:119: Error: r15 not allowed here -- `ldrexd r0,pc,\[r1\]' +[^:]*:120: Error: r13 not allowed here -- `ldrexd r0,sp,\[r1\]' +[^:]*:121: Error: r15 not allowed here -- `ldrexd r0,r1,\[pc\]' +[^:]*:122: Error: r15 not allowed here -- `ldrexh pc,\[r0\]' +[^:]*:123: Error: r13 not allowed here -- `ldrexh sp,\[r0\]' +[^:]*:124: Error: r15 not allowed here -- `ldrexh r0,\[pc\]' +[^:]*:127: Error: r15 not allowed here -- `ldrh pc,\[r0\]' +[^:]*:128: Error: r15 not allowed here -- `ldrh pc,\[r0,#4\]' +[^:]*:131: Error: r15 not allowed here -- `ldrh.w pc,\[r0\]' +[^:]*:132: Error: r15 not allowed here -- `ldrh.w pc,\[r0,#4\]' +[^:]*:133: Error: r13 not allowed here -- `ldrh.w sp,\[r0\]' +[^:]*:134: Error: r13 not allowed here -- `ldrh.w sp,\[r0,#4\]' +[^:]*:135: Error: r15 not allowed here -- `ldrh pc,\[r0,#-3\]' +[^:]*:137: Error: r15 not allowed here -- `ldrh pc,\[r0\],#4' +[^:]*:138: Error: r13 not allowed here -- `ldrh sp,\[r0\],#4' +[^:]*:139: Error: r15 not allowed here -- `ldrh pc,\[r0,#4\]!' +[^:]*:140: Error: r13 not allowed here -- `ldrh sp,\[r0,#4\]!' +[^:]*:143: Error: r15 not allowed here -- `ldrh pc,label' +[^:]*:144: Error: r15 not allowed here -- `ldrh pc,\[pc,#-0\]' +[^:]*:145: Error: r13 not allowed here -- `ldrh sp,label' +[^:]*:146: Error: r13 not allowed here -- `ldrh sp,\[pc,#-0\]' +[^:]*:149: Error: r15 not allowed here -- `ldrh pc,\[r0,r1\]' +[^:]*:150: Error: cannot use register index with PC-relative addressing -- `ldrh r0,\[pc,r1\]' +[^:]*:151: Error: r15 not allowed here -- `ldrh r0,\[r1,pc\]' +[^:]*:152: Error: r15 not allowed here -- `ldrh.w pc,\[r0,r1,LSL#1\]' +[^:]*:153: Error: r13 not allowed here -- `ldrh.w sp,\[r0,r1,LSL#1\]' +[^:]*:154: Error: r15 not allowed here -- `ldrh.w r2,\[r0,pc,LSL#1\]' +[^:]*:155: Error: r13 not allowed here -- `ldrh.w r2,\[r0,sp,LSL#1\]' +[^:]*:158: Error: r15 not allowed here -- `ldrht pc,\[r0,#4\]' +[^:]*:159: Error: r13 not allowed here -- `ldrht sp,\[r0,#4\]' +[^:]*:162: Error: r15 not allowed here -- `ldrsb pc,\[r0,#4\]' +[^:]*:164: Error: r13 not allowed here -- `ldrsb sp,\[r0,#4\]' +[^:]*:165: Error: r15 not allowed here -- `ldrsb pc,\[r0,#-4\]' +[^:]*:166: Error: r13 not allowed here -- `ldrsb sp,\[r0,#-4\]' +[^:]*:167: Error: r15 not allowed here -- `ldrsb pc,\[r0\],#4' +[^:]*:168: Error: r13 not allowed here -- `ldrsb sp,\[r0\],#4' +[^:]*:169: Error: r15 not allowed here -- `ldrsb pc,\[r0,#4\]!' +[^:]*:170: Error: r13 not allowed here -- `ldrsb sp,\[r0,#4\]!' +[^:]*:173: Error: r15 not allowed here -- `ldrsb pc,label' +[^:]*:174: Error: r15 not allowed here -- `ldrsb pc,\[pc,#-0\]' +[^:]*:175: Error: r13 not allowed here -- `ldrsb sp,label' +[^:]*:176: Error: r13 not allowed here -- `ldrsb sp,\[pc,#-0\]' +[^:]*:179: Error: r15 not allowed here -- `ldrsb pc,\[r0,r1\]' +[^:]*:180: Error: cannot use register index with PC-relative addressing -- `ldrsb r0,\[pc,r1\]' +[^:]*:181: Error: r15 not allowed here -- `ldrsb r0,\[r1,pc\]' +[^:]*:182: Error: r15 not allowed here -- `ldrsb.w pc,\[r0,r1,LSL#2\]' +[^:]*:184: Error: r13 not allowed here -- `ldrsb.w sp,\[r0,r1,LSL#2\]' +[^:]*:185: Error: r15 not allowed here -- `ldrsb.w r2,\[r0,pc,LSL#2\]' +[^:]*:186: Error: r13 not allowed here -- `ldrsb.w r2,\[r0,sp,LSL#2\]' +[^:]*:190: Error: r15 not allowed here -- `ldrsbt pc,\[r0,#4\]' +[^:]*:191: Error: r13 not allowed here -- `ldrsbt sp,\[r0,#4\]' +[^:]*:195: Error: r15 not allowed here -- `ldrsh pc,\[r0,#4\]' +[^:]*:196: Error: r13 not allowed here -- `ldrsh sp,\[r0,#4\]' +[^:]*:197: Error: r15 not allowed here -- `ldrsh pc,\[r0,#-4\]' +[^:]*:198: Error: r15 not allowed here -- `ldrsh pc,\[r0\],#4' +[^:]*:199: Error: r15 not allowed here -- `ldrsh pc,\[r0,#4\]!' +[^:]*:200: Error: r13 not allowed here -- `ldrsh sp,\[r0,#-4\]' +[^:]*:201: Error: r13 not allowed here -- `ldrsh sp,\[r0\],#4' +[^:]*:202: Error: r13 not allowed here -- `ldrsh sp,\[r0,#4\]!' +[^:]*:205: Error: r15 not allowed here -- `ldrsh pc,label' +[^:]*:206: Error: r13 not allowed here -- `ldrsh sp,label' +[^:]*:207: Error: r13 not allowed here -- `ldrsh sp,\[pc,#-0\]' +[^:]*:210: Error: r15 not allowed here -- `ldrsh pc,\[r0,r1\]' +[^:]*:211: Error: cannot use register index with PC-relative addressing -- `ldrsh r0,\[pc,r1\]' +[^:]*:212: Error: r15 not allowed here -- `ldrsh r0,\[r1,pc\]' +[^:]*:214: Error: r15 not allowed here -- `ldrsh.w pc,\[r0,r1,LSL#3\]' +[^:]*:215: Error: r13 not allowed here -- `ldrsh.w sp,\[r0,r1,LSL#3\]' +[^:]*:216: Error: r13 not allowed here -- `ldrsh.w r0,\[r1,sp,LSL#3\]' +[^:]*:217: Error: r15 not allowed here -- `ldrsh.w r0,\[r1,pc,LSL#3\]' +[^:]*:221: Error: r15 not allowed here -- `ldrsht pc,\[r0,#4\]' +[^:]*:222: Error: r13 not allowed here -- `ldrsht sp,\[r0,#4\]' +[^:]*:226: Error: r15 not allowed here -- `ldrt pc,\[r0,#4\]' +[^:]*:227: Error: r13 not allowed here -- `ldrt sp,\[r0,#4\]' +[^:]*:232: Error: r15 not allowed here -- `str pc,\[r0,#4\]' +[^:]*:233: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,#4\]' +[^:]*:234: Error: cannot use register index with PC-relative addressing -- `str r0,\[pc,#-4\]' +[^:]*:235: Error: cannot use post-indexing with PC-relative addressing -- `str r0,\[pc\],#4' +[^:]*:236: Error: cannot use writeback with PC-relative addressing -- `str r0,\[pc,#4\]!' +[^:]*:239: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,r1\]' +[^:]*:240: Error: cannot use register index with PC-relative addressing -- `str.w r0,\[pc,r1,LSL#2\]' +[^:]*:246: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,#4\]' +[^:]*:247: Error: r15 not allowed here -- `strb.w pc,\[r0,#4\]' +[^:]*:248: Error: r13 not allowed here -- `strb.w sp,\[r0,#4\]' +[^:]*:249: Error: cannot use register index with PC-relative addressing -- `strb r0,\[pc,#-4\]' +[^:]*:250: Error: cannot use post-indexing with PC-relative addressing -- `strb r0,\[pc\],#4' +[^:]*:251: Error: cannot use writeback with PC-relative addressing -- `strb r0,\[pc,#4\]!' +[^:]*:252: Error: r15 not allowed here -- `strb pc,\[r0,#-4\]' +[^:]*:253: Error: r15 not allowed here -- `strb pc,\[r0\],#4' +[^:]*:254: Error: r15 not allowed here -- `strb pc,\[r0,#4\]!' +[^:]*:255: Error: r13 not allowed here -- `strb sp,\[r0,#-4\]' +[^:]*:256: Error: r13 not allowed here -- `strb sp,\[r0\],#4' +[^:]*:257: Error: r13 not allowed here -- `strb sp,\[r0,#4\]!' +[^:]*:260: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,r1\]' +[^:]*:261: Error: cannot use register index with PC-relative addressing -- `strb.w r0,\[pc,r1,LSL#2\]' +[^:]*:262: Error: r15 not allowed here -- `strb.w pc,\[r0,r1\]' +[^:]*:263: Error: r15 not allowed here -- `strb.w pc,\[r0,r1,LSL#2\]' +[^:]*:264: Error: r13 not allowed here -- `strb.w sp,\[r0,r1\]' +[^:]*:265: Error: r13 not allowed here -- `strb.w sp,\[r0,r1,LSL#2\]' +[^:]*:266: Error: r15 not allowed here -- `strb.w r0,\[r1,pc\]' +[^:]*:267: Error: r15 not allowed here -- `strb.w r0,\[r1,pc,LSL#2\]' +[^:]*:268: Error: r13 not allowed here -- `strb.w r0,\[r1,sp\]' +[^:]*:269: Error: r13 not allowed here -- `strb.w r0,\[r1,sp,LSL#2\]' +[^:]*:272: Error: cannot use register index with PC-relative addressing -- `strbt r0,\[pc,#4\]' +[^:]*:273: Error: r15 not allowed here -- `strbt pc,\[r0,#4\]' +[^:]*:274: Error: r13 not allowed here -- `strbt sp,\[r0,#4\]' +[^:]*:277: Error: cannot use register index with PC-relative addressing -- `strd r0,r1,\[pc,#4\]' +[^:]*:278: Error: cannot use post-indexing with PC-relative addressing -- `strd r0,r1,\[pc\],#4' +[^:]*:279: Error: cannot use writeback with PC-relative addressing -- `strd r0,r1,\[pc,#4\]!' +[^:]*:280: Error: r15 not allowed here -- `strd pc,r0,\[r1,#4\]' +[^:]*:281: Error: r15 not allowed here -- `strd pc,r0,\[r1\],#4' +[^:]*:282: Error: r15 not allowed here -- `strd pc,r0,\[r1,#4\]!' +[^:]*:283: Error: r13 not allowed here -- `strd sp,r0,\[r1,#4\]' +[^:]*:284: Error: r13 not allowed here -- `strd sp,r0,\[r1\],#4' +[^:]*:285: Error: r13 not allowed here -- `strd sp,r0,\[r1,#4\]!' +[^:]*:286: Error: r15 not allowed here -- `strd r0,pc,\[r1,#4\]' +[^:]*:287: Error: r15 not allowed here -- `strd r0,pc,\[r1\],#4' +[^:]*:288: Error: r15 not allowed here -- `strd r0,pc,\[r1,#4\]!' +[^:]*:289: Error: r13 not allowed here -- `strd r0,sp,\[r1,#4\]' +[^:]*:290: Error: r13 not allowed here -- `strd r0,sp,\[r1\],#4' +[^:]*:291: Error: r13 not allowed here -- `strd r0,sp,\[r1,#4\]!' +[^:]*:297: Error: r15 not allowed here -- `strex pc,r0,\[r1\]' +[^:]*:298: Error: r15 not allowed here -- `strex pc,r0,\[r1,#4\]' +[^:]*:299: Error: r13 not allowed here -- `strex sp,r0,\[r1\]' +[^:]*:300: Error: r13 not allowed here -- `strex sp,r0,\[r1,#4\]' +[^:]*:301: Error: r15 not allowed here -- `strex r0,pc,\[r1\]' +[^:]*:302: Error: r15 not allowed here -- `strex r0,pc,\[r1,#4\]' +[^:]*:303: Error: r13 not allowed here -- `strex r0,sp,\[r1\]' +[^:]*:304: Error: r13 not allowed here -- `strex r0,sp,\[r1,#4\]' +[^:]*:305: Error: r15 not allowed here -- `strex r0,r1,\[pc\]' +[^:]*:306: Error: r15 not allowed here -- `strex r0,r1,\[pc,#4\]' +[^:]*:309: Error: r15 not allowed here -- `strexb pc,r0,\[r1\]' +[^:]*:310: Error: r13 not allowed here -- `strexb sp,r0,\[r1\]' +[^:]*:311: Error: r15 not allowed here -- `strexb r0,pc,\[r1\]' +[^:]*:312: Error: r13 not allowed here -- `strexb r0,sp,\[r1\]' +[^:]*:313: Error: r15 not allowed here -- `strexb r0,r1,\[pc\]' +[^:]*:316: Error: r15 not allowed here -- `strexd pc,r0,r1,\[r2\]' +[^:]*:317: Error: r13 not allowed here -- `strexd sp,r0,r1,\[r2\]' +[^:]*:318: Error: r15 not allowed here -- `strexd r0,pc,r1,\[r2\]' +[^:]*:319: Error: r13 not allowed here -- `strexd r0,sp,r1,\[r2\]' +[^:]*:320: Error: r15 not allowed here -- `strexd r0,r1,pc,\[r2\]' +[^:]*:321: Error: r13 not allowed here -- `strexd r0,r1,sp,\[r2\]' +[^:]*:322: Error: r15 not allowed here -- `strexd r0,r1,r2,\[pc\]' +[^:]*:325: Error: r15 not allowed here -- `strexh pc,r0,\[r1\]' +[^:]*:326: Error: r13 not allowed here -- `strexh sp,r0,\[r1\]' +[^:]*:327: Error: r15 not allowed here -- `strexh r0,pc,\[r1\]' +[^:]*:328: Error: r13 not allowed here -- `strexh r0,sp,\[r1\]' +[^:]*:329: Error: r15 not allowed here -- `strexh r0,r1,\[pc\]' +[^:]*:332: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc\]' +[^:]*:333: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,#4\]' +[^:]*:334: Error: cannot use register index with PC-relative addressing -- `strh r0,\[pc,#-4\]' +[^:]*:335: Error: cannot use post-indexing with PC-relative addressing -- `strh r0,\[pc\],#4' +[^:]*:336: Error: cannot use writeback with PC-relative addressing -- `strh r0,\[pc,#4\]!' +[^:]*:339: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,r1\]' +[^:]*:340: Error: cannot use register index with PC-relative addressing -- `strh.w r0,\[pc,r1,LSL#2\]' +[^:]*:341: Error: r15 not allowed here -- `strh.w pc,\[r0,#4\]' +[^:]*:342: Error: r15 not allowed here -- `strh.w pc,\[r0\]' +[^:]*:343: Error: r13 not allowed here -- `strh.w sp,\[r0,#4\]' +[^:]*:344: Error: r13 not allowed here -- `strh.w sp,\[r0\]' +[^:]*:345: Error: r15 not allowed here -- `strh pc,\[r0,#-4\]' +[^:]*:346: Error: r15 not allowed here -- `strh pc,\[r0\],#4' +[^:]*:347: Error: r15 not allowed here -- `strh pc,\[r0,#4\]!' +[^:]*:348: Error: r13 not allowed here -- `strh sp,\[r0,#-4\]' +[^:]*:349: Error: r13 not allowed here -- `strh sp,\[r0\],#4' +[^:]*:350: Error: r13 not allowed here -- `strh sp,\[r0,#4\]!' +[^:]*:351: Error: r15 not allowed here -- `strh.w pc,\[r0,r1\]' +[^:]*:352: Error: r13 not allowed here -- `strh.w sp,\[r0,r1\]' +[^:]*:353: Error: r15 not allowed here -- `strh.w r0,\[r1,pc\]' +[^:]*:354: Error: r13 not allowed here -- `strh.w r0,\[r1,sp\]' +[^:]*:355: Error: r15 not allowed here -- `strh.w pc,\[r0,r1,LSL#2\]' +[^:]*:356: Error: r13 not allowed here -- `strh.w sp,\[r0,r1,LSL#2\]' +[^:]*:357: Error: r15 not allowed here -- `strh.w r0,\[r1,pc,LSL#2\]' +[^:]*:358: Error: r13 not allowed here -- `strh.w r0,\[r1,sp,LSL#2\]' +[^:]*:361: Error: cannot use register index with PC-relative addressing -- `strht r0,\[pc,#4\]' +[^:]*:362: Error: r15 not allowed here -- `strht pc,\[r0,#4\]' +[^:]*:363: Error: r13 not allowed here -- `strht sp,\[pc,#4\]' +[^:]*:366: Error: cannot use register index with PC-relative addressing -- `strt r0,\[pc,#4\]' +[^:]*:367: Error: r15 not allowed here -- `strt pc,\[r0,#4\]' +[^:]*:368: Error: r13 not allowed here -- `strt sp,\[r0,#4\]' diff --git a/gas/testsuite/gas/arm/sp-pc-validations-bad-t.s b/gas/testsuite/gas/arm/sp-pc-validations-bad-t.s index 4252cba0b6e..0b155fbdffd 100644 --- a/gas/testsuite/gas/arm/sp-pc-validations-bad-t.s +++ b/gas/testsuite/gas/arm/sp-pc-validations-bad-t.s @@ -78,16 +78,22 @@ ldrbt sp, [r0, #4] @ ditto @ LDRD (immediate) ldrd pc, r0, [r1] @ BadReg ldrd sp, r0, [r1] @ ditto +ldrd r12, [r1] @ ditto +ldrd r14, [r1] @ ditto ldrd r0, pc, [r1] @ ditto ldrd r0, sp, [r1] @ ditto ldrd pc, r0, [r1], #4 @ ditto ldrd sp, r0, [r1], #4 @ ditto ldrd r0, pc, [r1], #4 @ ditto ldrd r0, sp, [r1], #4 @ ditto +ldrd r12, [r1], #4 @ ditto +ldrd r14, [r1], #4 @ ditto ldrd pc, r0, [r1, #4]! @ ditto ldrd sp, r0, [r1, #4]! @ ditto ldrd r0, pc, [r1, #4]! @ ditto ldrd r0, sp, [r1, #4]! @ ditto +ldrd r12, [r1, #4]! @ ditto +ldrd r14, [r1, #4]! @ ditto @ LDRD (literal) ldrd pc, r0, label @ BadReg diff --git a/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.d b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.d new file mode 100644 index 00000000000..0f4293e173d --- /dev/null +++ b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.d @@ -0,0 +1,2 @@ +# name: Unpredictable LDRD and STRD instructions. - Thumb-2 +# error-output: thumb2_ldstd_unpredictable.l diff --git a/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.l b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.l new file mode 100644 index 00000000000..632ecd40179 --- /dev/null +++ b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.l @@ -0,0 +1,9 @@ +[^:]*: Assembler messages: +[^:]*:5: Warning: base register written back, and overlaps one of transfer registers +[^:]*:6: Warning: base register written back, and overlaps one of transfer registers +[^:]*:7: Warning: base register written back, and overlaps one of transfer registers +[^:]*:8: Warning: base register written back, and overlaps one of transfer registers +[^:]*:10: Warning: base register written back, and overlaps one of transfer registers +[^:]*:11: Warning: base register written back, and overlaps one of transfer registers +[^:]*:12: Warning: base register written back, and overlaps one of transfer registers +[^:]*:13: Warning: base register written back, and overlaps one of transfer registers diff --git a/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.s b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.s new file mode 100644 index 00000000000..bc81b7a6a4f --- /dev/null +++ b/gas/testsuite/gas/arm/thumb2_ldstd_unpredictable.s @@ -0,0 +1,13 @@ + .syntax unified + .cpu cortex-a9 + .text + .thumb + strd r10,r11,[r10], #4 @ Unpredictable + strd r10,r11,[r11], #4 @ Ditto + strd r4,r6,[r4, #4]! @ Ditto + strd r4,r6,[r6, #4]! @ Ditto + + ldrd r4,r6,[r4, #4]! @ Ditto + ldrd r4,r6,[r6, #4]! @ Ditto + ldrd r10,r11,[r10], #4 @ Ditto + ldrd r10,r11,[r11], #4 @ Ditto