1*945a660cSMehdi Amini; RUN: llc < %s -O0 -fast-isel-abort=1 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
2*945a660cSMehdi Amini; RUN: llc < %s -O0 -fast-isel-abort=1 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
3*945a660cSMehdi Amini; RUN: llc < %s -O0 -fast-isel-abort=1 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
4685b20c1SChad Rosier
5685b20c1SChad Rosier; Test add with non-legal types
6685b20c1SChad Rosier
7685b20c1SChad Rosierdefine void @add_i1(i1 %a, i1 %b) nounwind ssp {
8685b20c1SChad Rosierentry:
9685b20c1SChad Rosier; ARM: add_i1
10685b20c1SChad Rosier; THUMB: add_i1
11685b20c1SChad Rosier  %a.addr = alloca i1, align 4
12685b20c1SChad Rosier  %0 = add i1 %a, %b
13685b20c1SChad Rosier; ARM: add r0, r0, r1
14685b20c1SChad Rosier; THUMB: add r0, r1
15685b20c1SChad Rosier  store i1 %0, i1* %a.addr, align 4
16685b20c1SChad Rosier  ret void
17685b20c1SChad Rosier}
18685b20c1SChad Rosier
19685b20c1SChad Rosierdefine void @add_i8(i8 %a, i8 %b) nounwind ssp {
20685b20c1SChad Rosierentry:
21685b20c1SChad Rosier; ARM: add_i8
22685b20c1SChad Rosier; THUMB: add_i8
23685b20c1SChad Rosier  %a.addr = alloca i8, align 4
24685b20c1SChad Rosier  %0 = add i8 %a, %b
25685b20c1SChad Rosier; ARM: add r0, r0, r1
26685b20c1SChad Rosier; THUMB: add r0, r1
27685b20c1SChad Rosier  store i8 %0, i8* %a.addr, align 4
28685b20c1SChad Rosier  ret void
29685b20c1SChad Rosier}
30685b20c1SChad Rosier
31685b20c1SChad Rosierdefine void @add_i16(i16 %a, i16 %b) nounwind ssp {
32685b20c1SChad Rosierentry:
33685b20c1SChad Rosier; ARM: add_i16
34685b20c1SChad Rosier; THUMB: add_i16
35685b20c1SChad Rosier  %a.addr = alloca i16, align 4
36685b20c1SChad Rosier  %0 = add i16 %a, %b
37685b20c1SChad Rosier; ARM: add r0, r0, r1
38685b20c1SChad Rosier; THUMB: add r0, r1
39685b20c1SChad Rosier  store i16 %0, i16* %a.addr, align 4
40685b20c1SChad Rosier  ret void
41685b20c1SChad Rosier}
42bd471255SChad Rosier
43bfe7393dSChad Rosier; Test or with non-legal types
44bfe7393dSChad Rosier
45bd471255SChad Rosierdefine void @or_i1(i1 %a, i1 %b) nounwind ssp {
46bd471255SChad Rosierentry:
47bd471255SChad Rosier; ARM: or_i1
48bd471255SChad Rosier; THUMB: or_i1
49bd471255SChad Rosier  %a.addr = alloca i1, align 4
50bd471255SChad Rosier  %0 = or i1 %a, %b
51bd471255SChad Rosier; ARM: orr r0, r0, r1
52bd471255SChad Rosier; THUMB: orrs r0, r1
53bd471255SChad Rosier  store i1 %0, i1* %a.addr, align 4
54bd471255SChad Rosier  ret void
55bd471255SChad Rosier}
56bd471255SChad Rosier
57bd471255SChad Rosierdefine void @or_i8(i8 %a, i8 %b) nounwind ssp {
58bd471255SChad Rosierentry:
59bd471255SChad Rosier; ARM: or_i8
60bd471255SChad Rosier; THUMB: or_i8
61bd471255SChad Rosier  %a.addr = alloca i8, align 4
62bd471255SChad Rosier  %0 = or i8 %a, %b
63bd471255SChad Rosier; ARM: orr r0, r0, r1
64bd471255SChad Rosier; THUMB: orrs r0, r1
65bd471255SChad Rosier  store i8 %0, i8* %a.addr, align 4
66bd471255SChad Rosier  ret void
67bd471255SChad Rosier}
68bd471255SChad Rosier
69bd471255SChad Rosierdefine void @or_i16(i16 %a, i16 %b) nounwind ssp {
70bd471255SChad Rosierentry:
71bd471255SChad Rosier; ARM: or_i16
72bd471255SChad Rosier; THUMB: or_i16
73bd471255SChad Rosier  %a.addr = alloca i16, align 4
74bd471255SChad Rosier  %0 = or i16 %a, %b
75bd471255SChad Rosier; ARM: orr r0, r0, r1
76bd471255SChad Rosier; THUMB: orrs r0, r1
77bd471255SChad Rosier  store i16 %0, i16* %a.addr, align 4
78bd471255SChad Rosier  ret void
79bd471255SChad Rosier}
800ee8c513SChad Rosier
810ee8c513SChad Rosier; Test sub with non-legal types
820ee8c513SChad Rosier
830ee8c513SChad Rosierdefine void @sub_i1(i1 %a, i1 %b) nounwind ssp {
840ee8c513SChad Rosierentry:
850ee8c513SChad Rosier; ARM: sub_i1
860ee8c513SChad Rosier; THUMB: sub_i1
870ee8c513SChad Rosier  %a.addr = alloca i1, align 4
880ee8c513SChad Rosier  %0 = sub i1 %a, %b
890ee8c513SChad Rosier; ARM: sub r0, r0, r1
900ee8c513SChad Rosier; THUMB: subs r0, r0, r1
910ee8c513SChad Rosier  store i1 %0, i1* %a.addr, align 4
920ee8c513SChad Rosier  ret void
930ee8c513SChad Rosier}
940ee8c513SChad Rosier
950ee8c513SChad Rosierdefine void @sub_i8(i8 %a, i8 %b) nounwind ssp {
960ee8c513SChad Rosierentry:
970ee8c513SChad Rosier; ARM: sub_i8
980ee8c513SChad Rosier; THUMB: sub_i8
990ee8c513SChad Rosier  %a.addr = alloca i8, align 4
1000ee8c513SChad Rosier  %0 = sub i8 %a, %b
1010ee8c513SChad Rosier; ARM: sub r0, r0, r1
1020ee8c513SChad Rosier; THUMB: subs r0, r0, r1
1030ee8c513SChad Rosier  store i8 %0, i8* %a.addr, align 4
1040ee8c513SChad Rosier  ret void
1050ee8c513SChad Rosier}
1060ee8c513SChad Rosier
1070ee8c513SChad Rosierdefine void @sub_i16(i16 %a, i16 %b) nounwind ssp {
1080ee8c513SChad Rosierentry:
1090ee8c513SChad Rosier; ARM: sub_i16
1100ee8c513SChad Rosier; THUMB: sub_i16
1110ee8c513SChad Rosier  %a.addr = alloca i16, align 4
1120ee8c513SChad Rosier  %0 = sub i16 %a, %b
1130ee8c513SChad Rosier; ARM: sub r0, r0, r1
1140ee8c513SChad Rosier; THUMB: subs r0, r0, r1
1150ee8c513SChad Rosier  store i16 %0, i16* %a.addr, align 4
1160ee8c513SChad Rosier  ret void
1170ee8c513SChad Rosier}
118