Port over more Thumb2 encoding tests to decoding tests.
authorOwen Anderson <resistor@mac.com>
Tue, 20 Sep 2011 17:44:48 +0000 (17:44 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 20 Sep 2011 17:44:48 +0000 (17:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140152 91177308-0d34-0410-b5e6-96231b3b80d8

test/MC/Disassembler/ARM/thumb2.txt

index 1853264bb952c1ebed7a845148ff8977c9c2d5f1..790d0b8518a34343f51d05d4bf026567570d36ab 100644 (file)
 0xff 0xdf
 0x21 0xdf
 
+#------------------------------------------------------------------------------
+# SXTAB
+#------------------------------------------------------------------------------
+# CHECK:  sxtab r2, r3, r4
+# CHECK:  sxtab r4, r5, r6
+# CHECK:  it lt
+# CHECK:  sxtablt r6, r2, r9, ror #8
+# CHECK:  sxtab r5, r1, r4, ror #16
+# CHECK:  sxtab r7, r8, r3, ror #24
+
+0x43 0xfa 0x84 0xf2
+0x45 0xfa 0x86 0xf4
+0xb8 0xbf
+0x42 0xfa 0x99 0xf6
+0x41 0xfa 0xa4 0xf5
+0x48 0xfa 0xb3 0xf7
+
+
+#------------------------------------------------------------------------------
+# SXTAB16
+#------------------------------------------------------------------------------
+# CHECK:  sxtab16 r6, r2, r7
+# CHECK:  sxtab16 r3, r5, r8, ror #8
+# CHECK:  sxtab16 r3, r2, r1, ror #16
+# CHECK:  ite ne
+# CHECK:  sxtab16ne r0, r1, r4
+# CHECK:  sxtab16eq r1, r2, r3, ror #24
+
+0x22 0xfa 0x87 0xf6
+0x25 0xfa 0x98 0xf3
+0x22 0xfa 0xa1 0xf3
+0x14 0xbf
+0x21 0xfa 0x84 0xf0
+0x22 0xfa 0xb3 0xf1
+
+
+#------------------------------------------------------------------------------
+# SXTAH
+#------------------------------------------------------------------------------
+# CHECK:  sxtah r1, r3, r9
+# CHECK:  sxtah r3, r8, r3, ror #8
+# CHECK:  sxtah r9, r3, r3, ror #24
+# CHECK:  ite hi
+# CHECK:  sxtahhi r6, r1, r6
+# CHECK:  sxtahls r2, r2, r4, ror #16
+
+0x03 0xfa 0x89 0xf1
+0x08 0xfa 0x93 0xf3
+0x03 0xfa 0xb3 0xf9
+0x8c 0xbf
+0x01 0xfa 0x86 0xf6
+0x02 0xfa 0xa4 0xf2
+
+
+#------------------------------------------------------------------------------
+# SXTB
+#------------------------------------------------------------------------------
+# CHECK:  sxtb r5, r6
+# CHECK:  sxtb.w r6, r9, ror #8
+# CHECK:  sxtb.w r8, r3, ror #24
+# CHECK:  ite ge
+# CHECK:  sxtbge r2, r4
+# CHECK:  sxtblt.w r5, r1, ror #16
+
+0x75 0xb2
+0x4f 0xfa 0x99 0xf6
+0x4f 0xfa 0xb3 0xf8
+0xac 0xbf
+0x62 0xb2
+0x4f 0xfa 0xa1 0xf5
+
+
+#------------------------------------------------------------------------------
+# SXTB16
+#------------------------------------------------------------------------------
+# CHECK:  sxtb16 r1, r4
+# CHECK:  sxtb16 r6, r7
+# CHECK:  sxtb16 r3, r1, ror #16
+# CHECK:  ite hs
+# CHECK:  sxtb16hs r3, r5, ror #8
+# CHECK:  sxtb16lo r2, r3, ror #24
+
+0x2f 0xfa 0x84 0xf1
+0x2f 0xfa 0x87 0xf6
+0x2f 0xfa 0xa1 0xf3
+0x2c 0xbf
+0x2f 0xfa 0x95 0xf3
+0x2f 0xfa 0xb3 0xf2
+
+
+#------------------------------------------------------------------------------
+# SXTH
+#------------------------------------------------------------------------------
+# CHECK:  sxth r1, r6
+# CHECK:  sxth.w r3, r8, ror #8
+# CHECK:  sxth.w r9, r3, ror #24
+# CHECK:  itt ne
+# CHECK:  sxthne.w r3, r9
+# CHECK:  sxthne.w r2, r2, ror #16
+
+0x31 0xb2
+0x0f 0xfa 0x98 0xf3
+0x0f 0xfa 0xb3 0xf9
+0x1c 0xbf
+0x0f 0xfa 0x89 0xf3
+0x0f 0xfa 0xa2 0xf2
+
+
+#------------------------------------------------------------------------------
+# SXTB
+#------------------------------------------------------------------------------
+# CHECK:  sxtb r5, r6
+# CHECK:  sxtb.w r6, r9, ror #8
+# CHECK:  sxtb.w r8, r3, ror #24
+# CHECK:  ite ge
+# CHECK:  sxtbge r2, r4
+# CHECK:  sxtblt.w r5, r1, ror #16
+
+0x75 0xb2
+0x4f 0xfa 0x99 0xf6
+0x4f 0xfa 0xb3 0xf8
+0xac 0xbf
+0x62 0xb2
+0x4f 0xfa 0xa1 0xf5
+
+
+#------------------------------------------------------------------------------
+# SXTB16
+#------------------------------------------------------------------------------
+# CHECK:  sxtb16 r1, r4
+# CHECK:  sxtb16 r6, r7
+# CHECK:  sxtb16 r3, r1, ror #16
+# CHECK:  ite hs
+# CHECK:  sxtb16hs r3, r5, ror #8
+# CHECK:  sxtb16lo r2, r3, ror #24
+
+0x2f 0xfa 0x84 0xf1
+0x2f 0xfa 0x87 0xf6
+0x2f 0xfa 0xa1 0xf3
+0x2c 0xbf
+0x2f 0xfa 0x95 0xf3
+0x2f 0xfa 0xb3 0xf2
+
+
+#------------------------------------------------------------------------------
+# SXTH
+#------------------------------------------------------------------------------
+# CHECK:  sxth r1, r6
+# CHECK:  sxth.w r3, r8, ror #8
+# CHECK:  sxth.w r9, r3, ror #24
+# CHECK:  itt ne
+# CHECK:  sxthne.w r3, r9
+# CHECK:  sxthne.w r2, r2, ror #16
+
+0x31 0xb2
+0x0f 0xfa 0x98 0xf3
+0x0f 0xfa 0xb3 0xf9
+0x1c 0xbf
+0x0f 0xfa 0x89 0xf3
+0x0f 0xfa 0xa2 0xf2
+
+
+#------------------------------------------------------------------------------
+# TBB/TBH
+#------------------------------------------------------------------------------
+# CHECK:  tbb [r3, r8]
+# CHECK:  tbh [r3, r8, lsl #1]
+# CHECK:  it eq
+# CHECK:  tbbeq [r3, r8]
+# CHECK:  it hs
+# CHECK:  tbhhs [r3, r8, lsl #1]
+
+0xd3 0xe8 0x08 0xf0
+0xd3 0xe8 0x18 0xf0
+0x08 0xbf
+0xd3 0xe8 0x08 0xf0
+0x28 0xbf
+0xd3 0xe8 0x18 0xf0
+
+
+#------------------------------------------------------------------------------
+# TEQ
+#------------------------------------------------------------------------------
+# CHECK:  teq.w r5, #61440
+# CHECK:  teq.w r4, r5
+# CHECK:  teq.w r4, r5, lsl #5
+# CHECK:  teq.w r4, r5, lsr #5
+# CHECK:  teq.w r4, r5, lsr #5
+# CHECK:  teq.w r4, r5, asr #5
+# CHECK:  teq.w r4, r5, ror #5
+
+0x95 0xf4 0x70 0x4f
+0x94 0xea 0x05 0x0f
+0x94 0xea 0x45 0x1f
+0x94 0xea 0x55 0x1f
+0x94 0xea 0x55 0x1f
+0x94 0xea 0x65 0x1f
+0x94 0xea 0x75 0x1f
+
+
+#------------------------------------------------------------------------------
+# TST
+#------------------------------------------------------------------------------
+# CHECK:  tst.w r5, #61440
+# CHECK:  tst r2, r5
+# CHECK:  tst.w r3, r12, lsl #5
+# CHECK:  tst.w r4, r11, lsr #4
+# CHECK:  tst.w r5, r10, lsr #12
+# CHECK:  tst.w r6, r9, asr #30
+# CHECK:  tst.w r7, r8, ror #2
+
+0x15 0xf4 0x70 0x4f
+0x2a 0x42
+0x13 0xea 0x4c 0x1f
+0x14 0xea 0x1b 0x1f
+0x15 0xea 0x1a 0x3f
+0x16 0xea 0xa9 0x7f
+0x17 0xea 0xb8 0x0f
+
+
+#------------------------------------------------------------------------------
+# UADD16/UADD8
+#------------------------------------------------------------------------------
+# CHECK:  uadd16 r1, r2, r3
+# CHECK:  uadd8 r1, r2, r3
+# CHECK:  ite gt
+# CHECK:  uadd16gt r1, r2, r3
+# CHECK:  uadd8le r1, r2, r3
+
+0x92 0xfa 0x43 0xf1
+0x82 0xfa 0x43 0xf1
+0xcc 0xbf
+0x92 0xfa 0x43 0xf1
+0x82 0xfa 0x43 0xf1
+
+
+#------------------------------------------------------------------------------
+# UASX
+#------------------------------------------------------------------------------
+# CHECK:  uasx r9, r12, r0
+# CHECK:  it eq
+# CHECK:  uasxeq r9, r12, r0
+# CHECK:  uasx r9, r12, r0
+# CHECK:  it eq
+# CHECK:  uasxeq r9, r12, r0
+
+0xac 0xfa 0x40 0xf9
+0x08 0xbf
+0xac 0xfa 0x40 0xf9
+0xac 0xfa 0x40 0xf9
+0x08 0xbf
+0xac 0xfa 0x40 0xf9
+
+
+#------------------------------------------------------------------------------
+# UBFX
+#------------------------------------------------------------------------------
+# CHECK:  ubfx r4, r5, #16, #1
+# CHECK:  it gt
+# CHECK:  ubfxgt r4, r5, #16, #16
+
+0xc5 0xf3 0x00 0x44
+0xc8 0xbf
+0xc5 0xf3 0x0f 0x44
+
+
+#------------------------------------------------------------------------------
+# UHADD16/UHADD8
+#------------------------------------------------------------------------------
+# CHECK:  uhadd16 r4, r8, r2
+# CHECK:  uhadd8 r4, r8, r2
+# CHECK:  itt gt
+# CHECK:  uhadd16gt r4, r8, r2
+# CHECK:  uhadd8gt r4, r8, r2
+
+0x98 0xfa 0x62 0xf4
+0x88 0xfa 0x62 0xf4
+0xc4 0xbf
+0x98 0xfa 0x62 0xf4
+0x88 0xfa 0x62 0xf4
+
+
+#------------------------------------------------------------------------------
+# UHASX/UHSAX
+#------------------------------------------------------------------------------
+# CHECK:  uhasx r4, r1, r5
+# CHECK:  uhsax r5, r6, r6
+# CHECK:  itt gt
+# CHECK:  uhasxgt r6, r9, r8
+# CHECK:  uhsaxgt r7, r8, r12
+
+0xa1 0xfa 0x65 0xf4
+0xe6 0xfa 0x66 0xf5
+0xc4 0xbf
+0xa9 0xfa 0x68 0xf6
+0xe8 0xfa 0x6c 0xf7
+
+#------------------------------------------------------------------------------
+# UHSUB16/UHSUB8
+#------------------------------------------------------------------------------
+# CHECK:  uhsub16 r5, r8, r3
+# CHECK:  uhsub8 r1, r7, r6
+# CHECK:  itt lt
+# CHECK:  uhsub16lt r4, r9, r12
+# CHECK:  uhsub8lt r3, r1, r5
+
+0xd8 0xfa 0x63 0xf5
+0xc7 0xfa 0x66 0xf1
+0xbc 0xbf
+0xd9 0xfa 0x6c 0xf4
+0xc1 0xfa 0x65 0xf3
+
+
+#------------------------------------------------------------------------------
+# UMAAL
+#------------------------------------------------------------------------------
+# CHECK:  umaal r3, r4, r5, r6
+# CHECK:  it lt
+# CHECK:  umaallt r3, r4, r5, r6
+
+0xe5 0xfb 0x66 0x34
+0xb8 0xbf
+0xe5 0xfb 0x66 0x34
+
+
+#------------------------------------------------------------------------------
+# UMLAL
+#------------------------------------------------------------------------------
+# CHECK:  umlal r2, r4, r6, r8
+# CHECK:  it gt
+# CHECK:  umlalgt r6, r1, r2, r6
+
+0xe6 0xfb 0x08 0x24
+0xc8 0xbf
+0xe2 0xfb 0x06 0x61
+
+
+#------------------------------------------------------------------------------
+# UMULL
+#------------------------------------------------------------------------------
+# CHECK:  umull r2, r4, r6, r8
+# CHECK:  it gt
+# CHECK:  umullgt r6, r1, r2, r6
+
+0xa6 0xfb 0x08 0x24
+0xc8 0xbf
+0xa2 0xfb 0x06 0x61
+
+
+#------------------------------------------------------------------------------
+# UQADD16/UQADD8
+#------------------------------------------------------------------------------
+# CHECK:  uqadd16 r1, r2, r3
+# CHECK:  uqadd8 r3, r4, r8
+# CHECK:  ite gt
+# CHECK:  uqadd16gt r4, r7, r9
+# CHECK:  uqadd8le r8, r1, r2
+
+0x92 0xfa 0x53 0xf1
+0x84 0xfa 0x58 0xf3
+0xcc 0xbf
+0x97 0xfa 0x59 0xf4
+0x81 0xfa 0x52 0xf8
+
+
+#------------------------------------------------------------------------------
+# UQASX/UQSAX
+#------------------------------------------------------------------------------
+# CHECK:  uqasx r1, r2, r3
+# CHECK:  uqsax r3, r4, r8
+# CHECK:  ite gt
+# CHECK:  uqasxgt r4, r7, r9
+# CHECK:  uqsaxle r8, r1, r2
+
+0xa2 0xfa 0x53 0xf1
+0xe4 0xfa 0x58 0xf3
+0xcc 0xbf
+0xa7 0xfa 0x59 0xf4
+0xe1 0xfa 0x52 0xf8
+
+
+#------------------------------------------------------------------------------
+# UQSUB16/UQSUB8
+#------------------------------------------------------------------------------
+# CHECK:  uqsub8 r8, r2, r9
+# CHECK:  uqsub16 r1, r9, r7
+# CHECK:  ite gt
+# CHECK:  uqsub8gt r3, r1, r6
+# CHECK:  uqsub16le r4, r6, r4
+
+0xc2 0xfa 0x59 0xf8
+0xd9 0xfa 0x57 0xf1
+0xcc 0xbf
+0xc1 0xfa 0x56 0xf3
+0xd6 0xfa 0x54 0xf4
+
+
+#------------------------------------------------------------------------------
+# UQSUB16/UQSUB8
+#------------------------------------------------------------------------------
+# CHECK:  usad8 r1, r9, r7
+# CHECK:  usada8 r8, r2, r9, r12
+# CHECK:  ite gt
+# CHECK:  usada8gt r3, r1, r6, r9
+# CHECK:  usad8le r4, r6, r4
+
+0x79 0xfb 0x07 0xf1
+0x72 0xfb 0x09 0xc8
+0xcc 0xbf
+0x71 0xfb 0x06 0x93
+0x76 0xfb 0x04 0xf4
+
+
+#------------------------------------------------------------------------------
+# USAT
+#------------------------------------------------------------------------------
+# CHECK:  usat r8, #1, r10
+# CHECK:  usat r8, #4, r10
+# CHECK:  usat r8, #5, r10, lsl #31
+# CHECK:  usat r8, #16, r10, asr #1
+
+0x8a 0xf3 0x01 0x08
+0x8a 0xf3 0x04 0x08
+0x8a 0xf3 0xc5 0x78
+0xaa 0xf3 0x50 0x08
+
+
+#------------------------------------------------------------------------------
+# USAT16
+#------------------------------------------------------------------------------
+# CHECK:  usat16       r2, #2, r7
+# CHECK:  usat16       r3, #15, r5
+
+0xa7 0xf3 0x02 0x02
+0xa5 0xf3 0x0f 0x03
+
+
+#------------------------------------------------------------------------------
+# USAX
+#------------------------------------------------------------------------------
+# CHECK:  usax r2, r3, r4
+# CHECK:  it ne
+# CHECK:  usaxne r6, r1, r9
+# CHECK:  usax r2, r3, r4
+# CHECK:  it ne
+# CHECK:  usaxne r6, r1, r9
+
+0xe3 0xfa 0x44 0xf2
+0x18 0xbf
+0xe1 0xfa 0x49 0xf6
+0xe3 0xfa 0x44 0xf2
+0x18 0xbf
+0xe1 0xfa 0x49 0xf6
+
+
+#------------------------------------------------------------------------------
+# USUB16/USUB8
+#------------------------------------------------------------------------------
+# CHECK:  usub16 r4, r2, r7
+# CHECK:  usub8 r1, r8, r5
+# CHECK:  ite hi
+# CHECK:  usub16hi r1, r1, r3
+# CHECK:  usub8ls r9, r2, r3
+
+0xd2 0xfa 0x47 0xf4
+0xc8 0xfa 0x45 0xf1
+0x8c 0xbf
+0xd1 0xfa 0x43 0xf1
+0xc2 0xfa 0x43 0xf9
+
+
+#------------------------------------------------------------------------------
+# UXTAB
+#------------------------------------------------------------------------------
+# CHECK:  uxtab r2, r3, r4
+# CHECK:  uxtab r4, r5, r6
+# CHECK:  it lt
+# CHECK:  uxtablt r6, r2, r9, ror #8
+# CHECK:  uxtab r5, r1, r4, ror #16
+# CHECK:  uxtab r7, r8, r3, ror #24
+
+0x53 0xfa 0x84 0xf2
+0x55 0xfa 0x86 0xf4
+0xb8 0xbf
+0x52 0xfa 0x99 0xf6
+0x51 0xfa 0xa4 0xf5
+0x58 0xfa 0xb3 0xf7
+
+
+#------------------------------------------------------------------------------
+# UXTAB16
+#------------------------------------------------------------------------------
+# CHECK:  it ge
+# CHECK:  uxtab16ge r0, r1, r4
+# CHECK:  uxtab16 r6, r2, r7
+# CHECK:  uxtab16 r3, r5, r8, ror #8
+# CHECK:  uxtab16 r3, r2, r1, ror #16
+# CHECK:  it eq
+# CHECK:  uxtab16eq r1, r2, r3, ror #24
+
+0xa8 0xbf
+0x31 0xfa 0x84 0xf0
+0x32 0xfa 0x87 0xf6
+0x35 0xfa 0x98 0xf3
+0x32 0xfa 0xa1 0xf3
+0x08 0xbf
+0x32 0xfa 0xb3 0xf1
+
+
+#------------------------------------------------------------------------------
+# UXTAH
+#------------------------------------------------------------------------------
+# CHECK:  uxtah r1, r3, r9
+# CHECK:  it hi
+# CHECK:  uxtahhi r6, r1, r6
+# CHECK:  uxtah r3, r8, r3, ror #8
+# CHECK:  it lo
+# CHECK:  uxtahlo r2, r2, r4, ror #16
+# CHECK:  uxtah r9, r3, r3, ror #24
+
+0x13 0xfa 0x89 0xf1
+0x88 0xbf
+0x11 0xfa 0x86 0xf6
+0x18 0xfa 0x93 0xf3
+0x38 0xbf
+0x12 0xfa 0xa4 0xf2
+0x13 0xfa 0xb3 0xf9
+
+
+#------------------------------------------------------------------------------
+# UXTB
+#------------------------------------------------------------------------------
+# CHECK:  it ge
+# CHECK:  uxtbge r2, r4
+# CHECK:  uxtb r5, r6
+# CHECK:  uxtb.w r6, r9, ror #8
+# CHECK:  it lo
+# CHECK:  uxtblo.w r5, r1, ror #16
+# CHECK:  uxtb.w r8, r3, ror #24
+
+0xa8 0xbf
+0xe2 0xb2
+0xf5 0xb2
+0x5f 0xfa 0x99 0xf6
+0x38 0xbf
+0x5f 0xfa 0xa1 0xf5
+0x5f 0xfa 0xb3 0xf8
+
+
+#------------------------------------------------------------------------------
+# UXTB16
+#------------------------------------------------------------------------------
+# CHECK:  uxtb16 r1, r4
+# CHECK:  uxtb16 r6, r7
+# CHECK:  it hs
+# CHECK:  uxtb16hs r3, r5, ror #8
+# CHECK:  uxtb16 r3, r1, ror #16
+# CHECK:  it ge
+# CHECK:  uxtb16ge r2, r3, ror #24
+
+0x3f 0xfa 0x84 0xf1
+0x3f 0xfa 0x87 0xf6
+0x28 0xbf
+0x3f 0xfa 0x95 0xf3
+0x3f 0xfa 0xa1 0xf3
+0xa8 0xbf
+0x3f 0xfa 0xb3 0xf2
+
+
+#------------------------------------------------------------------------------
+# UXTH
+#------------------------------------------------------------------------------
+# CHECK:  it ne
+# CHECK:  uxthne.w r3, r9
+# CHECK:  uxth r1, r6
+# CHECK:  uxth.w r3, r8, ror #8
+# CHECK:  it le
+# CHECK:  uxthle.w r2, r2, ror #16
+# CHECK:  uxth.w r9, r3, ror #24
+
+0x18 0xbf
+0x1f 0xfa 0x89 0xf3
+0xb1 0xb2
+0x1f 0xfa 0x98 0xf3
+0xd8 0xbf
+0x1f 0xfa 0xa2 0xf2
+0x1f 0xfa 0xb3 0xf9
+
+
+#------------------------------------------------------------------------------
+# WFE/WFI/YIELD
+#------------------------------------------------------------------------------
+# CHECK:  wfe
+# CHECK:  wfi
+# CHECK:  yield
+# CHECK:  itet lt
+# CHECK:  wfelt
+# CHECK:  wfige
+# CHECK:  yieldlt
+
+0x20 0xbf
+0x30 0xbf
+0x10 0xbf
+0xb6 0xbf
+0x20 0xbf
+0x30 0xbf
+0x10 0xbf
+