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

# CHECK: add %r0, %r0, %r0 
0x00 0x20 0x00 0x00 

# CHECK: add %r4, %r0, %r0 
0x00 0x20 0x04 0x00 

# CHECK: add.f %r4, %r0, %r0
0x00 0x20 0x04 0x80

# CHECK: add %r2, %r0, %r3 
0x00 0x20 0xc2 0x00

# CHECK: add %r2, %r0, %r4 
0x00 0x20 0x02 0x01 

# CHECK: add %r2, %r7, %r4 
0x00 0x27 0x02 0x01 

# CHECK: add.eq %r0, %r0, 1
0xc0 0x20 0x61 0x00

# CHECK: add.lt %r6, %r6, 16
0xc0 0x26 0x2b 0x04

# CHECK: add.le %r15, %r15, 31
0xc0 0x27 0xec 0x17

# CHECK: add.gt %r0, %r0, 1
0xc0 0x20 0x69 0x00

# CHECK: add.ge %r6, %r6, 16
0xc0 0x26 0x2a 0x04

# CHECK: add.p %r15, %r15, 31
0xc0 0x27 0xe3 0x17

# CHECK: add.n %r0, %r0, 1
0xc0 0x20 0x64 0x00

# CHECK: add.vs %r6, %r6, 16
0xc0 0x26 0x27 0x04

# CHECK: add.pnz %r15, %r15, 31
0xc0 0x27 0xef 0x17

# CHECK: add.eq.f %r0, %r0, 1
0xc0 0x20 0x61 0x80

# CHECK: add.lt.f %r6, %r6, 16
0xc0 0x26 0x2b 0x84

# CHECK: add.le.f %r15, %r15, 31
0xc0 0x27 0xec 0x97

# CHECK: add.gt.f %r0, %r0, 1
0xc0 0x20 0x69 0x80

# CHECK: add.ge.f %r6, %r6, 16
0xc0 0x26 0x2a 0x84

# CHECK: add.p.f %r15, %r15, 31
0xc0 0x27 0xe3 0x97

# CHECK: add.n.f %r0, %r0, 1
0xc0 0x20 0x64 0x80

# CHECK: add.vs.f %r6, %r6, 16
0xc0 0x26 0x27 0x84

# CHECK: add.pnz.f %r15, %r15, 31
0xc0 0x27 0xef 0x97

# CHECK: and %r2, %r7, %r4 
0x04 0x27 0x02 0x01 

# CHECK: and.f %r2, %r7, %r4
0x04 0x27 0x02 0x81

# CHECK: and %r2, %r7, 4 
0x44 0x27 0x02 0x01 

# CHECK: and %r1, %r1, 255
0x84 0x21 0xc3 0x0f

# CHECK: and.f %r1, %r1, 255
0x84 0x21 0xc3 0x8f

# CHECK: and.eq %r0, %r0, 0
0xc4 0x20 0x21 0x00

# CHECK: and.lt %r6, %r6, 16
0xc4 0x26 0x2b 0x04

# CHECK: and.le %r15, %r15, 31
0xc4 0x27 0xec 0x17

# CHECK: and.gt %r0, %r0, 0
0xc4 0x20 0x29 0x00

# CHECK: and.ge %r6, %r6, 16
0xc4 0x26 0x2a 0x04

# CHECK: and.p %r15, %r15, 31
0xc4 0x27 0xe3 0x17

# CHECK: and.n %r0, %r0, 0
0xc4 0x20 0x24 0x00

# CHECK: and.vs %r6, %r6, 16
0xc4 0x26 0x27 0x04

# CHECK: and.pnz %r15, %r15, 31
0xc4 0x27 0xef 0x17

# CHECK: and.eq.f %r0, %r0, 0
0xc4 0x20 0x21 0x80

# CHECK: and.lt.f %r6, %r6, 16
0xc4 0x26 0x2b 0x84

# CHECK: and.le.f %r15, %r15, 31
0xc4 0x27 0xec 0x97

# CHECK: and.gt.f %r0, %r0, 0
0xc4 0x20 0x29 0x80

# CHECK: and.ge.f %r6, %r6, 16
0xc4 0x26 0x2a 0x84

# CHECK: and.p.f %r15, %r15, 31
0xc4 0x27 0xe3 0x97

# CHECK: and.n.f %r0, %r0, 0
0xc4 0x20 0x24 0x80

# CHECK: and.vs.f %r6, %r6, 16
0xc4 0x26 0x27 0x84

# CHECK: and.pnz.f %r15, %r15, 31
0xc4 0x27 0xef 0x97

# CHECK: asl %r1, %r1, 2 
0x40 0x29 0x81 0x00 

# CHECK: asl %r0, %r0, %r0
0x00 0x28 0x00 0x00

# CHECK: asl.f %r0, %r0, %r0
0x00 0x28 0x00 0x80

# CHECK: asr %r1, %r2, 31
0x42 0x2a 0xc1 0x07

# CHECK: asr.f %r1, %r2, 31
0x42 0x2a 0xc1 0x87

# CHECK: asr %r1, %r3, 7
0x42 0x2b 0xc1 0x01

# CHECK: asr %r1, %r1, %r2
0x02 0x29 0x81 0x00

# CHECK: max %r0, %r2, %r1
0x08 0x22 0x40 0x00

# CHECK: max %r0, %r1, 15
0x48 0x21 0xc0 0x03

# CHECK: max %r0, %r2, 4000
0x08 0x22 0x80 0x0f 0x00 0x00 0xa0 0x0f

# CHECK: max %r2, %r2, 255
0x88 0x22 0xc3 0x0f

# CHECK: or %r18, %r16, 61440
0x05 0x20 0x92 0x2f 0x00 0x00 0x00 0xf0

# CHECK: or.f %r18, %r16, 61440
0x05 0x20 0x92 0xaf 0x00 0x00 0x00 0xf0

# CHECK: or %r1, %r1, %r14
0x05 0x21 0x81 0x03

# CHECK: or %r1, %r14, %r1
0x05 0x26 0x41 0x10

# CHECK: or %r1, %r1, 128
0x85 0x21 0x02 0x00

# CHECK: sub %sp, %fp, 92
0x02 0x23 0x9c 0x3f 0x00 0x00 0x5c 0x00

# CHECK: sub %r2, %r7, %r4 
0x02 0x27 0x02 0x01 

# CHECK: sub.f %r2, %r7, %r4
0x02 0x27 0x02 0x81

# CHECK: sub %r0, %r22, %r0
0x02 0x26 0x00 0x20

# CHECK: sub1 %r3, %fp, %r1
0x17 0x23 0x43 0x30

# CHECK: sub2 %r3, %fp, 17
0x58 0x23 0x43 0x34

# CHECK: sub3 %fp, %fp, -1
0x99 0x23 0xff 0x3f

# CHECK: sub3.f %fp, %fp, -1
0x99 0x23 0xff 0xbf

# CHECK: rsub.ne %r0, %r0, 31
0xce 0x20 0xe2 0x07

# CHECK: rsub.eq %r0, %r0, 1
0xce 0x20 0x61 0x00

# CHECK: rsub.lt %r6, %r6, 16
0xce 0x26 0x2b 0x04

# CHECK: rsub.le %r15, %r15, 31
0xce 0x27 0xec 0x17

# CHECK: rsub.gt %r0, %r0, 1
0xce 0x20 0x69 0x00

# CHECK: rsub.ge %r6, %r6, 16
0xce 0x26 0x2a 0x04

# CHECK: rsub.p %r15, %r15, 31
0xce 0x27 0xe3 0x17

# CHECK: rsub.n %r0, %r0, 1
0xce 0x20 0x64 0x00

# CHECK: rsub.vs %r6, %r6, 16
0xce 0x26 0x27 0x04

# CHECK: rsub.pnz %r15, %r15, 31
0xce 0x27 0xef 0x17

# CHECK: rsub.ne.f %r0, %r0, 31
0xce 0x20 0xe2 0x87

# CHECK: rsub.eq.f %r0, %r0, 1
0xce 0x20 0x61 0x80

# CHECK: rsub.lt.f %r6, %r6, 16
0xce 0x26 0x2b 0x84

# CHECK: rsub.le.f %r15, %r15, 31
0xce 0x27 0xec 0x97

# CHECK: rsub.gt.f %r0, %r0, 1
0xce 0x20 0x69 0x80

# CHECK: rsub.ge.f %r6, %r6, 16
0xce 0x26 0x2a 0x84

# CHECK: rsub.p.f %r15, %r15, 31
0xce 0x27 0xe3 0x97

# CHECK: rsub.n.f %r0, %r0, 1
0xce 0x20 0x64 0x80

# CHECK: rsub.vs.f %r6, %r6, 16
0xce 0x26 0x27 0x84

# CHECK: rsub.pnz.f %r15, %r15, 31
0xce 0x27 0xef 0x97

# CHECK: adc %r0, %r0, %r0
0x01 0x20 0x00 0x00

# CHECK: adc %r4, %r0, %r0
0x01 0x20 0x04 0x00

# CHECK: adc.f %r4, %r0, %r0
0x01 0x20 0x04 0x80

# CHECK: adc %r2, %r0, %r3
0x01 0x20 0xc2 0x00

# CHECK: adc %r2, %r0, %r4
0x01 0x20 0x02 0x01

# CHECK: adc %r2, %r7, %r4
0x01 0x27 0x02 0x01

# CHECK: adc.eq %r0, %r0, 1
0xc1 0x20 0x61 0x00

# CHECK: adc.lt %r6, %r6, 16
0xc1 0x26 0x2b 0x04

# CHECK: adc.le %r15, %r15, 31
0xc1 0x27 0xec 0x17

# CHECK: adc.gt %r0, %r0, 1
0xc1 0x20 0x69 0x00

# CHECK: adc.ge %r6, %r6, 16
0xc1 0x26 0x2a 0x04

# CHECK: adc.p %r15, %r15, 31
0xc1 0x27 0xe3 0x17

# CHECK: adc.n %r0, %r0, 1
0xc1 0x20 0x64 0x00

# CHECK: adc.vs %r6, %r6, 16
0xc1 0x26 0x27 0x04

# CHECK: adc.pnz %r15, %r15, 31
0xc1 0x27 0xef 0x17

# CHECK: adc.eq.f %r0, %r0, 1
0xc1 0x20 0x61 0x80

# CHECK: adc.lt.f %r6, %r6, 16
0xc1 0x26 0x2b 0x84

# CHECK: adc.le.f %r15, %r15, 31
0xc1 0x27 0xec 0x97

# CHECK: adc.gt.f %r0, %r0, 1
0xc1 0x20 0x69 0x80

# CHECK: adc.ge.f %r6, %r6, 16
0xc1 0x26 0x2a 0x84

# CHECK: adc.p.f %r15, %r15, 31
0xc1 0x27 0xe3 0x97

# CHECK: adc.n.f %r0, %r0, 1
0xc1 0x20 0x64 0x80

# CHECK: adc.vs.f %r6, %r6, 16
0xc1 0x26 0x27 0x84

# CHECK: adc.pnz.f %r15, %r15, 31
0xc1 0x27 0xef 0x97

# CHECK: sbc %r0, %r0, %r0
0x03 0x20 0x00 0x00

# CHECK: sbc %r4, %r0, %r0
0x03 0x20 0x04 0x00

# CHECK: sbc.f %r4, %r0, %r0
0x03 0x20 0x04 0x80

# CHECK: sbc %r2, %r0, %r3
0x03 0x20 0xc2 0x00

# CHECK: sbc %r2, %r0, %r4
0x03 0x20 0x02 0x01

# CHECK: sbc %r2, %r7, %r4
0x03 0x27 0x02 0x01

# CHECK: sbc.eq %r0, %r0, 1
0xc3 0x20 0x61 0x00

# CHECK: sbc.lt %r6, %r6, 16
0xc3 0x26 0x2b 0x04

# CHECK: sbc.le %r15, %r15, 31
0xc3 0x27 0xec 0x17

# CHECK: sbc.gt %r0, %r0, 1
0xc3 0x20 0x69 0x00

# CHECK: sbc.ge %r6, %r6, 16
0xc3 0x26 0x2a 0x04

# CHECK: sbc.p %r15, %r15, 31
0xc3 0x27 0xe3 0x17

# CHECK: sbc.n %r0, %r0, 1
0xc3 0x20 0x64 0x00

# CHECK: sbc.vs %r6, %r6, 16
0xc3 0x26 0x27 0x04

# CHECK: sbc.pnz %r15, %r15, 31
0xc3 0x27 0xef 0x17

# CHECK: sbc.eq.f %r0, %r0, 1
0xc3 0x20 0x61 0x80

# CHECK: sbc.lt.f %r6, %r6, 16
0xc3 0x26 0x2b 0x84

# CHECK: sbc.le.f %r15, %r15, 31
0xc3 0x27 0xec 0x97

# CHECK: sbc.gt.f %r0, %r0, 1
0xc3 0x20 0x69 0x80

# CHECK: sbc.ge.f %r6, %r6, 16
0xc3 0x26 0x2a 0x84

# CHECK: sbc.p.f %r15, %r15, 31
0xc3 0x27 0xe3 0x97

# CHECK: sbc.n.f %r0, %r0, 1
0xc3 0x20 0x64 0x80

# CHECK: sbc.vs.f %r6, %r6, 16
0xc3 0x26 0x27 0x84

# CHECK: sbc.pnz.f %r15, %r15, 31
0xc3 0x27 0xef 0x97