X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FMC%2FARM%2Fbasic-thumb2-instructions.s;h=c367ea8ca9719c5cecf15da908b9cae87a7c6e82;hb=73e019eb12bda5a3dd6165b749dfa08b8b30e477;hp=79510e3e79c45c69a4f92debb5a616561464f780;hpb=fd8b8519087d19d3ac4c3a0b23e6f7a6c2ced46b;p=oota-llvm.git diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s index 79510e3e79c..c367ea8ca97 100644 --- a/test/MC/ARM/basic-thumb2-instructions.s +++ b/test/MC/ARM/basic-thumb2-instructions.s @@ -554,12 +554,24 @@ _func: ldr r5, [r6, #33] ldr r5, [r6, #257] ldr.w pc, [r7, #257] + ldr r2, [r4, #255]! + ldr r8, [sp, #4]! + ldr lr, [sp, #-4]! + ldr r2, [r4], #255 + ldr r8, [sp], #4 + ldr lr, [sp], #-4 @ CHECK: ldr r5, [r5, #-4] @ encoding: [0x55,0xf8,0x04,0x5c] @ CHECK: ldr r5, [r6, #32] @ encoding: [0x35,0x6a] @ CHECK: ldr.w r5, [r6, #33] @ encoding: [0xd6,0xf8,0x21,0x50] @ CHECK: ldr.w r5, [r6, #257] @ encoding: [0xd6,0xf8,0x01,0x51] @ CHECK: ldr.w pc, [r7, #257] @ encoding: [0xd7,0xf8,0x01,0xf1] +@ CHECK: ldr r2, [r4, #255]! @ encoding: [0x54,0xf8,0xff,0x2f] +@ CHECK: ldr r8, [sp, #4]! @ encoding: [0x5d,0xf8,0x04,0x8f] +@ CHECK: ldr lr, [sp, #-4]! @ encoding: [0x5d,0xf8,0x04,0xed] +@ CHECK: ldr r2, [r4], #255 @ encoding: [0x54,0xf8,0xff,0x2b] +@ CHECK: ldr r8, [sp], #4 @ encoding: [0x5d,0xf8,0x04,0x8b] +@ CHECK: ldr lr, [sp], #-4 @ encoding: [0x5d,0xf8,0x04,0xe9] @------------------------------------------------------------------------------ @@ -580,12 +592,6 @@ _func: ldr r8, [r8, r2, lsl #2] ldr r7, [sp, r2, lsl #1] ldr r7, [sp, r2, lsl #0] - ldr r2, [r4, #255]! - ldr r8, [sp, #4]! - ldr lr, [sp, #-4]! - ldr r2, [r4], #255 - ldr r8, [sp], #4 - ldr lr, [sp], #-4 @ CHECK: ldr.w r1, [r8, r1] @ encoding: [0x58,0xf8,0x01,0x10] @ CHECK: ldr.w r4, [r5, r2] @ encoding: [0x55,0xf8,0x02,0x40] @@ -593,12 +599,6 @@ _func: @ CHECK: ldr.w r8, [r8, r2, lsl #2] @ encoding: [0x58,0xf8,0x22,0x80] @ CHECK: ldr.w r7, [sp, r2, lsl #1] @ encoding: [0x5d,0xf8,0x12,0x70] @ CHECK: ldr.w r7, [sp, r2] @ encoding: [0x5d,0xf8,0x02,0x70] -@ CHECK: ldr r2, [r4, #255]! @ encoding: [0x54,0xf8,0xff,0x2f] -@ CHECK: ldr r8, [sp, #4]! @ encoding: [0x5d,0xf8,0x04,0x8f] -@ CHECK: ldr lr, [sp, #-4]! @ encoding: [0x5d,0xf8,0x04,0xed] -@ CHECK: ldr r2, [r4], #255 @ encoding: [0x54,0xf8,0xff,0x2b] -@ CHECK: ldr r8, [sp], #4 @ encoding: [0x5d,0xf8,0x04,0x8b] -@ CHECK: ldr lr, [sp], #-4 @ encoding: [0x5d,0xf8,0x04,0xe9] @------------------------------------------------------------------------------ @@ -609,12 +609,24 @@ _func: ldrb r5, [r6, #33] ldrb r5, [r6, #257] ldrb.w lr, [r7, #257] + ldrb r5, [r8, #255]! + ldrb r2, [r5, #4]! + ldrb r1, [r4, #-4]! + ldrb lr, [r3], #255 + ldrb r9, [r2], #4 + ldrb r3, [sp], #-4 @ CHECK: ldrb r5, [r5, #-4] @ encoding: [0x15,0xf8,0x04,0x5c] @ CHECK: ldrb.w r5, [r6, #32] @ encoding: [0x96,0xf8,0x20,0x50] @ CHECK: ldrb.w r5, [r6, #33] @ encoding: [0x96,0xf8,0x21,0x50] @ CHECK: ldrb.w r5, [r6, #257] @ encoding: [0x96,0xf8,0x01,0x51] @ CHECK: ldrb.w lr, [r7, #257] @ encoding: [0x97,0xf8,0x01,0xe1] +@ CHECK: ldrb r5, [r8, #255]! @ encoding: [0x18,0xf8,0xff,0x5f] +@ CHECK: ldrb r2, [r5, #4]! @ encoding: [0x15,0xf8,0x04,0x2f] +@ CHECK: ldrb r1, [r4, #-4]! @ encoding: [0x14,0xf8,0x04,0x1d] +@ CHECK: ldrb lr, [r3], #255 @ encoding: [0x13,0xf8,0xff,0xeb] +@ CHECK: ldrb r9, [r2], #4 @ encoding: [0x12,0xf8,0x04,0x9b] +@ CHECK: ldrb r3, [sp], #-4 @ encoding: [0x1d,0xf8,0x04,0x39] @------------------------------------------------------------------------------ @@ -626,12 +638,6 @@ _func: ldrb r8, [r8, r2, lsl #2] ldrb r7, [sp, r2, lsl #1] ldrb r7, [sp, r2, lsl #0] - ldrb r5, [r8, #255]! - ldrb r2, [r5, #4]! - ldrb r1, [r4, #-4]! - ldrb lr, [r3], #255 - ldrb r9, [r2], #4 - ldrb r3, [sp], #-4 @ CHECK: ldrb.w r1, [r8, r1] @ encoding: [0x18,0xf8,0x01,0x10] @ CHECK: ldrb.w r4, [r5, r2] @ encoding: [0x15,0xf8,0x02,0x40] @@ -639,12 +645,6 @@ _func: @ CHECK: ldrb.w r8, [r8, r2, lsl #2] @ encoding: [0x18,0xf8,0x22,0x80] @ CHECK: ldrb.w r7, [sp, r2, lsl #1] @ encoding: [0x1d,0xf8,0x12,0x70] @ CHECK: ldrb.w r7, [sp, r2] @ encoding: [0x1d,0xf8,0x02,0x70] -@ CHECK: ldrb r5, [r8, #255]! @ encoding: [0x18,0xf8,0xff,0x5f] -@ CHECK: ldrb r2, [r5, #4]! @ encoding: [0x15,0xf8,0x04,0x2f] -@ CHECK: ldrb r1, [r4, #-4]! @ encoding: [0x14,0xf8,0x04,0x1d] -@ CHECK: ldrb lr, [r3], #255 @ encoding: [0x13,0xf8,0xff,0xeb] -@ CHECK: ldrb r9, [r2], #4 @ encoding: [0x12,0xf8,0x04,0x9b] -@ CHECK: ldrb r3, [sp], #-4 @ encoding: [0x1d,0xf8,0x04,0x39] @------------------------------------------------------------------------------ @@ -662,7 +662,7 @@ _func: @------------------------------------------------------------------------------ -@ LDRD(immediate) +@ LDRD @------------------------------------------------------------------------------ ldrd r3, r5, [r6, #24] ldrd r3, r5, [r6, #24]! @@ -710,12 +710,24 @@ _func: ldrh r5, [r6, #33] ldrh r5, [r6, #257] ldrh.w lr, [r7, #257] + ldrh r5, [r8, #255]! + ldrh r2, [r5, #4]! + ldrh r1, [r4, #-4]! + ldrh lr, [r3], #255 + ldrh r9, [r2], #4 + ldrh r3, [sp], #-4 @ CHECK: ldrh r5, [r5, #-4] @ encoding: [0x35,0xf8,0x04,0x5c] @ CHECK: ldrh r5, [r6, #32] @ encoding: [0x35,0x8c] @ CHECK: ldrh.w r5, [r6, #33] @ encoding: [0xb6,0xf8,0x21,0x50] @ CHECK: ldrh.w r5, [r6, #257] @ encoding: [0xb6,0xf8,0x01,0x51] @ CHECK: ldrh.w lr, [r7, #257] @ encoding: [0xb7,0xf8,0x01,0xe1] +@ CHECK: ldrh r5, [r8, #255]! @ encoding: [0x38,0xf8,0xff,0x5f] +@ CHECK: ldrh r2, [r5, #4]! @ encoding: [0x35,0xf8,0x04,0x2f] +@ CHECK: ldrh r1, [r4, #-4]! @ encoding: [0x34,0xf8,0x04,0x1d] +@ CHECK: ldrh lr, [r3], #255 @ encoding: [0x33,0xf8,0xff,0xeb] +@ CHECK: ldrh r9, [r2], #4 @ encoding: [0x32,0xf8,0x04,0x9b] +@ CHECK: ldrh r3, [sp], #-4 @ encoding: [0x3d,0xf8,0x04,0x39] @------------------------------------------------------------------------------ @@ -727,12 +739,6 @@ _func: ldrh r8, [r8, r2, lsl #2] ldrh r7, [sp, r2, lsl #1] ldrh r7, [sp, r2, lsl #0] - ldrh r5, [r8, #255]! - ldrh r2, [r5, #4]! - ldrh r1, [r4, #-4]! - ldrh lr, [r3], #255 - ldrh r9, [r2], #4 - ldrh r3, [sp], #-4 @ CHECK: ldrh.w r1, [r8, r1] @ encoding: [0x38,0xf8,0x01,0x10] @ CHECK: ldrh.w r4, [r5, r2] @ encoding: [0x35,0xf8,0x02,0x40] @@ -740,12 +746,6 @@ _func: @ CHECK: ldrh.w r8, [r8, r2, lsl #2] @ encoding: [0x38,0xf8,0x22,0x80] @ CHECK: ldrh.w r7, [sp, r2, lsl #1] @ encoding: [0x3d,0xf8,0x12,0x70] @ CHECK: ldrh.w r7, [sp, r2] @ encoding: [0x3d,0xf8,0x02,0x70] -@ CHECK: ldrh r5, [r8, #255]! @ encoding: [0x38,0xf8,0xff,0x5f] -@ CHECK: ldrh r2, [r5, #4]! @ encoding: [0x35,0xf8,0x04,0x2f] -@ CHECK: ldrh r1, [r4, #-4]! @ encoding: [0x34,0xf8,0x04,0x1d] -@ CHECK: ldrh lr, [r3], #255 @ encoding: [0x33,0xf8,0xff,0xeb] -@ CHECK: ldrh r9, [r2], #4 @ encoding: [0x32,0xf8,0x04,0x9b] -@ CHECK: ldrh r3, [sp], #-4 @ encoding: [0x3d,0xf8,0x04,0x39] @------------------------------------------------------------------------------ @@ -757,6 +757,20 @@ _func: @ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12 +@------------------------------------------------------------------------------ +@ LDRHT +@------------------------------------------------------------------------------ + ldrht r1, [r2] + ldrht r1, [r8, #0] + ldrht r1, [r8, #3] + ldrht r1, [r8, #255] + +@ CHECK: ldrht r1, [r2] @ encoding: [0x32,0xf8,0x00,0x1e] +@ CHECK: ldrht r1, [r8] @ encoding: [0x38,0xf8,0x00,0x1e] +@ CHECK: ldrht r1, [r8, #3] @ encoding: [0x38,0xf8,0x03,0x1e] +@ CHECK: ldrht r1, [r8, #255] @ encoding: [0x38,0xf8,0xff,0x1e] + + @------------------------------------------------------------------------------ @ LDRSB(immediate) @------------------------------------------------------------------------------ @@ -1450,11 +1464,11 @@ _func: rev16ne r1, r2 rev16ne r1, r8 - rev16.w r1, r2 @ encoding: [0x92,0xfa,0x92,0xf1] - rev16.w r2, r8 @ encoding: [0x98,0xfa,0x98,0xf2] - itt ne @ encoding: [0x1c,0xbf] - rev16ne r1, r2 @ encoding: [0x51,0xba] - rev16ne.w r1, r8 @ encoding: [0x98,0xfa,0x98,0xf1] +@ CHECK: rev16.w r1, r2 @ encoding: [0x92,0xfa,0x92,0xf1] +@ CHECK: rev16.w r2, r8 @ encoding: [0x98,0xfa,0x98,0xf2] +@ CHECK: itt ne @ encoding: [0x1c,0xbf] +@ CHECK: rev16ne r1, r2 @ encoding: [0x51,0xba] +@ CHECK: rev16ne.w r1, r8 @ encoding: [0x98,0xfa,0x98,0xf1] @------------------------------------------------------------------------------ @@ -1466,11 +1480,11 @@ _func: revshne r1, r2 revshne r1, r8 - revsh.w r1, r2 @ encoding: [0x92,0xfa,0xb2,0xf1] - revsh.w r2, r8 @ encoding: [0x98,0xfa,0xb8,0xf2] - itt ne @ encoding: [0x1c,0xbf] - revshne r1, r2 @ encoding: [0xd1,0xba] - revshne.w r1, r8 @ encoding: [0x98,0xfa,0xb8,0xf1] +@ CHECK: revsh.w r1, r2 @ encoding: [0x92,0xfa,0xb2,0xf1] +@ CHECK: revsh.w r2, r8 @ encoding: [0x98,0xfa,0xb8,0xf2] +@ CHECK: itt ne @ encoding: [0x1c,0xbf] +@ CHECK: revshne r1, r2 @ encoding: [0xd1,0xba] +@ CHECK: revshne.w r1, r8 @ encoding: [0x98,0xfa,0xb8,0xf1] @------------------------------------------------------------------------------ @@ -1642,10 +1656,1217 @@ _func: @ CHECK: sbcs.w r0, r1, r3, asr #32 @ encoding: [0x71,0xeb,0x23,0x00] +@------------------------------------------------------------------------------ +@ SBFX +@------------------------------------------------------------------------------ + sbfx r4, r5, #16, #1 + it gt + sbfxgt r4, r5, #16, #16 + +@ CHECK: sbfx r4, r5, #16, #1 @ encoding: [0x45,0xf3,0x00,0x44] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: sbfxgt r4, r5, #16, #16 @ encoding: [0x45,0xf3,0x0f,0x44] + + +@------------------------------------------------------------------------------ +@ SEL +@------------------------------------------------------------------------------ + sel r5, r9, r2 + it le + selle r5, r9, r2 + +@ CHECK: sel r5, r9, r2 @ encoding: [0xa9,0xfa,0x82,0xf5] +@ CHECK: it le @ encoding: [0xd8,0xbf] +@ CHECK: selle r5, r9, r2 @ encoding: [0xa9,0xfa,0x82,0xf5] + + +@------------------------------------------------------------------------------ +@ SEV +@------------------------------------------------------------------------------ + sev.w + it eq + seveq.w + +@ CHECK: sev.w @ encoding: [0xaf,0xf3,0x04,0x80] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: seveq.w @ encoding: [0xaf,0xf3,0x04,0x80] + + +@------------------------------------------------------------------------------ +@ SADD16/SADD8 +@------------------------------------------------------------------------------ + sadd16 r1, r2, r3 + sadd8 r1, r2, r3 + ite gt + sadd16gt r1, r2, r3 + sadd8le r1, r2, r3 + +@ CHECK: sadd16 r1, r2, r3 @ encoding: [0x92,0xfa,0x03,0xf1] +@ CHECK: sadd8 r1, r2, r3 @ encoding: [0x82,0xfa,0x03,0xf1] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: sadd16gt r1, r2, r3 @ encoding: [0x92,0xfa,0x03,0xf1] +@ CHECK: sadd8le r1, r2, r3 @ encoding: [0x82,0xfa,0x03,0xf1] + + +@------------------------------------------------------------------------------ +@ SHASX +@------------------------------------------------------------------------------ + shasx r4, r8, r2 + it gt + shasxgt r4, r8, r2 + shaddsubx r4, r8, r2 + it gt + shaddsubxgt r4, r8, r2 + +@ CHECK: shasx r4, r8, r2 @ encoding: [0xa8,0xfa,0x22,0xf4] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: shasxgt r4, r8, r2 @ encoding: [0xa8,0xfa,0x22,0xf4] +@ CHECK: shasx r4, r8, r2 @ encoding: [0xa8,0xfa,0x22,0xf4] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: shasxgt r4, r8, r2 @ encoding: [0xa8,0xfa,0x22,0xf4] + + +@------------------------------------------------------------------------------ +@ SHASX +@------------------------------------------------------------------------------ + shsax r4, r8, r2 + it gt + shsaxgt r4, r8, r2 + shsubaddx r4, r8, r2 + it gt + shsubaddxgt r4, r8, r2 + +@ CHECK: shsax r4, r8, r2 @ encoding: [0xe8,0xfa,0x22,0xf4] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: shsaxgt r4, r8, r2 @ encoding: [0xe8,0xfa,0x22,0xf4] +@ CHECK: shsax r4, r8, r2 @ encoding: [0xe8,0xfa,0x22,0xf4] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: shsaxgt r4, r8, r2 @ encoding: [0xe8,0xfa,0x22,0xf4] + + +@------------------------------------------------------------------------------ +@ SHSUB16/SHSUB8 +@------------------------------------------------------------------------------ + shsub16 r4, r8, r2 + shsub8 r4, r8, r2 + itt gt + shsub16gt r4, r8, r2 + shsub8gt r4, r8, r2 + +@ CHECK: shsub16 r4, r8, r2 @ encoding: [0xd8,0xfa,0x22,0xf4] +@ CHECK: shsub8 r4, r8, r2 @ encoding: [0xc8,0xfa,0x22,0xf4] +@ CHECK: itt gt @ encoding: [0xc4,0xbf] +@ CHECK: shsub16gt r4, r8, r2 @ encoding: [0xd8,0xfa,0x22,0xf4] +@ CHECK: shsub8gt r4, r8, r2 @ encoding: [0xc8,0xfa,0x22,0xf4] + + +@------------------------------------------------------------------------------ +@ SMLABB/SMLABT/SMLATB/SMLATT +@------------------------------------------------------------------------------ + smlabb r3, r1, r9, r0 + smlabt r5, r6, r4, r1 + smlatb r4, r2, r3, r2 + smlatt r8, r3, r8, r4 + itete gt + smlabbgt r3, r1, r9, r0 + smlabtle r5, r6, r4, r1 + smlatbgt r4, r2, r3, r2 + smlattle r8, r3, r8, r4 + +@ CHECK: smlabb r3, r1, r9, r0 @ encoding: [0x11,0xfb,0x09,0x03] +@ CHECK: smlabt r5, r6, r4, r1 @ encoding: [0x16,0xfb,0x14,0x15] +@ CHECK: smlatb r4, r2, r3, r2 @ encoding: [0x12,0xfb,0x23,0x24] +@ CHECK: smlatt r8, r3, r8, r4 @ encoding: [0x13,0xfb,0x38,0x48] +@ CHECK: itete gt @ encoding: [0xcb,0xbf] +@ CHECK: smlabbgt r3, r1, r9, r0 @ encoding: [0x11,0xfb,0x09,0x03] +@ CHECK: smlabtle r5, r6, r4, r1 @ encoding: [0x16,0xfb,0x14,0x15] +@ CHECK: smlatbgt r4, r2, r3, r2 @ encoding: [0x12,0xfb,0x23,0x24] +@ CHECK: smlattle r8, r3, r8, r4 @ encoding: [0x13,0xfb,0x38,0x48] + + +@------------------------------------------------------------------------------ +@ SMLAD/SMLADX +@------------------------------------------------------------------------------ + smlad r2, r3, r5, r8 + smladx r2, r3, r5, r8 + itt hi + smladhi r2, r3, r5, r8 + smladxhi r2, r3, r5, r8 + +@ CHECK: smlad r2, r3, r5, r8 @ encoding: [0x23,0xfb,0x05,0x82] +@ CHECK: smladx r2, r3, r5, r8 @ encoding: [0x23,0xfb,0x15,0x82] +@ CHECK: itt hi @ encoding: [0x84,0xbf] +@ CHECK: smladhi r2, r3, r5, r8 @ encoding: [0x23,0xfb,0x05,0x82] +@ CHECK: smladxhi r2, r3, r5, r8 @ encoding: [0x23,0xfb,0x15,0x82] + + +@------------------------------------------------------------------------------ +@ SMLAL +@------------------------------------------------------------------------------ + smlal r2, r3, r5, r8 + it eq + smlaleq r2, r3, r5, r8 + +@ CHECK: smlal r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0x08,0x23] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: smlaleq r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0x08,0x23] + + +@------------------------------------------------------------------------------ +@ SMLALBB/SMLALBT/SMLALTB/SMLALTT +@------------------------------------------------------------------------------ + smlalbb r3, r1, r9, r0 + smlalbt r5, r6, r4, r1 + smlaltb r4, r2, r3, r2 + smlaltt r8, r3, r8, r4 + iteet ge + smlalbbge r3, r1, r9, r0 + smlalbtlt r5, r6, r4, r1 + smlaltblt r4, r2, r3, r2 + smlalttge r8, r3, r8, r4 + +@ CHECK: smlalbb r3, r1, r9, r0 @ encoding: [0xc9,0xfb,0x80,0x31] +@ CHECK: smlalbt r5, r6, r4, r1 @ encoding: [0xc4,0xfb,0x91,0x56] +@ CHECK: smlaltb r4, r2, r3, r2 @ encoding: [0xc3,0xfb,0xa2,0x42] +@ CHECK: smlaltt r8, r3, r8, r4 @ encoding: [0xc8,0xfb,0xb4,0x83] +@ CHECK: iteet ge @ encoding: [0xad,0xbf] +@ CHECK: smlalbbge r3, r1, r9, r0 @ encoding: [0xc9,0xfb,0x80,0x31] +@ CHECK: smlalbtlt r5, r6, r4, r1 @ encoding: [0xc4,0xfb,0x91,0x56] +@ CHECK: smlaltblt r4, r2, r3, r2 @ encoding: [0xc3,0xfb,0xa2,0x42] +@ CHECK: smlalttge r8, r3, r8, r4 @ encoding: [0xc8,0xfb,0xb4,0x83] + + +@------------------------------------------------------------------------------ +@ SMLALD/SMLALDX +@------------------------------------------------------------------------------ + smlald r2, r3, r5, r8 + smlaldx r2, r3, r5, r8 + ite eq + smlaldeq r2, r3, r5, r8 + smlaldxne r2, r3, r5, r8 + +@ CHECK: smlald r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0xc8,0x23] +@ CHECK: smlaldx r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0xd8,0x23] +@ CHECK: ite eq @ encoding: [0x0c,0xbf] +@ CHECK: smlaldeq r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0xc8,0x23] +@ CHECK: smlaldxne r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0xd8,0x23] + + +@------------------------------------------------------------------------------ +@ SMLAWB/SMLAWT +@------------------------------------------------------------------------------ + smlawb r2, r3, r10, r8 + smlawt r8, r3, r5, r9 + ite eq + smlawbeq r2, r7, r5, r8 + smlawtne r1, r3, r0, r8 + +@ CHECK: smlawb r2, r3, r10, r8 @ encoding: [0x33,0xfb,0x0a,0x82] +@ CHECK: smlawt r8, r3, r5, r9 @ encoding: [0x33,0xfb,0x15,0x98] +@ CHECK: ite eq @ encoding: [0x0c,0xbf] +@ CHECK: smlawbeq r2, r7, r5, r8 @ encoding: [0x37,0xfb,0x05,0x82] +@ CHECK: smlawtne r1, r3, r0, r8 @ encoding: [0x33,0xfb,0x10,0x81] + + +@------------------------------------------------------------------------------ +@ SMLSD/SMLSDX +@------------------------------------------------------------------------------ + smlsd r2, r3, r5, r8 + smlsdx r2, r3, r5, r8 + ite le + smlsdle r2, r3, r5, r8 + smlsdxgt r2, r3, r5, r8 + +@ CHECK: smlsd r2, r3, r5, r8 @ encoding: [0x43,0xfb,0x05,0x82] +@ CHECK: smlsdx r2, r3, r5, r8 @ encoding: [0x43,0xfb,0x15,0x82] +@ CHECK: ite le @ encoding: [0xd4,0xbf] +@ CHECK: smlsdle r2, r3, r5, r8 @ encoding: [0x43,0xfb,0x05,0x82] +@ CHECK: smlsdxgt r2, r3, r5, r8 @ encoding: [0x43,0xfb,0x15,0x82] + + +@------------------------------------------------------------------------------ +@ SMLSLD/SMLSLDX +@------------------------------------------------------------------------------ + smlsld r2, r9, r5, r1 + smlsldx r4, r11, r2, r8 + ite ge + smlsldge r8, r2, r5, r6 + smlsldxlt r1, r0, r3, r8 + +@ CHECK: smlsld r2, r9, r5, r1 @ encoding: [0xd5,0xfb,0xc1,0x29] +@ CHECK: smlsldx r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b] +@ CHECK: ite ge @ encoding: [0xac,0xbf] +@ CHECK: smlsldge r8, r2, r5, r6 @ encoding: [0xd5,0xfb,0xc6,0x82] +@ CHECK: smlsldxlt r1, r0, r3, r8 @ encoding: [0xd3,0xfb,0xd8,0x10] + + +@------------------------------------------------------------------------------ +@ SMMLA/SMMLAR +@------------------------------------------------------------------------------ + smmla r1, r2, r3, r4 + smmlar r4, r3, r2, r1 + ite lo + smmlalo r1, r2, r3, r4 + smmlarcs r4, r3, r2, r1 + +@ CHECK: smmla r1, r2, r3, r4 @ encoding: [0x52,0xfb,0x03,0x41] +@ CHECK: smmlar r4, r3, r2, r1 @ encoding: [0x53,0xfb,0x12,0x14] +@ CHECK: ite lo @ encoding: [0x34,0xbf] +@ CHECK: smmlalo r1, r2, r3, r4 @ encoding: [0x52,0xfb,0x03,0x41] +@ CHECK: smmlarhs r4, r3, r2, r1 @ encoding: [0x53,0xfb,0x12,0x14] + + +@------------------------------------------------------------------------------ +@ SMMLS/SMMLSR +@------------------------------------------------------------------------------ + smmls r1, r2, r3, r4 + smmlsr r4, r3, r2, r1 + ite lo + smmlslo r1, r2, r3, r4 + smmlsrcs r4, r3, r2, r1 + +@ CHECK: smmls r1, r2, r3, r4 @ encoding: [0x62,0xfb,0x03,0x41] +@ CHECK: smmlsr r4, r3, r2, r1 @ encoding: [0x63,0xfb,0x12,0x14] +@ CHECK: ite lo @ encoding: [0x34,0xbf] +@ CHECK: smmlslo r1, r2, r3, r4 @ encoding: [0x62,0xfb,0x03,0x41] +@ CHECK: smmlsrhs r4, r3, r2, r1 @ encoding: [0x63,0xfb,0x12,0x14] + + +@------------------------------------------------------------------------------ +@ SMMUL/SMMULR +@------------------------------------------------------------------------------ + smmul r2, r3, r4 + smmulr r3, r2, r1 + ite cc + smmulcc r2, r3, r4 + smmulrhs r3, r2, r1 + +@ CHECK: smmul r2, r3, r4 @ encoding: [0x53,0xfb,0x04,0xf2] +@ CHECK: smmulr r3, r2, r1 @ encoding: [0x52,0xfb,0x11,0xf3] +@ CHECK: ite lo @ encoding: [0x34,0xbf] +@ CHECK: smmullo r2, r3, r4 @ encoding: [0x53,0xfb,0x04,0xf2] +@ CHECK: smmulrhs r3, r2, r1 @ encoding: [0x52,0xfb,0x11,0xf3] + + +@------------------------------------------------------------------------------ +@ SMUAD/SMUADX +@------------------------------------------------------------------------------ + smuad r2, r3, r4 + smuadx r3, r2, r1 + ite lt + smuadlt r2, r3, r4 + smuadxge r3, r2, r1 + +@ CHECK: smuad r2, r3, r4 @ encoding: [0x23,0xfb,0x04,0xf2] +@ CHECK: smuadx r3, r2, r1 @ encoding: [0x22,0xfb,0x11,0xf3] +@ CHECK: ite lt @ encoding: [0xb4,0xbf] +@ CHECK: smuadlt r2, r3, r4 @ encoding: [0x23,0xfb,0x04,0xf2] +@ CHECK: smuadxge r3, r2, r1 @ encoding: [0x22,0xfb,0x11,0xf3] + + +@------------------------------------------------------------------------------ +@ SMULBB/SMULBT/SMULTB/SMULTT +@------------------------------------------------------------------------------ + smulbb r3, r9, r0 + smulbt r5, r4, r1 + smultb r4, r2, r2 + smultt r8, r3, r4 + itete ge + smulbbge r1, r9, r0 + smulbtlt r5, r6, r4 + smultbge r2, r3, r2 + smulttlt r8, r3, r4 + +@ CHECK: smulbb r3, r9, r0 @ encoding: [0x19,0xfb,0x00,0xf3] +@ CHECK: smulbt r5, r4, r1 @ encoding: [0x14,0xfb,0x11,0xf5] +@ CHECK: smultb r4, r2, r2 @ encoding: [0x12,0xfb,0x22,0xf4] +@ CHECK: smultt r8, r3, r4 @ encoding: [0x13,0xfb,0x34,0xf8] +@ CHECK: itete ge @ encoding: [0xab,0xbf] +@ CHECK: smulbbge r1, r9, r0 @ encoding: [0x19,0xfb,0x00,0xf1] +@ CHECK: smulbtlt r5, r6, r4 @ encoding: [0x16,0xfb,0x14,0xf5] +@ CHECK: smultbge r2, r3, r2 @ encoding: [0x13,0xfb,0x22,0xf2] +@ CHECK: smulttlt r8, r3, r4 @ encoding: [0x13,0xfb,0x34,0xf8] + + +@------------------------------------------------------------------------------ +@ SMULL +@------------------------------------------------------------------------------ + smull r3, r9, r0, r1 + it eq + smulleq r8, r3, r4, r5 + +@ CHECK: smull r3, r9, r0, r1 @ encoding: [0x80,0xfb,0x01,0x39] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: smulleq r8, r3, r4, r5 @ encoding: [0x84,0xfb,0x05,0x83] + + +@------------------------------------------------------------------------------ +@ SMULWB/SMULWT +@------------------------------------------------------------------------------ + smulwb r3, r9, r0 + smulwt r3, r9, r2 + ite gt + smulwbgt r3, r9, r0 + smulwtle r3, r9, r2 + +@ CHECK: smulwb r3, r9, r0 @ encoding: [0x39,0xfb,0x00,0xf3] +@ CHECK: smulwt r3, r9, r2 @ encoding: [0x39,0xfb,0x12,0xf3] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: smulwbgt r3, r9, r0 @ encoding: [0x39,0xfb,0x00,0xf3] +@ CHECK: smulwtle r3, r9, r2 @ encoding: [0x39,0xfb,0x12,0xf3] + + +@------------------------------------------------------------------------------ +@ SMUSD/SMUSDX +@------------------------------------------------------------------------------ + smusd r3, r0, r1 + smusdx r3, r9, r2 + ite eq + smusdeq r8, r3, r2 + smusdxne r7, r4, r3 + +@ CHECK: smusd r3, r0, r1 @ encoding: [0x40,0xfb,0x01,0xf3] +@ CHECK: smusdx r3, r9, r2 @ encoding: [0x49,0xfb,0x12,0xf3] +@ CHECK: ite eq @ encoding: [0x0c,0xbf] +@ CHECK: smusdeq r8, r3, r2 @ encoding: [0x43,0xfb,0x02,0xf8] +@ CHECK: smusdxne r7, r4, r3 @ encoding: [0x44,0xfb,0x13,0xf7] + + +@------------------------------------------------------------------------------ +@ SRS +@------------------------------------------------------------------------------ + srsdb sp, #1 + srsia sp, #0 + + srsdb sp!, #19 + srsia sp!, #2 + + srsea sp, #10 + srsfd sp, #9 + + srsea sp!, #5 + srsfd sp!, #5 + + srs sp, #5 + srs sp!, #5 + +@ CHECK: srsdb sp, #1 @ encoding: [0x0d,0xe8,0x01,0xc0] +@ CHECK: srsia sp, #0 @ encoding: [0x8d,0xe9,0x00,0xc0] +@ CHECK: srsdb sp!, #19 @ encoding: [0x2d,0xe8,0x13,0xc0] +@ CHECK: srsia sp!, #2 @ encoding: [0xad,0xe9,0x02,0xc0] +@ CHECK: srsdb sp, #10 @ encoding: [0x0d,0xe8,0x0a,0xc0] +@ CHECK: srsia sp, #9 @ encoding: [0x8d,0xe9,0x09,0xc0] +@ CHECK: srsdb sp!, #5 @ encoding: [0x2d,0xe8,0x05,0xc0] +@ CHECK: srsia sp!, #5 @ encoding: [0xad,0xe9,0x05,0xc0] +@ CHECK: srsia sp, #5 @ encoding: [0x8d,0xe9,0x05,0xc0] +@ CHECK: srsia sp!, #5 @ encoding: [0xad,0xe9,0x05,0xc0] + + +@------------------------------------------------------------------------------ +@ SSAT +@------------------------------------------------------------------------------ + ssat r8, #1, r10 + ssat r8, #1, r10, lsl #0 + ssat r8, #1, r10, lsl #31 + ssat r8, #1, r10, asr #32 + ssat r8, #1, r10, asr #1 + +@ CHECK: ssat r8, #1, r10 @ encoding: [0x0a,0xf3,0x00,0x08] +@ CHECK: ssat r8, #1, r10 @ encoding: [0x0a,0xf3,0x00,0x08] +@ CHECK: ssat r8, #1, r10, lsl #31 @ encoding: [0x0a,0xf3,0xc0,0x78] +@ CHECK: ssat r8, #1, r10, asr #32 @ encoding: [0x2a,0xf3,0x00,0x08] +@ CHECK: ssat r8, #1, r10, asr #1 @ encoding: [0x2a,0xf3,0x40,0x08] + + +@------------------------------------------------------------------------------ +@ SSAT16 +@------------------------------------------------------------------------------ + ssat16 r2, #1, r7 + ssat16 r3, #16, r5 + +@ CHECK: ssat16 r2, #1, r7 @ encoding: [0x27,0xf3,0x00,0x02] +@ CHECK: ssat16 r3, #16, r5 @ encoding: [0x25,0xf3,0x0f,0x03] + + +@------------------------------------------------------------------------------ +@ SSAX +@------------------------------------------------------------------------------ + ssubaddx r2, r3, r4 + it lt + ssubaddxlt r2, r3, r4 + ssax r2, r3, r4 + it lt + ssaxlt r2, r3, r4 + +@ CHECK: ssax r2, r3, r4 @ encoding: [0xe3,0xfa,0x04,0xf2] +@ CHECK: it lt @ encoding: [0xb8,0xbf] +@ CHECK: ssaxlt r2, r3, r4 @ encoding: [0xe3,0xfa,0x04,0xf2] +@ CHECK: ssax r2, r3, r4 @ encoding: [0xe3,0xfa,0x04,0xf2] +@ CHECK: it lt @ encoding: [0xb8,0xbf] +@ CHECK: ssaxlt r2, r3, r4 @ encoding: [0xe3,0xfa,0x04,0xf2] + + +@------------------------------------------------------------------------------ +@ SSUB16/SSUB8 +@------------------------------------------------------------------------------ + ssub16 r1, r0, r6 + ssub8 r9, r2, r4 + ite ne + ssub16ne r5, r3, r2 + ssub8eq r5, r1, r2 + +@ CHECK: ssub16 r1, r0, r6 @ encoding: [0xd0,0xfa,0x06,0xf1] +@ CHECK: ssub8 r9, r2, r4 @ encoding: [0xc2,0xfa,0x04,0xf9] +@ CHECK: ite ne @ encoding: [0x14,0xbf] +@ CHECK: ssub16ne r5, r3, r2 @ encoding: [0xd3,0xfa,0x02,0xf5] +@ CHECK: ssub8eq r5, r1, r2 @ encoding: [0xc1,0xfa,0x02,0xf5] + + +@------------------------------------------------------------------------------ +@ STMIA +@------------------------------------------------------------------------------ + stmia.w r4, {r4, r5, r8, r9} + stmia.w r4, {r5, r6} + stmia.w r5!, {r3, r8} + stm.w r4, {r4, r5, r8, r9} + stm.w r4, {r5, r6} + stm.w r5!, {r3, r8} + stm.w r5!, {r1, r2} + stm.w r2, {r1, r2} + + stmia r4, {r4, r5, r8, r9} + stmia r4, {r5, r6} + stmia r5!, {r3, r8} + stm r4, {r4, r5, r8, r9} + stm r4, {r5, r6} + stm r5!, {r3, r8} + stmea r5!, {r3, r8} + +@ CHECK: stm.w r4, {r4, r5, r8, r9} @ encoding: [0x84,0xe8,0x30,0x03] +@ CHECK: stm.w r4, {r5, r6} @ encoding: [0x84,0xe8,0x60,0x00] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] +@ CHECK: stm.w r4, {r4, r5, r8, r9} @ encoding: [0x84,0xe8,0x30,0x03] +@ CHECK: stm.w r4, {r5, r6} @ encoding: [0x84,0xe8,0x60,0x00] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] +@ CHECK: stm.w r5!, {r1, r2} @ encoding: [0xa5,0xe8,0x06,0x00] +@ CHECK: stm.w r2, {r1, r2} @ encoding: [0x82,0xe8,0x06,0x00] + +@ CHECK: stm.w r4, {r4, r5, r8, r9} @ encoding: [0x84,0xe8,0x30,0x03] +@ CHECK: stm.w r4, {r5, r6} @ encoding: [0x84,0xe8,0x60,0x00] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] +@ CHECK: stm.w r4, {r4, r5, r8, r9} @ encoding: [0x84,0xe8,0x30,0x03] +@ CHECK: stm.w r4, {r5, r6} @ encoding: [0x84,0xe8,0x60,0x00] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] + + +@------------------------------------------------------------------------------ +@ STMDB +@------------------------------------------------------------------------------ + stmdb r4, {r4, r5, r8, r9} + stmdb r4, {r5, r6} + stmdb r5!, {r3, r8} + stmea r5!, {r3, r8} + +@ CHECK: stmdb r4, {r4, r5, r8, r9} @ encoding: [0x04,0xe9,0x30,0x03] +@ CHECK: stmdb r4, {r5, r6} @ encoding: [0x04,0xe9,0x60,0x00] +@ CHECK: stmdb r5!, {r3, r8} @ encoding: [0x25,0xe9,0x08,0x01] +@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01] + + +@------------------------------------------------------------------------------ +@ STR(immediate) +@------------------------------------------------------------------------------ + str r5, [r5, #-4] + str r5, [r6, #32] + str r5, [r6, #33] + str r5, [r6, #257] + str.w pc, [r7, #257] + str r2, [r4, #255]! + str r8, [sp, #4]! + str lr, [sp, #-4]! + str r2, [r4], #255 + str r8, [sp], #4 + str lr, [sp], #-4 + +@ CHECK: str r5, [r5, #-4] @ encoding: [0x45,0xf8,0x04,0x5c] +@ CHECK: str r5, [r6, #32] @ encoding: [0x35,0x62] +@ CHECK: str.w r5, [r6, #33] @ encoding: [0xc6,0xf8,0x21,0x50] +@ CHECK: str.w r5, [r6, #257] @ encoding: [0xc6,0xf8,0x01,0x51] +@ CHECK: str.w pc, [r7, #257] @ encoding: [0xc7,0xf8,0x01,0xf1] +@ CHECK: str r2, [r4, #255]! @ encoding: [0x44,0xf8,0xff,0x2f] +@ CHECK: str r8, [sp, #4]! @ encoding: [0x4d,0xf8,0x04,0x8f] +@ CHECK: str lr, [sp, #-4]! @ encoding: [0x4d,0xf8,0x04,0xed] +@ CHECK: str r2, [r4], #255 @ encoding: [0x44,0xf8,0xff,0x2b] +@ CHECK: str r8, [sp], #4 @ encoding: [0x4d,0xf8,0x04,0x8b] +@ CHECK: str lr, [sp], #-4 @ encoding: [0x4d,0xf8,0x04,0xe9] + + +@------------------------------------------------------------------------------ +@ STR(register) +@------------------------------------------------------------------------------ + str r1, [r8, r1] + str.w r4, [r5, r2] + str r6, [r0, r2, lsl #3] + str r8, [r8, r2, lsl #2] + str r7, [sp, r2, lsl #1] + str r7, [sp, r2, lsl #0] + +@ CHECK: str.w r1, [r8, r1] @ encoding: [0x48,0xf8,0x01,0x10] +@ CHECK: str.w r4, [r5, r2] @ encoding: [0x45,0xf8,0x02,0x40] +@ CHECK: str.w r6, [r0, r2, lsl #3] @ encoding: [0x40,0xf8,0x32,0x60] +@ CHECK: str.w r8, [r8, r2, lsl #2] @ encoding: [0x48,0xf8,0x22,0x80] +@ CHECK: str.w r7, [sp, r2, lsl #1] @ encoding: [0x4d,0xf8,0x12,0x70] +@ CHECK: str.w r7, [sp, r2] @ encoding: [0x4d,0xf8,0x02,0x70] + + +@------------------------------------------------------------------------------ +@ STRB(immediate) +@------------------------------------------------------------------------------ + strb r5, [r5, #-4] + strb r5, [r6, #32] + strb r5, [r6, #33] + strb r5, [r6, #257] + strb.w lr, [r7, #257] + strb r5, [r8, #255]! + strb r2, [r5, #4]! + strb r1, [r4, #-4]! + strb lr, [r3], #255 + strb r9, [r2], #4 + strb r3, [sp], #-4 + +@ CHECK: strb r5, [r5, #-4] @ encoding: [0x05,0xf8,0x04,0x5c] +@ CHECK: strb.w r5, [r6, #32] @ encoding: [0x86,0xf8,0x20,0x50] +@ CHECK: strb.w r5, [r6, #33] @ encoding: [0x86,0xf8,0x21,0x50] +@ CHECK: strb.w r5, [r6, #257] @ encoding: [0x86,0xf8,0x01,0x51] +@ CHECK: strb.w lr, [r7, #257] @ encoding: [0x87,0xf8,0x01,0xe1] +@ CHECK: strb r5, [r8, #255]! @ encoding: [0x08,0xf8,0xff,0x5f] +@ CHECK: strb r2, [r5, #4]! @ encoding: [0x05,0xf8,0x04,0x2f] +@ CHECK: strb r1, [r4, #-4]! @ encoding: [0x04,0xf8,0x04,0x1d] +@ CHECK: strb lr, [r3], #255 @ encoding: [0x03,0xf8,0xff,0xeb] +@ CHECK: strb r9, [r2], #4 @ encoding: [0x02,0xf8,0x04,0x9b] +@ CHECK: strb r3, [sp], #-4 @ encoding: [0x0d,0xf8,0x04,0x39] + + +@------------------------------------------------------------------------------ +@ STRB(register) +@------------------------------------------------------------------------------ + strb r1, [r8, r1] + strb.w r4, [r5, r2] + strb r6, [r0, r2, lsl #3] + strb r8, [r8, r2, lsl #2] + strb r7, [sp, r2, lsl #1] + strb r7, [sp, r2, lsl #0] + +@ CHECK: strb.w r1, [r8, r1] @ encoding: [0x08,0xf8,0x01,0x10] +@ CHECK: strb.w r4, [r5, r2] @ encoding: [0x05,0xf8,0x02,0x40] +@ CHECK: strb.w r6, [r0, r2, lsl #3] @ encoding: [0x00,0xf8,0x32,0x60] +@ CHECK: strb.w r8, [r8, r2, lsl #2] @ encoding: [0x08,0xf8,0x22,0x80] +@ CHECK: strb.w r7, [sp, r2, lsl #1] @ encoding: [0x0d,0xf8,0x12,0x70] +@ CHECK: strb.w r7, [sp, r2] @ encoding: [0x0d,0xf8,0x02,0x70] + + +@------------------------------------------------------------------------------ +@ STRBT +@------------------------------------------------------------------------------ + strbt r1, [r2] + strbt r1, [r8, #0] + strbt r1, [r8, #3] + strbt r1, [r8, #255] + +@ CHECK: strbt r1, [r2] @ encoding: [0x02,0xf8,0x00,0x1e] +@ CHECK: strbt r1, [r8] @ encoding: [0x08,0xf8,0x00,0x1e] +@ CHECK: strbt r1, [r8, #3] @ encoding: [0x08,0xf8,0x03,0x1e] +@ CHECK: strbt r1, [r8, #255] @ encoding: [0x08,0xf8,0xff,0x1e] + + +@------------------------------------------------------------------------------ +@ STRD +@------------------------------------------------------------------------------ + strd r3, r5, [r6, #24] + strd r3, r5, [r6, #24]! + strd r3, r5, [r6], #4 + strd r3, r5, [r6], #-8 + strd r3, r5, [r6] + strd r8, r1, [r3, #0] + +@ CHECK: strd r3, r5, [r6, #24] @ encoding: [0xc6,0xe9,0x06,0x35] +@ CHECK: strd r3, r5, [r6, #24]! @ encoding: [0xe6,0xe9,0x06,0x35] +@ CHECK: strd r3, r5, [r6], #4 @ encoding: [0xe6,0xe8,0x01,0x35] +@ CHECK: strd r3, r5, [r6], #-8 @ encoding: [0x66,0xe8,0x02,0x35] +@ CHECK: strd r3, r5, [r6] @ encoding: [0xc6,0xe9,0x00,0x35] +@ CHECK: strd r8, r1, [r3] @ encoding: [0xc3,0xe9,0x00,0x81] + + +@------------------------------------------------------------------------------ +@ STREX/STREXB/STREXH/STREXD +@------------------------------------------------------------------------------ + strex r1, r8, [r4] + strex r8, r2, [r4, #0] + strex r2, r12, [sp, #128] + strexb r5, r1, [r7] + strexh r9, r7, [r12] + strexd r9, r3, r6, [r4] + +@ CHECK: strex r1, r8, [r4] @ encoding: [0x44,0xe8,0x00,0x81] +@ CHECK: strex r8, r2, [r4] @ encoding: [0x44,0xe8,0x00,0x28] +@ CHECK: strex r2, r12, [sp, #128] @ encoding: [0x4d,0xe8,0x20,0xc2] +@ CHECK: strexb r5, r1, [r7] @ encoding: [0xc7,0xe8,0x45,0x1f] +@ CHECK: strexh r9, r7, [r12] @ encoding: [0xcc,0xe8,0x59,0x7f] +@ CHECK: strexd r9, r3, r6, [r4] @ encoding: [0xc4,0xe8,0x79,0x36] + + +@------------------------------------------------------------------------------ +@ STRH(immediate) +@------------------------------------------------------------------------------ + strh r5, [r5, #-4] + strh r5, [r6, #32] + strh r5, [r6, #33] + strh r5, [r6, #257] + strh.w lr, [r7, #257] + strh r5, [r8, #255]! + strh r2, [r5, #4]! + strh r1, [r4, #-4]! + strh lr, [r3], #255 + strh r9, [r2], #4 + strh r3, [sp], #-4 + +@ CHECK: strh r5, [r5, #-4] @ encoding: [0x25,0xf8,0x04,0x5c] +@ CHECK: strh r5, [r6, #32] @ encoding: [0x35,0x84] +@ CHECK: strh.w r5, [r6, #33] @ encoding: [0xa6,0xf8,0x21,0x50] +@ CHECK: strh.w r5, [r6, #257] @ encoding: [0xa6,0xf8,0x01,0x51] +@ CHECK: strh.w lr, [r7, #257] @ encoding: [0xa7,0xf8,0x01,0xe1] +@ CHECK: strh r5, [r8, #255]! @ encoding: [0x28,0xf8,0xff,0x5f] +@ CHECK: strh r2, [r5, #4]! @ encoding: [0x25,0xf8,0x04,0x2f] +@ CHECK: strh r1, [r4, #-4]! @ encoding: [0x24,0xf8,0x04,0x1d] +@ CHECK: strh lr, [r3], #255 @ encoding: [0x23,0xf8,0xff,0xeb] +@ CHECK: strh r9, [r2], #4 @ encoding: [0x22,0xf8,0x04,0x9b] +@ CHECK: strh r3, [sp], #-4 @ encoding: [0x2d,0xf8,0x04,0x39] + + +@------------------------------------------------------------------------------ +@ STRH(register) +@------------------------------------------------------------------------------ + strh r1, [r8, r1] + strh.w r4, [r5, r2] + strh r6, [r0, r2, lsl #3] + strh r8, [r8, r2, lsl #2] + strh r7, [sp, r2, lsl #1] + strh r7, [sp, r2, lsl #0] + +@ CHECK: strh.w r1, [r8, r1] @ encoding: [0x28,0xf8,0x01,0x10] +@ CHECK: strh.w r4, [r5, r2] @ encoding: [0x25,0xf8,0x02,0x40] +@ CHECK: strh.w r6, [r0, r2, lsl #3] @ encoding: [0x20,0xf8,0x32,0x60] +@ CHECK: strh.w r8, [r8, r2, lsl #2] @ encoding: [0x28,0xf8,0x22,0x80] +@ CHECK: strh.w r7, [sp, r2, lsl #1] @ encoding: [0x2d,0xf8,0x12,0x70] +@ CHECK: strh.w r7, [sp, r2] @ encoding: [0x2d,0xf8,0x02,0x70] + + +@------------------------------------------------------------------------------ +@ STRHT +@------------------------------------------------------------------------------ + strht r1, [r2] + strht r1, [r8, #0] + strht r1, [r8, #3] + strht r1, [r8, #255] + +@ CHECK: strht r1, [r2] @ encoding: [0x22,0xf8,0x00,0x1e] +@ CHECK: strht r1, [r8] @ encoding: [0x28,0xf8,0x00,0x1e] +@ CHECK: strht r1, [r8, #3] @ encoding: [0x28,0xf8,0x03,0x1e] +@ CHECK: strht r1, [r8, #255] @ encoding: [0x28,0xf8,0xff,0x1e] + + +@------------------------------------------------------------------------------ +@ STRT +@------------------------------------------------------------------------------ + strt r1, [r2] + strt r1, [r8, #0] + strt r1, [r8, #3] + strt r1, [r8, #255] + +@ CHECK: strt r1, [r2] @ encoding: [0x42,0xf8,0x00,0x1e] +@ CHECK: strt r1, [r8] @ encoding: [0x48,0xf8,0x00,0x1e] +@ CHECK: strt r1, [r8, #3] @ encoding: [0x48,0xf8,0x03,0x1e] +@ CHECK: strt r1, [r8, #255] @ encoding: [0x48,0xf8,0xff,0x1e] + + +@------------------------------------------------------------------------------ +@ SUB (immediate) +@------------------------------------------------------------------------------ + itet eq + subeq r1, r2, #4 + subwne r5, r3, #1023 + subeq r4, r5, #293 + sub r2, sp, #1024 + sub r2, r8, #0xff00 + sub r2, r3, #257 + subw r2, r3, #257 + sub r12, r6, #0x100 + subw r12, r6, #0x100 + subs r1, r2, #0x1f0 + +@ CHECK: itet eq @ encoding: [0x0a,0xbf] +@ CHECK: subeq r1, r2, #4 @ encoding: [0x11,0x1f] +@ CHECK: subwne r5, r3, #1023 @ encoding: [0xa3,0xf2,0xff,0x35] +@ CHECK: subweq r4, r5, #293 @ encoding: [0xa5,0xf2,0x25,0x14] +@ CHECK: sub.w r2, sp, #1024 @ encoding: [0xad,0xf5,0x80,0x62] +@ CHECK: sub.w r2, r8, #65280 @ encoding: [0xa8,0xf5,0x7f,0x42] +@ CHECK: subw r2, r3, #257 @ encoding: [0xa3,0xf2,0x01,0x12] +@ CHECK: subw r2, r3, #257 @ encoding: [0xa3,0xf2,0x01,0x12] +@ CHECK: sub.w r12, r6, #256 @ encoding: [0xa6,0xf5,0x80,0x7c] +@ CHECK: subw r12, r6, #256 @ encoding: [0xa6,0xf2,0x00,0x1c] +@ CHECK: subs.w r1, r2, #496 @ encoding: [0xb2,0xf5,0xf8,0x71] + + @------------------------------------------------------------------------------ @ SUB (register) @------------------------------------------------------------------------------ + sub r4, r5, r6 + sub r4, r5, r6, lsl #5 + sub r4, r5, r6, lsr #5 + sub.w r4, r5, r6, lsr #5 + sub r4, r5, r6, asr #5 + sub r4, r5, r6, ror #5 sub.w r5, r2, r12, rrx -@ CHECK: sub.w r5, r2, r12, rrx @ encoding: [0xa2,0xeb,0x3c,0x05] +@ CHECK: sub.w r4, r5, r6 @ encoding: [0xa5,0xeb,0x06,0x04] +@ CHECK: sub.w r4, r5, r6, lsl #5 @ encoding: [0xa5,0xeb,0x46,0x14] +@ CHECK: sub.w r4, r5, r6, lsr #5 @ encoding: [0xa5,0xeb,0x56,0x14] +@ CHECK: sub.w r4, r5, r6, lsr #5 @ encoding: [0xa5,0xeb,0x56,0x14] +@ CHECK: sub.w r4, r5, r6, asr #5 @ encoding: [0xa5,0xeb,0x66,0x14] +@ CHECK: sub.w r4, r5, r6, ror #5 @ encoding: [0xa5,0xeb,0x76,0x14] +@ CHECK: sub.w r5, r2, r12, rrx @ encoding: [0xa2,0xeb,0x3c,0x05] + + +@------------------------------------------------------------------------------ +@ SVC +@------------------------------------------------------------------------------ + svc #0 + ite eq + svceq #255 + swine #33 + +@ CHECK: svc #0 @ encoding: [0x00,0xdf] +@ CHECK: ite eq @ encoding: [0x0c,0xbf] +@ CHECK: svceq #255 @ encoding: [0xff,0xdf] +@ CHECK: svcne #33 @ encoding: [0x21,0xdf] + + +@------------------------------------------------------------------------------ +@ SXTAB +@------------------------------------------------------------------------------ + sxtab r2, r3, r4 + sxtab r4, r5, r6, ror #0 + it lt + sxtablt r6, r2, r9, ror #8 + sxtab r5, r1, r4, ror #16 + sxtab r7, r8, r3, ror #24 + +@ CHECK: sxtab r2, r3, r4 @ encoding: [0x43,0xfa,0x84,0xf2] +@ CHECK: sxtab r4, r5, r6 @ encoding: [0x45,0xfa,0x86,0xf4] +@ CHECK: it lt @ encoding: [0xb8,0xbf] +@ CHECK: sxtablt r6, r2, r9, ror #8 @ encoding: [0x42,0xfa,0x99,0xf6] +@ CHECK: sxtab r5, r1, r4, ror #16 @ encoding: [0x41,0xfa,0xa4,0xf5] +@ CHECK: sxtab r7, r8, r3, ror #24 @ encoding: [0x48,0xfa,0xb3,0xf7] + + +@------------------------------------------------------------------------------ +@ SXTAB16 +@------------------------------------------------------------------------------ + sxtab16 r6, r2, r7, ror #0 + sxtab16 r3, r5, r8, ror #8 + sxtab16 r3, r2, r1, ror #16 + ite ne + sxtab16ne r0, r1, r4 + sxtab16eq r1, r2, r3, ror #24 + +@ CHECK: sxtab16 r6, r2, r7 @ encoding: [0x22,0xfa,0x87,0xf6] +@ CHECK: sxtab16 r3, r5, r8, ror #8 @ encoding: [0x25,0xfa,0x98,0xf3] +@ CHECK: sxtab16 r3, r2, r1, ror #16 @ encoding: [0x22,0xfa,0xa1,0xf3] +@ CHECK: ite ne @ encoding: [0x14,0xbf] +@ CHECK: sxtab16ne r0, r1, r4 @ encoding: [0x21,0xfa,0x84,0xf0] +@ CHECK: sxtab16eq r1, r2, r3, ror #24 @ encoding: [0x22,0xfa,0xb3,0xf1] + + +@------------------------------------------------------------------------------ +@ SXTAH +@------------------------------------------------------------------------------ + sxtah r1, r3, r9 + sxtah r3, r8, r3, ror #8 + sxtah r9, r3, r3, ror #24 + ite hi + sxtahhi r6, r1, r6, ror #0 + sxtahls r2, r2, r4, ror #16 + +@ CHECK: sxtah r1, r3, r9 @ encoding: [0x03,0xfa,0x89,0xf1] +@ CHECK: sxtah r3, r8, r3, ror #8 @ encoding: [0x08,0xfa,0x93,0xf3] +@ CHECK: sxtah r9, r3, r3, ror #24 @ encoding: [0x03,0xfa,0xb3,0xf9] +@ CHECK: ite hi @ encoding: [0x8c,0xbf] +@ CHECK: sxtahhi r6, r1, r6 @ encoding: [0x01,0xfa,0x86,0xf6] +@ CHECK: sxtahls r2, r2, r4, ror #16 @ encoding: [0x02,0xfa,0xa4,0xf2] + + +@------------------------------------------------------------------------------ +@ SXTB +@------------------------------------------------------------------------------ + sxtb r5, r6, ror #0 + sxtb r6, r9, ror #8 + sxtb r8, r3, ror #24 + ite ge + sxtbge r2, r4 + sxtblt r5, r1, ror #16 + +@ CHECK: sxtb r5, r6 @ encoding: [0x75,0xb2] +@ CHECK: sxtb.w r6, r9, ror #8 @ encoding: [0x4f,0xfa,0x99,0xf6] +@ CHECK: sxtb.w r8, r3, ror #24 @ encoding: [0x4f,0xfa,0xb3,0xf8] +@ CHECK: ite ge @ encoding: [0xac,0xbf] +@ CHECK: sxtbge r2, r4 @ encoding: [0x62,0xb2] +@ CHECK: sxtblt.w r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5] + + +@------------------------------------------------------------------------------ +@ SXTB16 +@------------------------------------------------------------------------------ + sxtb16 r1, r4 + sxtb16 r6, r7, ror #0 + sxtb16 r3, r1, ror #16 + ite cs + sxtb16cs r3, r5, ror #8 + sxtb16lo r2, r3, ror #24 + +@ CHECK: sxtb16 r1, r4 @ encoding: [0x2f,0xfa,0x84,0xf1] +@ CHECK: sxtb16 r6, r7 @ encoding: [0x2f,0xfa,0x87,0xf6] +@ CHECK: sxtb16 r3, r1, ror #16 @ encoding: [0x2f,0xfa,0xa1,0xf3] +@ CHECK: ite hs @ encoding: [0x2c,0xbf] +@ CHECK: sxtb16hs r3, r5, ror #8 @ encoding: [0x2f,0xfa,0x95,0xf3] +@ CHECK: sxtb16lo r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2] + + +@------------------------------------------------------------------------------ +@ SXTH +@------------------------------------------------------------------------------ + sxth r1, r6, ror #0 + sxth r3, r8, ror #8 + sxth r9, r3, ror #24 + itt ne + sxthne r3, r9 + sxthne r2, r2, ror #16 + +@ CHECK: sxth r1, r6 @ encoding: [0x31,0xb2] +@ CHECK: sxth.w r3, r8, ror #8 @ encoding: [0x0f,0xfa,0x98,0xf3] +@ CHECK: sxth.w r9, r3, ror #24 @ encoding: [0x0f,0xfa,0xb3,0xf9] +@ CHECK: itt ne @ encoding: [0x1c,0xbf] +@ CHECK: sxthne.w r3, r9 @ encoding: [0x0f,0xfa,0x89,0xf3] +@ CHECK: sxthne.w r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2] + + +@------------------------------------------------------------------------------ +@ SXTB +@------------------------------------------------------------------------------ + sxtb r5, r6, ror #0 + sxtb.w r6, r9, ror #8 + sxtb r8, r3, ror #24 + ite ge + sxtbge r2, r4 + sxtblt r5, r1, ror #16 + +@ CHECK: sxtb r5, r6 @ encoding: [0x75,0xb2] +@ CHECK: sxtb.w r6, r9, ror #8 @ encoding: [0x4f,0xfa,0x99,0xf6] +@ CHECK: sxtb.w r8, r3, ror #24 @ encoding: [0x4f,0xfa,0xb3,0xf8] +@ CHECK: ite ge @ encoding: [0xac,0xbf] +@ CHECK: sxtbge r2, r4 @ encoding: [0x62,0xb2] +@ CHECK: sxtblt.w r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5] + + +@------------------------------------------------------------------------------ +@ SXTB16 +@------------------------------------------------------------------------------ + sxtb16 r1, r4 + sxtb16 r6, r7, ror #0 + sxtb16 r3, r1, ror #16 + ite cs + sxtb16cs r3, r5, ror #8 + sxtb16lo r2, r3, ror #24 + +@ CHECK: sxtb16 r1, r4 @ encoding: [0x2f,0xfa,0x84,0xf1] +@ CHECK: sxtb16 r6, r7 @ encoding: [0x2f,0xfa,0x87,0xf6] +@ CHECK: sxtb16 r3, r1, ror #16 @ encoding: [0x2f,0xfa,0xa1,0xf3] +@ CHECK: ite hs @ encoding: [0x2c,0xbf] +@ CHECK: sxtb16hs r3, r5, ror #8 @ encoding: [0x2f,0xfa,0x95,0xf3] +@ CHECK: sxtb16lo r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2] + + +@------------------------------------------------------------------------------ +@ SXTH +@------------------------------------------------------------------------------ + sxth r1, r6, ror #0 + sxth.w r3, r8, ror #8 + sxth r9, r3, ror #24 + itt ne + sxthne r3, r9 + sxthne r2, r2, ror #16 + +@ CHECK: sxth r1, r6 @ encoding: [0x31,0xb2] +@ CHECK: sxth.w r3, r8, ror #8 @ encoding: [0x0f,0xfa,0x98,0xf3] +@ CHECK: sxth.w r9, r3, ror #24 @ encoding: [0x0f,0xfa,0xb3,0xf9] +@ CHECK: itt ne @ encoding: [0x1c,0xbf] +@ CHECK: sxthne.w r3, r9 @ encoding: [0x0f,0xfa,0x89,0xf3] +@ CHECK: sxthne.w r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2] + + +@------------------------------------------------------------------------------ +@ TBB/TBH +@------------------------------------------------------------------------------ + tbb [r3, r8] + tbh [r3, r8, lsl #1] + it eq + tbbeq [r3, r8] + it cs + tbhcs [r3, r8, lsl #1] + +@ CHECK: tbb [r3, r8] @ encoding: [0xd3,0xe8,0x08,0xf0] +@ CHECK: tbh [r3, r8, lsl #1] @ encoding: [0xd3,0xe8,0x18,0xf0] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: tbbeq [r3, r8] @ encoding: [0xd3,0xe8,0x08,0xf0] +@ CHECK: it hs @ encoding: [0x28,0xbf] +@ CHECK: tbhhs [r3, r8, lsl #1] @ encoding: [0xd3,0xe8,0x18,0xf0] + + +@------------------------------------------------------------------------------ +@ TEQ +@------------------------------------------------------------------------------ + teq r5, #0xf000 + teq r4, r5 + teq r4, r5, lsl #5 + teq r4, r5, lsr #5 + teq r4, r5, lsr #5 + teq r4, r5, asr #5 + teq r4, r5, ror #5 + +@ CHECK: teq.w r5, #61440 @ encoding: [0x95,0xf4,0x70,0x4f] +@ CHECK: teq.w r4, r5 @ encoding: [0x94,0xea,0x05,0x0f] +@ CHECK: teq.w r4, r5, lsl #5 @ encoding: [0x94,0xea,0x45,0x1f] +@ CHECK: teq.w r4, r5, lsr #5 @ encoding: [0x94,0xea,0x55,0x1f] +@ CHECK: teq.w r4, r5, lsr #5 @ encoding: [0x94,0xea,0x55,0x1f] +@ CHECK: teq.w r4, r5, asr #5 @ encoding: [0x94,0xea,0x65,0x1f] +@ CHECK: teq.w r4, r5, ror #5 @ encoding: [0x94,0xea,0x75,0x1f] + + +@------------------------------------------------------------------------------ +@ TST +@------------------------------------------------------------------------------ + tst r5, #0xf000 + tst r2, r5 + tst r3, r12, lsl #5 + tst r4, r11, lsr #4 + tst r5, r10, lsr #12 + tst r6, r9, asr #30 + tst r7, r8, ror #2 + +@ CHECK: tst.w r5, #61440 @ encoding: [0x15,0xf4,0x70,0x4f] +@ CHECK: tst r2, r5 @ encoding: [0x2a,0x42] +@ CHECK: tst.w r3, r12, lsl #5 @ encoding: [0x13,0xea,0x4c,0x1f] +@ CHECK: tst.w r4, r11, lsr #4 @ encoding: [0x14,0xea,0x1b,0x1f] +@ CHECK: tst.w r5, r10, lsr #12 @ encoding: [0x15,0xea,0x1a,0x3f] +@ CHECK: tst.w r6, r9, asr #30 @ encoding: [0x16,0xea,0xa9,0x7f] +@ CHECK: tst.w r7, r8, ror #2 @ encoding: [0x17,0xea,0xb8,0x0f] + + +@------------------------------------------------------------------------------ +@ UADD16/UADD8 +@------------------------------------------------------------------------------ + uadd16 r1, r2, r3 + uadd8 r1, r2, r3 + ite gt + uadd16gt r1, r2, r3 + uadd8le r1, r2, r3 + +@ CHECK: uadd16 r1, r2, r3 @ encoding: [0x92,0xfa,0x43,0xf1] +@ CHECK: uadd8 r1, r2, r3 @ encoding: [0x82,0xfa,0x43,0xf1] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: uadd16gt r1, r2, r3 @ encoding: [0x92,0xfa,0x43,0xf1] +@ CHECK: uadd8le r1, r2, r3 @ encoding: [0x82,0xfa,0x43,0xf1] + + +@------------------------------------------------------------------------------ +@ UASX +@------------------------------------------------------------------------------ + uasx r9, r12, r0 + it eq + uasxeq r9, r12, r0 + uaddsubx r9, r12, r0 + it eq + uaddsubxeq r9, r12, r0 + +@ CHECK: uasx r9, r12, r0 @ encoding: [0xac,0xfa,0x40,0xf9] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: uasxeq r9, r12, r0 @ encoding: [0xac,0xfa,0x40,0xf9] +@ CHECK: uasx r9, r12, r0 @ encoding: [0xac,0xfa,0x40,0xf9] +@ CHECK: it eq @ encoding: [0x08,0xbf] +@ CHECK: uasxeq r9, r12, r0 @ encoding: [0xac,0xfa,0x40,0xf9] + + +@------------------------------------------------------------------------------ +@ UBFX +@------------------------------------------------------------------------------ + ubfx r4, r5, #16, #1 + it gt + ubfxgt r4, r5, #16, #16 + +@ CHECK: ubfx r4, r5, #16, #1 @ encoding: [0xc5,0xf3,0x00,0x44] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: ubfxgt r4, r5, #16, #16 @ encoding: [0xc5,0xf3,0x0f,0x44] + + +@------------------------------------------------------------------------------ +@ UHADD16/UHADD8 +@------------------------------------------------------------------------------ + uhadd16 r4, r8, r2 + uhadd8 r4, r8, r2 + itt gt + uhadd16gt r4, r8, r2 + uhadd8gt r4, r8, r2 + +@ CHECK: uhadd16 r4, r8, r2 @ encoding: [0x98,0xfa,0x62,0xf4] +@ CHECK: uhadd8 r4, r8, r2 @ encoding: [0x88,0xfa,0x62,0xf4] +@ CHECK: itt gt @ encoding: [0xc4,0xbf] +@ CHECK: uhadd16gt r4, r8, r2 @ encoding: [0x98,0xfa,0x62,0xf4] +@ CHECK: uhadd8gt r4, r8, r2 @ encoding: [0x88,0xfa,0x62,0xf4] + + +@------------------------------------------------------------------------------ +@ UHASX/UHSAX +@------------------------------------------------------------------------------ + uhasx r4, r1, r5 + uhsax r5, r6, r6 + itt gt + uhasxgt r6, r9, r8 + uhsaxgt r7, r8, r12 + uhaddsubx r4, r1, r5 + uhsubaddx r5, r6, r6 + itt gt + uhaddsubxgt r6, r9, r8 + uhsubaddxgt r7, r8, r12 + +@ CHECK: uhasx r4, r1, r5 @ encoding: [0xa1,0xfa,0x65,0xf4] +@ CHECK: uhsax r5, r6, r6 @ encoding: [0xe6,0xfa,0x66,0xf5] +@ CHECK: itt gt @ encoding: [0xc4,0xbf] +@ CHECK: uhasxgt r6, r9, r8 @ encoding: [0xa9,0xfa,0x68,0xf6] +@ CHECK: uhsaxgt r7, r8, r12 @ encoding: [0xe8,0xfa,0x6c,0xf7] +@ CHECK: uhasx r4, r1, r5 @ encoding: [0xa1,0xfa,0x65,0xf4] +@ CHECK: uhsax r5, r6, r6 @ encoding: [0xe6,0xfa,0x66,0xf5] +@ CHECK: itt gt @ encoding: [0xc4,0xbf] +@ CHECK: uhasxgt r6, r9, r8 @ encoding: [0xa9,0xfa,0x68,0xf6] +@ CHECK: uhsaxgt r7, r8, r12 @ encoding: [0xe8,0xfa,0x6c,0xf7] + + +@------------------------------------------------------------------------------ +@ UHSUB16/UHSUB8 +@------------------------------------------------------------------------------ + uhsub16 r5, r8, r3 + uhsub8 r1, r7, r6 + itt lt + uhsub16lt r4, r9, r12 + uhsub8lt r3, r1, r5 + +@ CHECK: uhsub16 r5, r8, r3 @ encoding: [0xd8,0xfa,0x63,0xf5] +@ CHECK: uhsub8 r1, r7, r6 @ encoding: [0xc7,0xfa,0x66,0xf1] +@ CHECK: itt lt @ encoding: [0xbc,0xbf] +@ CHECK: uhsub16lt r4, r9, r12 @ encoding: [0xd9,0xfa,0x6c,0xf4] +@ CHECK: uhsub8lt r3, r1, r5 @ encoding: [0xc1,0xfa,0x65,0xf3] + + +@------------------------------------------------------------------------------ +@ UMAAL +@------------------------------------------------------------------------------ + umaal r3, r4, r5, r6 + it lt + umaallt r3, r4, r5, r6 + +@ CHECK: umaal r3, r4, r5, r6 @ encoding: [0xe5,0xfb,0x66,0x34] +@ CHECK: it lt @ encoding: [0xb8,0xbf] +@ CHECK: umaallt r3, r4, r5, r6 @ encoding: [0xe5,0xfb,0x66,0x34] + + +@------------------------------------------------------------------------------ +@ UMLAL +@------------------------------------------------------------------------------ + umlal r2, r4, r6, r8 + it gt + umlalgt r6, r1, r2, r6 + +@ CHECK: umlal r2, r4, r6, r8 @ encoding: [0xe6,0xfb,0x08,0x24] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: umlalgt r6, r1, r2, r6 @ encoding: [0xe2,0xfb,0x06,0x61] + + +@------------------------------------------------------------------------------ +@ UMULL +@------------------------------------------------------------------------------ + umull r2, r4, r6, r8 + it gt + umullgt r6, r1, r2, r6 + +@ CHECK: umull r2, r4, r6, r8 @ encoding: [0xa6,0xfb,0x08,0x24] +@ CHECK: it gt @ encoding: [0xc8,0xbf] +@ CHECK: umullgt r6, r1, r2, r6 @ encoding: [0xa2,0xfb,0x06,0x61] + + +@------------------------------------------------------------------------------ +@ UQADD16/UQADD8 +@------------------------------------------------------------------------------ + uqadd16 r1, r2, r3 + uqadd8 r3, r4, r8 + ite gt + uqadd16gt r4, r7, r9 + uqadd8le r8, r1, r2 + +@ CHECK: uqadd16 r1, r2, r3 @ encoding: [0x92,0xfa,0x53,0xf1] +@ CHECK: uqadd8 r3, r4, r8 @ encoding: [0x84,0xfa,0x58,0xf3] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: uqadd16gt r4, r7, r9 @ encoding: [0x97,0xfa,0x59,0xf4] +@ CHECK: uqadd8le r8, r1, r2 @ encoding: [0x81,0xfa,0x52,0xf8] + + +@------------------------------------------------------------------------------ +@ UQASX/UQSAX +@------------------------------------------------------------------------------ + uqasx r1, r2, r3 + uqsax r3, r4, r8 + ite gt + uqasxgt r4, r7, r9 + uqsaxle r8, r1, r2 + + uqaddsubx r1, r2, r3 + uqsubaddx r3, r4, r8 + ite gt + uqaddsubxgt r4, r7, r9 + uqsubaddxle r8, r1, r2 + +@ CHECK: uqasx r1, r2, r3 @ encoding: [0xa2,0xfa,0x53,0xf1] +@ CHECK: uqsax r3, r4, r8 @ encoding: [0xe4,0xfa,0x58,0xf3] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: uqasxgt r4, r7, r9 @ encoding: [0xa7,0xfa,0x59,0xf4] +@ CHECK: uqsaxle r8, r1, r2 @ encoding: [0xe1,0xfa,0x52,0xf8] + +@ CHECK: uqasx r1, r2, r3 @ encoding: [0xa2,0xfa,0x53,0xf1] +@ CHECK: uqsax r3, r4, r8 @ encoding: [0xe4,0xfa,0x58,0xf3] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: uqasxgt r4, r7, r9 @ encoding: [0xa7,0xfa,0x59,0xf4] +@ CHECK: uqsaxle r8, r1, r2 @ encoding: [0xe1,0xfa,0x52,0xf8] + + +@------------------------------------------------------------------------------ +@ UQSUB16/UQSUB8 +@------------------------------------------------------------------------------ + uqsub8 r8, r2, r9 + uqsub16 r1, r9, r7 + ite gt + uqsub8gt r3, r1, r6 + uqsub16le r4, r6, r4 +@ CHECK: uqsub8 r8, r2, r9 @ encoding: [0xc2,0xfa,0x59,0xf8] +@ CHECK: uqsub16 r1, r9, r7 @ encoding: [0xd9,0xfa,0x57,0xf1] +@ CHECK: ite gt @ encoding: [0xcc,0xbf] +@ CHECK: uqsub8gt r3, r1, r6 @ encoding: [0xc1,0xfa,0x56,0xf3] +@ CHECK: uqsub16le r4, r6, r4 @ encoding: [0xd6,0xfa,0x54,0xf4]