2011-12-07 Sameera Deshpande <sameera.deshpande@arm.com>

* 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.
This commit is contained in:
Matthew Gretton-Dann 2011-12-07 16:58:35 +00:00
parent ad6cec4372
commit bd340a044c
8 changed files with 263 additions and 204 deletions

View File

@ -1,3 +1,7 @@
2011-12-07 Sameera Deshpande <sameera.deshpande@arm.com>
* config/tc-arm.c (do_t_ldstd): Warn for unpredictable cases.
2011-11-07 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* config/tc-arm.c (ARM_IT_MAX_OPERANDS): New define.

View File

@ -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);

View File

@ -1,3 +1,12 @@
2011-12-07 Sameera Deshpande <sameera.deshpande@arm.com>
* 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 <matthew.gretton-dann@arm.com>
* gas/arm/neon-suffix-bad.l: Add testcase.

View File

@ -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\]'

View File

@ -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

View File

@ -0,0 +1,2 @@
# name: Unpredictable LDRD and STRD instructions. - Thumb-2
# error-output: thumb2_ldstd_unpredictable.l

View File

@ -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

View File

@ -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