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