Go to the documentation of this file.
11 #include <linux/kernel.h>
12 #include <linux/module.h>
19 #define DONT_TEST_IN_ITBLOCK(tests) \
20 kprobe_test_flags |= TEST_FLAG_NO_ITBLOCK; \
22 kprobe_test_flags &= ~TEST_FLAG_NO_ITBLOCK;
24 #define CONDITION_INSTRUCTIONS(cc_pos, tests) \
25 kprobe_test_cc_position = cc_pos; \
26 DONT_TEST_IN_ITBLOCK(tests) \
27 kprobe_test_cc_position = 0;
29 #define TEST_ITBLOCK(code) \
30 kprobe_test_flags |= TEST_FLAG_FULL_ITBLOCK; \
31 TESTCASE_START(code) \
35 " mov r1, #0x11 \n\t" \
36 " mov r2, #0x22 \n\t" \
37 " mov r3, #0x33 \n\t" \
40 kprobe_test_flags &= ~TEST_FLAG_FULL_ITBLOCK;
42 #define TEST_THUMB_TO_ARM_INTERWORK_P(code1, reg, val, code2) \
43 TESTCASE_START(code1 #reg code2) \
44 TEST_ARG_PTR(reg, val) \
45 TEST_ARG_REG(14, 99f+1) \
46 TEST_ARG_MEM(15, 3f) \
50 "1: "code1 #reg code2" \n\t" \
53 "3: adr lr, 2f+1 \n\t" \
64 TEST_GROUP(
"Shift (immediate), add, subtract, move, and compare")
80 TEST(
"movs.n r0, #0x5f")
81 TEST(
"movs.n r7, #0xa0")
82 TEST_R(
"cmp.n r",0,0x5e,
", #0x5f")
83 TEST_R(
"cmp.n r",5,0x15f,
", #0x5f")
84 TEST_R(
"cmp.n r",7,0xa0,
", #0xa0")
90 TEST_GROUP(
"16-bit Thumb data-processing instructions")
92 #define DATA_PROCESSING16(op,val) \
93 TEST_RR( op" r",0,VAL1,", r",7,val,"") \
94 TEST_RR( op" r",7,VAL2,", r",0,val,"")
114 TEST_GROUP(
"Special data instructions and branch and exchange")
119 TEST_R(
"add sp" ", r",8,-8,
"")
126 TEST_R(
"cmp sp" ", r",8,-8,
"")
131 TEST_P(
"mov sp, r",8,-8,
"")
165 TEST_GROUP(
"16-bit Thumb Load/store instructions")
167 TEST_RPR(
"str r",0,
VAL1,
", [r",1, 24,
", r",2, 48,
"]")
168 TEST_RPR(
"str r",7,
VAL2,
", [r",6, 24,
", r",5, 48,
"]")
169 TEST_RPR(
"strh r",0,
VAL1,
", [r",1, 24,
", r",2, 48,
"]")
170 TEST_RPR(
"strh r",7,
VAL2,
", [r",6, 24,
", r",5, 48,
"]")
171 TEST_RPR(
"strb r",0,
VAL1,
", [r",1, 24,
", r",2, 48,
"]")
172 TEST_RPR(
"strb r",7,
VAL2,
", [r",6, 24,
", r",5, 48,
"]")
173 TEST_PR(
"ldrsb r0, [r",1, 24,
", r",2, 48,
"]")
174 TEST_PR(
"ldrsb r7, [r",6, 24,
", r",5, 50,
"]")
175 TEST_PR(
"ldr r0, [r",1, 24,
", r",2, 48,
"]")
176 TEST_PR(
"ldr r7, [r",6, 24,
", r",5, 48,
"]")
177 TEST_PR(
"ldrh r0, [r",1, 24,
", r",2, 48,
"]")
178 TEST_PR(
"ldrh r7, [r",6, 24,
", r",5, 50,
"]")
179 TEST_PR(
"ldrb r0, [r",1, 24,
", r",2, 48,
"]")
180 TEST_PR(
"ldrb r7, [r",6, 24,
", r",5, 50,
"]")
181 TEST_PR(
"ldrsh r0, [r",1, 24,
", r",2, 48,
"]")
182 TEST_PR(
"ldrsh r7, [r",6, 24,
", r",5, 50,
"]")
186 TEST_P(
"ldr r0, [r",1, 24,
", #120]")
187 TEST_P(
"ldr r7, [r",6, 24,
", #120]")
190 TEST_P(
"ldrb r0, [r",1, 24,
", #30]")
191 TEST_P(
"ldrb r7, [r",6, 24,
", #30]")
194 TEST_P(
"ldrh r0, [r",1, 24,
", #60]")
195 TEST_P(
"ldrh r7, [r",6, 24,
", #60]")
199 TEST(
"ldr r0, [sp, #0]")
200 TEST(
"ldr r7, [sp, #160]")
203 TEST_P(
"ldr r0, [r",0, 24,
"]")
205 TEST_GROUP(
"Generate PC-/SP-relative address")
207 TEST(
"add r0, pc, #4")
208 TEST(
"add r7, pc, #1020")
209 TEST(
"add r0, sp, #4")
210 TEST(
"add r7, sp, #1020")
212 TEST_GROUP(
"Miscellaneous 16-bit instructions")
220 TEST(
"sub sp, #0x7f*4")
245 #define TEST_POPPC(code, offset) \
246 TESTCASE_START(code) \
247 TEST_ARG_PTR(13, offset) \
249 TEST_BRANCH_F(code) \
255 TEST(
"push {r0-r7,r14}")
256 TEST(
"push {r0,r2,r4,r6,r14}")
257 TEST(
"push {r1,r3,r5,r7}")
260 TEST(
"pop {r0,r2,r4,r6}")
278 #define TEST_IT(code, code2) \
279 TESTCASE_START(code) \
291 TEST_IT(
"ite eq",
"moveq r0,#0\n\t movne r1,#1")
292 TEST_IT(
"itet vc",
"movvc r0,#0\n\t movvs r1,#1\n\t movvc r2,#2")
293 TEST_IT(
"itete le",
"movle r0,#0\n\t movgt r1,#1\n\t movle r2,#2\n\t movgt r3,#3")
294 TEST_IT(
"itttt le",
"movle r0,#0\n\t movle r1,#1\n\t movle r2,#2\n\t movle r3,#3")
295 TEST_IT(
"iteee le",
"movle r0,#0\n\t movgt r1,#1\n\t movgt r2,#2\n\t movgt r3,#3")
300 TEST_P(
"ldmia r",4, 16*4,
"!, {r0,r7}")
301 TEST_P(
"ldmia r",7, 16*4,
"!, {r0-r6}")
302 TEST_P(
"stmia r",4, 16*4,
"!, {r0,r7}")
303 TEST_P(
"stmia r",0, 16*4,
"!, {r0-r7}")
305 TEST_GROUP(
"Conditional branch and Supervisor Call instructions")
325 TEST_GROUP(
"Testing instructions in IT blocks")
344 TEST_P(
"stmia r",0, 16*4,
", {r0,r8}")
345 TEST_P(
"stmia r",4, 16*4,
", {r0-r12,r14}")
346 TEST_P(
"stmia r",7, 16*4,
"!, {r8-r12,r14}")
347 TEST_P(
"stmia r",12,16*4,
"!, {r1,r3,r5,r7,r8-r11,r14}")
349 TEST_P(
"ldmia r",0, 16*4,
", {r0,r8}")
350 TEST_P(
"ldmia r",4, 0,
", {r0-r12,r14}")
351 TEST_BF_P(
"ldmia r",5, 8*4,
"!, {r6-r12,r15}")
352 TEST_P(
"ldmia r",12,16*4,
"!, {r1,r3,r5,r7,r8-r11,r14}")
353 TEST_BF_P(
"ldmia r",14,14*4,
"!, {r4,pc}")
355 TEST_P(
"stmdb r",0, 16*4,
", {r0,r8}")
356 TEST_P(
"stmdb r",4, 16*4,
", {r0-r12,r14}")
357 TEST_P(
"stmdb r",5, 16*4,
"!, {r8-r12,r14}")
358 TEST_P(
"stmdb r",12,16*4,
"!, {r1,r3,r5,r7,r8-r11,r14}")
360 TEST_P(
"ldmdb r",0, 16*4,
", {r0,r8}")
361 TEST_P(
"ldmdb r",4, 16*4,
", {r0-r12,r14}")
362 TEST_BF_P(
"ldmdb r",5, 16*4,
"!, {r6-r12,r15}")
363 TEST_P(
"ldmdb r",12,16*4,
"!, {r1,r3,r5,r7,r8-r11,r14}")
364 TEST_BF_P(
"ldmdb r",14,16*4,
"!, {r4,pc}")
366 TEST_P(
"stmdb r",13,16*4,
"!, {r3-r12,lr}")
367 TEST_P(
"stmdb r",13,16*4,
"!, {r3-r12}")
368 TEST_P(
"stmdb r",2, 16*4,
", {r3-r12,lr}")
369 TEST_P(
"stmdb r",13,16*4,
"!, {r2-r12,lr}")
370 TEST_P(
"stmdb r",0, 16*4,
", {r0-r12}")
371 TEST_P(
"stmdb r",0, 16*4,
", {r0-r12,lr}")
373 TEST_BF_P(
"ldmia r",13,5*4,
"!, {r3-r12,pc}")
374 TEST_P(
"ldmia r",13,5*4,
"!, {r3-r12}")
375 TEST_BF_P(
"ldmia r",2, 5*4,
"!, {r3-r12,pc}")
376 TEST_BF_P(
"ldmia r",13,4*4,
"!, {r2-r12,pc}")
377 TEST_P(
"ldmia r",0, 16*4,
", {r0-r12}")
378 TEST_P(
"ldmia r",0, 16*4,
", {r0-r12,lr}")
391 TEST_GROUP(
"Load/store double or exclusive, table branch")
393 TEST_P(
"ldrd r0, r1, [r",1, 24,
", #-16]")
394 TEST(
"ldrd r12, r14, [sp, #16]")
395 TEST_P(
"ldrd r1, r0, [r",7, 24,
", #-16]!")
396 TEST(
"ldrd r14, r12, [sp, #16]!")
397 TEST_P(
"ldrd r1, r0, [r",7, 24,
"], #16")
398 TEST(
"ldrd r7, r8, [sp], #-16")
400 TEST_X(
"ldrd r12, r14, 3f",
412 TEST_RRP(
"strd r",0,
VAL1,
", r",1,
VAL2,
", [r",1, 24,
", #-16]")
414 TEST_RRP(
"strd r",1,
VAL1,
", r",0,
VAL2,
", [r",7, 24,
", #-16]!")
416 TEST_RRP(
"strd r",1,
VAL1,
", r",0,
VAL2,
", [r",7, 24,
"], #16")
423 ".byte (2f-1b-4)>>1 \n\t"
424 ".byte (3f-1b-4)>>1 \n\t"
428 TEST_RX(
"tbb [pc, r",4, (9
f-(1
f+4)+1),
"]",
430 ".byte (2f-1b-4)>>1 \n\t"
431 ".byte (3f-1b-4)>>1 \n\t"
437 ".byte (2f-1b-4)>>1 \n\t"
438 ".byte (3f-1b-4)>>1 \n\t"
442 TEST_RX(
"tbh [pc, r",7, (9
f-(1
f+4))>>1,
"]",
444 ".short (2f-1b-4)>>1 \n\t"
445 ".short (3f-1b-4)>>1 \n\t"
449 TEST_RX(
"tbh [pc, r",12, ((9
f-(1
f+4))>>1)+1,
"]",
451 ".short (2f-1b-4)>>1 \n\t"
452 ".short (3f-1b-4)>>1 \n\t"
458 ".short (2f-1b-4)>>1 \n\t"
459 ".short (3f-1b-4)>>1 \n\t"
474 TEST_GROUP(
"Data-processing (shifted register) and (modified immediate)")
476 #define _DATA_PROCESSING32_DNM(op,s,val) \
477 TEST_RR(op s".w r0, r",1, VAL1,", r",2, val, "") \
478 TEST_RR(op s" r1, r",1, VAL1,", r",2, val, ", lsl #3") \
479 TEST_RR(op s" r2, r",3, VAL1,", r",2, val, ", lsr #4") \
480 TEST_RR(op s" r3, r",3, VAL1,", r",2, val, ", asr #5") \
481 TEST_RR(op s" r4, r",5, VAL1,", r",2, N(val),", asr #6") \
482 TEST_RR(op s" r5, r",5, VAL1,", r",2, val, ", ror #7") \
483 TEST_RR(op s" r8, r",9, VAL1,", r",10,val, ", rrx") \
484 TEST_R( op s" r0, r",11,VAL1,", #0x00010001") \
485 TEST_R( op s" r11, r",0, VAL1,", #0xf5000000") \
486 TEST_R( op s" r7, r",8, VAL2,", #0x000af000")
488 #define DATA_PROCESSING32_DNM(op,val) \
489 _DATA_PROCESSING32_DNM(op,"",val) \
490 _DATA_PROCESSING32_DNM(op,"s",val)
492 #define DATA_PROCESSING32_NM(op,val) \
493 TEST_RR(op".w r",1, VAL1,", r",2, val, "") \
494 TEST_RR(op" r",1, VAL1,", r",2, val, ", lsl #3") \
495 TEST_RR(op" r",3, VAL1,", r",2, val, ", lsr #4") \
496 TEST_RR(op" r",3, VAL1,", r",2, val, ", asr #5") \
497 TEST_RR(op" r",5, VAL1,", r",2, N(val),", asr #6") \
498 TEST_RR(op" r",5, VAL1,", r",2, val, ", ror #7") \
499 TEST_RR(op" r",9, VAL1,", r",10,val, ", rrx") \
500 TEST_R( op" r",11,VAL1,", #0x00010001") \
501 TEST_R( op" r",0, VAL1,", #0xf5000000") \
502 TEST_R( op" r",8, VAL2,", #0x000af000")
504 #define _DATA_PROCESSING32_DM(op,s,val) \
505 TEST_R( op s".w r0, r",14, val, "") \
506 TEST_R( op s" r1, r",12, val, ", lsl #3") \
507 TEST_R( op s" r2, r",11, val, ", lsr #4") \
508 TEST_R( op s" r3, r",10, val, ", asr #5") \
509 TEST_R( op s" r4, r",9, N(val),", asr #6") \
510 TEST_R( op s" r5, r",8, val, ", ror #7") \
511 TEST_R( op s" r8, r",7,val, ", rrx") \
512 TEST( op s" r0, #0x00010001") \
513 TEST( op s" r11, #0xf5000000") \
514 TEST( op s" r7, #0x000af000") \
515 TEST( op s" r4, #0x00005a00")
517 #define DATA_PROCESSING32_DM(op,val) \
518 _DATA_PROCESSING32_DM(op,"",val) \
519 _DATA_PROCESSING32_DM(op,"s",val)
559 TEST_P(
"cmn.w sp, r",7,0,
"")
561 TEST(
"cmn sp, #0x00080008")
566 TEST_P(
"cmp.w sp, r",7,0,
"")
568 TEST(
"cmp sp, #0x00080008")
578 TEST_R(
"add.w r0, sp, r",1, 4,
"")
579 TEST_R(
"adds r0, sp, r",1, 4,
", asl #3")
580 TEST_R(
"add r0, sp, r",1, 4,
", asl #4")
581 TEST_R(
"add r0, sp, r",1, 16,
", ror #1")
582 TEST_R(
"add.w sp, sp, r",1, 4,
"")
583 TEST_R(
"add sp, sp, r",1, 4,
", asl #3")
586 TEST(
"add.w r0, sp, #24")
587 TEST(
"add.w sp, sp, #24")
594 TEST_R(
"sub.w r0, sp, r",1, 4,
"")
595 TEST_R(
"subs r0, sp, r",1, 4,
", asl #3")
596 TEST_R(
"sub r0, sp, r",1, 4,
", asl #4")
597 TEST_R(
"sub r0, sp, r",1, 16,
", ror #1")
598 TEST_R(
"sub.w sp, sp, r",1, 4,
"")
599 TEST_R(
"sub sp, sp, r",1, 4,
", asl #3")
603 TEST(
"sub.w r0, sp, #24")
604 TEST(
"sub.w sp, sp, #24")
649 TEST_GROUP(
"Data-processing (plain binary immediate)")
652 TEST(
"addw r14, sp, #0xf5a")
653 TEST(
"addw sp, sp, #0x20")
654 TEST(
"addw r7, pc, #0x888")
661 TEST(
"subw r14, sp, #0xf5a")
662 TEST(
"subw sp, sp, #0x20")
663 TEST(
"subw r7, pc, #0x888")
670 TEST(
"movw r0, #0xffff")
671 TEST(
"movw lr, #0xffff")
684 TEST_R(
"ssat r14, #24, r",12,
VAL2,
", asr #8")
693 TEST_R(
"usat r14, #24, r",12,
VAL2,
", asr #8")
742 TEST_GROUP(
"Branches and miscellaneous control")
777 TEST(
"mrs r14, cpsr")
795 TEST_X(
"blx __dummy_arm_subroutine",
798 ".type __dummy_arm_subroutine, %%function \n\t"
799 "__dummy_arm_subroutine: \n\t"
804 TEST(
"blx __dummy_arm_subroutine")
808 #define SINGLE_STORE(size) \
809 TEST_RP( "str"size" r",0, VAL1,", [r",11,-1024,", #1024]") \
810 TEST_RP( "str"size" r",14,VAL2,", [r",1, -1024,", #1080]") \
811 TEST_RP( "str"size" r",0, VAL1,", [r",11,256, ", #-120]") \
812 TEST_RP( "str"size" r",14,VAL2,", [r",1, 256, ", #-128]") \
813 TEST_RP( "str"size" r",0, VAL1,", [r",11,24, "], #120") \
814 TEST_RP( "str"size" r",14,VAL2,", [r",1, 24, "], #128") \
815 TEST_RP( "str"size" r",0, VAL1,", [r",11,24, "], #-120") \
816 TEST_RP( "str"size" r",14,VAL2,", [r",1, 24, "], #-128") \
817 TEST_RP( "str"size" r",0, VAL1,", [r",11,24, ", #120]!") \
818 TEST_RP( "str"size" r",14,VAL2,", [r",1, 24, ", #128]!") \
819 TEST_RP( "str"size" r",0, VAL1,", [r",11,256, ", #-120]!") \
820 TEST_RP( "str"size" r",14,VAL2,", [r",1, 256, ", #-128]!") \
821 TEST_RPR("str"size".w r",0, VAL1,", [r",1, 0,", r",2, 4,"]") \
822 TEST_RPR("str"size" r",14,VAL2,", [r",10,0,", r",11,4,", lsl #1]") \
823 TEST_R( "str"size".w r",7, VAL1,", [sp, #24]") \
824 TEST_RP( "str"size".w r",0, VAL2,", [r",0,0, "]") \
825 TEST_UNSUPPORTED("str"size"t r0, [r1, #4]")
835 TEST_GROUP(
"Advanced SIMD element or structure load/store instructions")
842 TEST_GROUP(
"Load single data item and memory hints")
844 #define SINGLE_LOAD(size) \
845 TEST_P( "ldr"size" r0, [r",11,-1024, ", #1024]") \
846 TEST_P( "ldr"size" r14, [r",1, -1024,", #1080]") \
847 TEST_P( "ldr"size" r0, [r",11,256, ", #-120]") \
848 TEST_P( "ldr"size" r14, [r",1, 256, ", #-128]") \
849 TEST_P( "ldr"size" r0, [r",11,24, "], #120") \
850 TEST_P( "ldr"size" r14, [r",1, 24, "], #128") \
851 TEST_P( "ldr"size" r0, [r",11,24, "], #-120") \
852 TEST_P( "ldr"size" r14, [r",1,24, "], #-128") \
853 TEST_P( "ldr"size" r0, [r",11,24, ", #120]!") \
854 TEST_P( "ldr"size" r14, [r",1, 24, ", #128]!") \
855 TEST_P( "ldr"size" r0, [r",11,256, ", #-120]!") \
856 TEST_P( "ldr"size" r14, [r",1, 256, ", #-128]!") \
857 TEST_PR("ldr"size".w r0, [r",1, 0,", r",2, 4,"]") \
858 TEST_PR("ldr"size" r14, [r",10,0,", r",11,4,", lsl #1]") \
859 TEST_X( "ldr"size".w r0, 3f", \
861 "3: .word "__stringify(VAL1)) \
862 TEST_X( "ldr"size".w r14, 3f", \
864 "3: .word "__stringify(VAL2)) \
865 TEST( "ldr"size".w r7, 3b") \
866 TEST( "ldr"size".w r7, [sp, #24]") \
867 TEST_P( "ldr"size".w r0, [r",0,0, "]") \
868 TEST_UNSUPPORTED("ldr"size"t r0, [r1, #4]")
877 TEST_P(
"ldr sp, [r",14, 13*4,
"]")
879 TEST_R(
"ldr sp, [sp, r",14, 13*4,
"]")
899 TEST(
"pli [pc, #4]")
900 TEST(
"pli [pc, #-4]")
901 TEST(
"pld [pc, #4]")
902 TEST(
"pld [pc, #-4]")
904 TEST_P(
"pld [r",0,-1024,
", #1024]")
905 TEST(
".short 0xf8b0,0xf400 @ pldw [r0, #1024]")
906 TEST_P(
"pli [r",4, 0
b,
", #1024]")
907 TEST_P(
"pld [r",7, 120,
", #-120]")
908 TEST(
".short 0xf837,0xfc78 @ pldw [r7, #-120]")
909 TEST_P(
"pli [r",11,120,
", #-120]")
910 TEST(
"pld [sp, #0]")
912 TEST_PR(
"pld [r",7, 24,
", r",0, 16,
"]")
913 TEST_PR(
"pld [r",8, 24,
", r",12,16,
", lsl #3]")
916 TEST_RR(
"pli [r",12,0
b,
", r",0, 16,
"]")
917 TEST_RR(
"pli [r",0, 0
b,
", r",12,16,
", lsl #3]")
918 TEST_R(
"pld [sp, r",1, 16,
"]")
924 #define SHIFTS32(op) \
925 TEST_RR(op" r0, r",1, VAL1,", r",2, 3, "") \
926 TEST_RR(op" r14, r",12,VAL2,", r",11,10,"")
976 #define PARALLEL_ADD_SUB(op) \
977 TEST_RR( op"add16 r0, r",0, HH1,", r",1, HH2,"") \
978 TEST_RR( op"add16 r14, r",12,HH2,", r",10,HH1,"") \
979 TEST_RR( op"asx r0, r",0, HH1,", r",1, HH2,"") \
980 TEST_RR( op"asx r14, r",12,HH2,", r",10,HH1,"") \
981 TEST_RR( op"sax r0, r",0, HH1,", r",1, HH2,"") \
982 TEST_RR( op"sax r14, r",12,HH2,", r",10,HH1,"") \
983 TEST_RR( op"sub16 r0, r",0, HH1,", r",1, HH2,"") \
984 TEST_RR( op"sub16 r14, r",12,HH2,", r",10,HH1,"") \
985 TEST_RR( op"add8 r0, r",0, HH1,", r",1, HH2,"") \
986 TEST_RR( op"add8 r14, r",12,HH2,", r",10,HH1,"") \
987 TEST_RR( op"sub8 r0, r",0, HH1,", r",1, HH2,"") \
988 TEST_RR( op"sub8 r14, r",12,HH2,", r",10,HH1,"")
990 TEST_GROUP(
"Parallel addition and subtraction, signed")
996 TEST_GROUP(
"Parallel addition and subtraction, unsigned")
1030 TEST_R(
"clz r0, r",0, 0x0,
"")
1031 TEST_R(
"clz r7, r",14,0x1,
"")
1032 TEST_R(
"clz lr, r",7, 0xffffffff,
"")
1039 TEST_GROUP(
"Multiply, multiply accumulate, and absolute difference operations")
1050 TEST_RRR(
"mla r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1051 TEST_RRR(
"mla r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1060 TEST_RRR(
"mls r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1061 TEST_RRR(
"mls r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1063 TEST_RRR(
"smlabb r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1064 TEST_RRR(
"smlabb r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1065 TEST_RRR(
"smlatb r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1066 TEST_RRR(
"smlatb r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1067 TEST_RRR(
"smlabt r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1068 TEST_RRR(
"smlabt r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1069 TEST_RRR(
"smlatt r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1070 TEST_RRR(
"smlatt r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1080 TEST_RRR(
"smlad r0, r",0,
HH1,
", r",1,
HH2,
", r",2,
VAL1,
"")
1081 TEST_RRR(
"smlad r14, r",12,
HH2,
", r",10,
HH1,
", r",8,
VAL2,
"")
1082 TEST_RRR(
"smladx r0, r",0,
HH1,
", r",1,
HH2,
", r",2,
VAL1,
"")
1083 TEST_RRR(
"smladx r14, r",12,
HH2,
", r",10,
HH1,
", r",8,
VAL2,
"")
1089 TEST_RRR(
"smlawb r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1090 TEST_RRR(
"smlawb r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1091 TEST_RRR(
"smlawt r0, r",1,
VAL1,
", r",2,
VAL2,
", r",3,
VAL3,
"")
1092 TEST_RRR(
"smlawt r7, r",8,
VAL3,
", r",9,
VAL1,
", r",10,
VAL2,
"")
1098 TEST_RRR(
"smlsd r0, r",0,
HH1,
", r",1,
HH2,
", r",2,
VAL1,
"")
1099 TEST_RRR(
"smlsd r14, r",12,
HH2,
", r",10,
HH1,
", r",8,
VAL2,
"")
1100 TEST_RRR(
"smlsdx r0, r",0,
HH1,
", r",1,
HH2,
", r",2,
VAL1,
"")
1101 TEST_RRR(
"smlsdx r14, r",12,
HH2,
", r",10,
HH1,
", r",8,
VAL2,
"")
1107 TEST_RRR(
"smmla r0, r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL1,
"")
1108 TEST_RRR(
"smmla r14, r",12,
VAL2,
", r",10,
VAL1,
", r",8,
VAL2,
"")
1109 TEST_RRR(
"smmlar r0, r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL1,
"")
1110 TEST_RRR(
"smmlar r14, r",12,
VAL2,
", r",10,
VAL1,
", r",8,
VAL2,
"")
1116 TEST_RRR(
"smmls r0, r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL1,
"")
1117 TEST_RRR(
"smmls r14, r",12,
VAL2,
", r",10,
VAL1,
", r",8,
VAL2,
"")
1118 TEST_RRR(
"smmlsr r0, r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL1,
"")
1119 TEST_RRR(
"smmlsr r14, r",12,
VAL2,
", r",10,
VAL1,
", r",8,
VAL2,
"")
1121 TEST_RRR(
"usada8 r0, r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
"")
1122 TEST_RRR(
"usada8 r14, r",12,
VAL2,
", r",10,
VAL1,
", r",8,
VAL3,
"")
1133 TEST_GROUP(
"Long multiply, long multiply accumulate, and divide")
1149 TEST_RRRR(
"smlal r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1150 TEST_RRRR(
"smlal r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1152 TEST_RRRR(
"smlalbb r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1153 TEST_RRRR(
"smlalbb r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1154 TEST_RRRR(
"smlalbt r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1155 TEST_RRRR(
"smlalbt r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1156 TEST_RRRR(
"smlaltb r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1157 TEST_RRRR(
"smlaltb r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1158 TEST_RRRR(
"smlaltt r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1159 TEST_RRRR(
"smlaltt r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1161 TEST_RRRR(
"smlald r",0,
VAL1,
", r",1,
VAL2,
", r",0,
HH1,
", r",1,
HH2)
1162 TEST_RRRR(
"smlald r",11,
VAL2,
", r",10,
VAL1,
", r",9,
HH2,
", r",8,
HH1)
1163 TEST_RRRR(
"smlaldx r",0,
VAL1,
", r",1,
VAL2,
", r",0,
HH1,
", r",1,
HH2)
1164 TEST_RRRR(
"smlaldx r",11,
VAL2,
", r",10,
VAL1,
", r",9,
HH2,
", r",8,
HH1)
1166 TEST_RRRR(
"smlsld r",0,
VAL1,
", r",1,
VAL2,
", r",0,
HH1,
", r",1,
HH2)
1167 TEST_RRRR(
"smlsld r",11,
VAL2,
", r",10,
VAL1,
", r",9,
HH2,
", r",8,
HH1)
1168 TEST_RRRR(
"smlsldx r",0,
VAL1,
", r",1,
VAL2,
", r",0,
HH1,
", r",1,
HH2)
1169 TEST_RRRR(
"smlsldx r",11,
VAL2,
", r",10,
VAL1,
", r",9,
HH2,
", r",8,
HH1)
1171 TEST_RRRR(
"umlal r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1172 TEST_RRRR(
"umlal r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1173 TEST_RRRR(
"umaal r",0,
VAL1,
", r",1,
VAL2,
", r",2,
VAL3,
", r",3,
VAL4)
1174 TEST_RRRR(
"umaal r",8,
VAL4,
", r",9,
VAL1,
", r",10,
VAL2,
", r",11,
VAL3)
1181 TEST_GROUP(
"Testing instructions in IT blocks")