Compiler projects using llvm
# RUN: llvm-mc -triple=arc -disassemble %s | FileCheck %s

# CHECK: abs_s %r0, %r1
0x31 0x78

# CHECK: add_s %r0, %r1, %r2
0x58 0x61

# CHECK: add_s %r0, %r0, %fp
0x63 0x70

# CHECK: add_s %fp, %fp, -1
0x67 0x77

# CHECK: add_s %fp, %fp, 6
0x67 0x76

# CHECK: add_s %r0, %r0, 287454020
0xc3 0x70 0x22 0x11 0x44 0x33

# CHECK: add_s 0, 287454020, 4
0xc7 0x74 0x22 0x11 0x44 0x33

# CHECK: add_s %r0, %sp, 64
0x90 0xc0

# CHECK: add_s %r0, %r0, 64
0x40 0xe0

# CHECK: add_s %r0, %r1, 7
0x07 0x69

# CHECK: add_s %sp, %sp, 64
0xb0 0xc0

# CHECK: add_s %r0, %gp, -4
0xff 0xcf

# CHECK: add_s %r0, %r1, 4
0x0c 0x49

# CHECK: add_s %r1, %r0, 4
0x8c 0x48

# CHECK: add1_s %r0, %r0, %r1
0x34 0x78

# CHECK: add2_s %r0, %r0, %r1
0x35 0x78

# CHECK: add3_s %r0, %r0, %r1
0x36 0x78

# CHECK: and_s %r0, %r0, %r1
0x24 0x78

# CHECK: asl_s %r0, %r1
0x3b 0x78

# CHECK: asl_s %r1, %r0, 4
0x34 0x68

# CHECK: asl_s %r0, %r0, %r1
0x38 0x78

# CHECK: asl_s %r0, %r0, 16
0x10 0xb8

# CHECK: asr_s %r0, %r1
0x3c 0x78

# CHECK: asr_s %r1, %r0, 4
0x3c 0x68

# CHECK: asr_s %r0, %r0, %r1
0x3a 0x78

# CHECK: asr_s %r0, %r0, 16
0x50 0xb8

# CHECK: b_s 256
0x80 0xf0

# CHECK: b_s -4
0xfe 0xf1

# CHECK: beq_s -4
0xfe 0xf3

# CHECK: bne_s -4
0xfe 0xf5

# CHECK: bgt_s -4
0x3e 0xf6

# CHECK: bge_s -4
0x7e 0xf6

# CHECK: blt_s -4
0xbe 0xf6

# CHECK: ble_s -4
0xfe 0xf6

# CHECK: bhi_s -4
0x3e 0xf7

# CHECK: bhs_s -4
0x7e 0xf7

# CHECK: blo_s -4
0xbe 0xf7

# CHECK: bls_s -4
0xfe 0xf7

# CHECK: bclr_s %r0, %r0, 24
0xb8 0xb8

# CHECK: bic_s %r0, %r0, %r1
0x26 0x78

# CHECK: bl_s -256
0xc0 0xff

# CHECK: bmsk_s %r0, %r0, 24
0xd8 0xb8

# CHECK: brne_s %r0, 0, -128
0xc0 0xe8

# CHECK: breq_s %r0, 0, -128
0x40 0xe8

# CHECK: brk_s
0xff 0x7f

# CHECK: bset_s %r0, %r0, 24
0x98 0xb8

# CHECK: btst_s %r0, 24
0xf8 0xb8

# CHECK: cmp_s %r0, %sp
0x93 0x70

# CHECK: cmp_s %sp, -1
0x97 0x77

# CHECK: cmp_s %r2, 64
0xc0 0xe2

# CHECK: ei_s 512
0x00 0x5e

# CHECK: enter_s 16
0xe0 0xc1

# CHECK: extb_s %r0, %r1
0x2f 0x78

# CHECK: exth_s %r0, %r1
0x30 0x78

# CHECK: j_s [%r0]
0x00 0x78

# CHECK: j_s [%blink]
0xe0 0x7e

# CHECK: j_s.d [%r0]
0x20 0x78

# CHECK: j_s.d [%blink]
0xe0 0x7f

# CHECK: jeq_s [%blink]
0xe0 0x7c

# CHECK: jne_s [%blink]
0xe0 0x7d

# CHECK: jl_s [%r0]
0x40 0x78

# CHECK: jl_s.d [%r0]
0x60 0x78

# CHECK: jli_s 512
0x00 0x5a

# CHECK: ld_s %r0, [%r1, %r2]
0x40 0x61

# CHECK: ld_s %r0, [%sp, 64]
0x10 0xc0

# CHECK: ld_s %r0, [%pcl, 512]
0x80 0xd0

# CHECK: ld_s %r1, [%r0, 64]
0x30 0x80

# CHECK: ld_s %r0, [%gp, -1024]
0x00 0xc9

# CHECK: ldb_s %r0, [%r1, %r2]
0x48 0x61

# CHECK: ldb_s %r0, [%sp, 64]
0x30 0xc0

# CHECK: ldb_s %r1, [%r0, 16]
0x30 0x88

# CHECK: ldb_s %r0, [%gp, -256]
0x00 0xcb

# CHECK: ldh_s %r0, [%r1, %r2]
0x50 0x61

# CHECK: ldh_s %r1, [%r0, 32]
0x30 0x90

# CHECK: ldh_s %r0, [%gp, -512]
0x00 0xcd

# CHECK: ldh_s.x %r1, [%r0, 32]
0x30 0x98

# CHECK: ld_s %r0, [%r17, 8]
0x36 0x40

# CHECK: ld_s %r1, [%r17, 8]
0x36 0x41

# CHECK: ld_s %r2, [%r17, 8]
0x36 0x42

# CHECK: ld_s %r3, [%r17, 8]
0x36 0x43

# CHECK: ld_s.as %r0, [%r1, %r2]
0x40 0x49

# CHECK: ld_s %r1, [%gp, -1024]
0x00 0x54

# CHECK: ldi_s %r0, [64]
0x88 0x50

# CHECK: leave_s 16
0xc0 0xc1

# CHECK: lsr_s %r0, %r1
0x3d 0x78

# CHECK: lsr_s %r0, %r0, %r1
0x39 0x78

# CHECK: lsr_s %r0, %r0, 16
0x30 0xb8

# CHECK: mov_s %r17, -1
0x2e 0x77

# CHECK: mov_s 0, 5
0xcf 0x75

# CHECK: mov_s.ne %r0, %r17
0x3e 0x70

# CHECK: mov_s.ne %r0, 1024
0xdf 0x70 0x00 0x00 0x00 0x04

# CHECK: mov_s %r0, 128
0x80 0xd8

# CHECK: mov_s %r16, %r17
0x32 0x40

# CHECK: mov_s %r16, 1024
0xd3 0x40 0x00 0x00 0x00 0x04

# CHECK: mov_s 0, %r17
0x3a 0x46

# CHECK: mov_s 0, 1024
0xdb 0x46 0x00 0x00 0x00 0x04

# CHECK: mpy_s %r0, %r0, %r1
0x2c 0x78

# CHECK: mpyuw_s %r0, %r0, %r1
0x2a 0x78

# CHECK: mpyw_s %r0, %r0, %r1
0x29 0x78

# CHECK: neg_s %r0, %r1
0x33 0x78

# CHECK: nop_s
0xe0 0x78

# CHECK: not_s %r0, %r1
0x32 0x78

# CHECK: or_s %r0, %r0, %r1
0x25 0x78

# CHECK: pop_s %r0
0xe1 0xc0

# CHECK: pop_s %blink
0xd1 0xc0

# CHECK: push_s %r0
0xc1 0xc0

# CHECK: push_s %blink
0xf1 0xc0

# CHECK: sexb_s %r0, %r1
0x2d 0x78

# CHECK: sexh_s %r0, %r1
0x2e 0x78

# CHECK: st_s %r0, [%sp, 64]
0x50 0xc0

# CHECK: st_s %r1, [%r0, 64]
0x30 0xa0

# CHECK: st_s %r0, [%gp, -1024]
0x10 0x54

# CHECK: stb_s %r0, [%sp, 64]
0x70 0xc0

# CHECK: stb_s %r1, [%r0, 16]
0x30 0xa8

# CHECK: sth_s %r1, [%r0, 32]
0x30 0xb0

# CHECK: sub_s %r1, %r0, 4
0x2c 0x68

# CHECK: sub_s.ne %r0, %r0, %r0
0xc0 0x78

# CHECK: sub_s %r0, %r0, %r1
0x22 0x78

# CHECK: sub_s %r0, %r0, 16
0x70 0xb8

# CHECK: sub_s %sp, %sp, 64
0xb0 0xc1

# CHECK: sub_s %r0, %r1, %r2
0x50 0x49

# CHECK: swi_s
0xe0 0x7a

# CHECK: trap_s 32
0x1e 0x7c

# CHECK: tst_s %r0, %r1
0x2b 0x78

# CHECK: unimp_s
0xe0 0x79

# CHECK: xor_s %r0, %r0, %r1
0x27 0x78