186812faaSBen Shi; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 286812faaSBen Shi; RUN: llc < %s -mtriple=avr | FileCheck %s 386812faaSBen Shi 486812faaSBen Shidefine void @add_r_i8(i8 signext %0, i8 signext %1) { 586812faaSBen Shi; CHECK-LABEL: add_r_i8: 686812faaSBen Shi; CHECK: ; %bb.0: 786812faaSBen Shi; CHECK-NEXT: mov r20, r22 886812faaSBen Shi; CHECK-NEXT: mov r22, r24 986812faaSBen Shi; CHECK-NEXT: ;APP 1086812faaSBen Shi; CHECK-NEXT: mov r24, r22 1186812faaSBen Shi; CHECK-NEXT: add r24, r20 1286812faaSBen Shi; CHECK-NEXT: ;NO_APP 13c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 1486812faaSBen Shi; CHECK-NEXT: ret 1586812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=r,r,r"(i8 %0, i8 %1) 1686812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 1786812faaSBen Shi ret void 1886812faaSBen Shi} 1986812faaSBen Shi 2086812faaSBen Shideclare void @foo8(i8 signext, i8 signext, i8 signext) 2186812faaSBen Shi 2286812faaSBen Shidefine void @add_r_i16(i16 signext %0, i16 signext %1) { 2386812faaSBen Shi; CHECK-LABEL: add_r_i16: 2486812faaSBen Shi; CHECK: ; %bb.0: 2586812faaSBen Shi; CHECK-NEXT: mov r20, r22 2686812faaSBen Shi; CHECK-NEXT: mov r21, r23 2786812faaSBen Shi; CHECK-NEXT: mov r22, r24 2886812faaSBen Shi; CHECK-NEXT: mov r23, r25 2986812faaSBen Shi; CHECK-NEXT: ;APP 3086812faaSBen Shi; CHECK-NEXT: mov r24, r22 3186812faaSBen Shi; CHECK-NEXT: mov r25, r23 3286812faaSBen Shi; CHECK-NEXT: add r24, r20 3386812faaSBen Shi; CHECK-NEXT: adc r25, r21 3486812faaSBen Shi; CHECK-NEXT: ;NO_APP 35c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 3686812faaSBen Shi; CHECK-NEXT: ret 3786812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=r,r,r"(i16 %0, i16 %1) 3886812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 3986812faaSBen Shi ret void 4086812faaSBen Shi} 4186812faaSBen Shi 4286812faaSBen Shideclare void @foo16(i16 signext, i16 signext, i16 signext) 4386812faaSBen Shi 4486812faaSBen Shidefine void @add_a_i8(i8 signext %0, i8 signext %1) { 4586812faaSBen Shi; CHECK-LABEL: add_a_i8: 4686812faaSBen Shi; CHECK: ; %bb.0: 4786812faaSBen Shi; CHECK-NEXT: mov r20, r22 4886812faaSBen Shi; CHECK-NEXT: mov r22, r24 4986812faaSBen Shi; CHECK-NEXT: ;APP 5086812faaSBen Shi; CHECK-NEXT: mov r23, r22 5186812faaSBen Shi; CHECK-NEXT: add r23, r20 5286812faaSBen Shi; CHECK-NEXT: ;NO_APP 5386812faaSBen Shi; CHECK-NEXT: mov r24, r23 54c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 5586812faaSBen Shi; CHECK-NEXT: ret 5686812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=a,a,a"(i8 %0, i8 %1) 5786812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 5886812faaSBen Shi ret void 5986812faaSBen Shi} 6086812faaSBen Shi 6186812faaSBen Shidefine void @add_a_i16(i16 signext %0, i16 signext %1) { 6286812faaSBen Shi; CHECK-LABEL: add_a_i16: 6386812faaSBen Shi; CHECK: ; %bb.0: 6486812faaSBen Shi; CHECK-NEXT: mov r20, r22 6586812faaSBen Shi; CHECK-NEXT: mov r21, r23 6686812faaSBen Shi; CHECK-NEXT: mov r22, r24 6786812faaSBen Shi; CHECK-NEXT: mov r23, r25 6886812faaSBen Shi; CHECK-NEXT: ;APP 6986812faaSBen Shi; CHECK-NEXT: mov r18, r22 7086812faaSBen Shi; CHECK-NEXT: mov r19, r23 7186812faaSBen Shi; CHECK-NEXT: add r18, r20 7286812faaSBen Shi; CHECK-NEXT: adc r19, r21 7386812faaSBen Shi; CHECK-NEXT: ;NO_APP 7486812faaSBen Shi; CHECK-NEXT: mov r24, r18 7586812faaSBen Shi; CHECK-NEXT: mov r25, r19 76c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 7786812faaSBen Shi; CHECK-NEXT: ret 7886812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=a,a,a"(i16 %0, i16 %1) 7986812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 8086812faaSBen Shi ret void 8186812faaSBen Shi} 8286812faaSBen Shi 8386812faaSBen Shidefine void @add_d_i8(i8 signext %0, i8 signext %1) { 8486812faaSBen Shi; CHECK-LABEL: add_d_i8: 8586812faaSBen Shi; CHECK: ; %bb.0: 8686812faaSBen Shi; CHECK-NEXT: mov r20, r22 8786812faaSBen Shi; CHECK-NEXT: mov r22, r24 8886812faaSBen Shi; CHECK-NEXT: ;APP 8986812faaSBen Shi; CHECK-NEXT: mov r24, r22 9086812faaSBen Shi; CHECK-NEXT: add r24, r20 9186812faaSBen Shi; CHECK-NEXT: ;NO_APP 92c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 9386812faaSBen Shi; CHECK-NEXT: ret 9486812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=d,d,d"(i8 %0, i8 %1) 9586812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 9686812faaSBen Shi ret void 9786812faaSBen Shi} 9886812faaSBen Shi 9986812faaSBen Shidefine void @add_d_i16(i16 signext %0, i16 signext %1) { 10086812faaSBen Shi; CHECK-LABEL: add_d_i16: 10186812faaSBen Shi; CHECK: ; %bb.0: 10286812faaSBen Shi; CHECK-NEXT: mov r20, r22 10386812faaSBen Shi; CHECK-NEXT: mov r21, r23 10486812faaSBen Shi; CHECK-NEXT: mov r22, r24 10586812faaSBen Shi; CHECK-NEXT: mov r23, r25 10686812faaSBen Shi; CHECK-NEXT: ;APP 10786812faaSBen Shi; CHECK-NEXT: mov r24, r22 10886812faaSBen Shi; CHECK-NEXT: mov r25, r23 10986812faaSBen Shi; CHECK-NEXT: add r24, r20 11086812faaSBen Shi; CHECK-NEXT: adc r25, r21 11186812faaSBen Shi; CHECK-NEXT: ;NO_APP 112c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 11386812faaSBen Shi; CHECK-NEXT: ret 11486812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=d,d,d"(i16 %0, i16 %1) 11586812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 11686812faaSBen Shi ret void 11786812faaSBen Shi} 11886812faaSBen Shi 11986812faaSBen Shidefine void @add_l_i8(i8 signext %0, i8 signext %1) { 12086812faaSBen Shi; CHECK-LABEL: add_l_i8: 12186812faaSBen Shi; CHECK: ; %bb.0: 12286812faaSBen Shi; CHECK-NEXT: push r13 12386812faaSBen Shi; CHECK-NEXT: push r14 12486812faaSBen Shi; CHECK-NEXT: push r15 12586812faaSBen Shi; CHECK-NEXT: mov r15, r22 12686812faaSBen Shi; CHECK-NEXT: mov r14, r24 12786812faaSBen Shi; CHECK-NEXT: ;APP 12886812faaSBen Shi; CHECK-NEXT: mov r13, r14 12986812faaSBen Shi; CHECK-NEXT: add r13, r15 13086812faaSBen Shi; CHECK-NEXT: ;NO_APP 13186812faaSBen Shi; CHECK-NEXT: mov r24, r13 13286812faaSBen Shi; CHECK-NEXT: mov r22, r14 13386812faaSBen Shi; CHECK-NEXT: mov r20, r15 134c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 13586812faaSBen Shi; CHECK-NEXT: pop r15 13686812faaSBen Shi; CHECK-NEXT: pop r14 13786812faaSBen Shi; CHECK-NEXT: pop r13 13886812faaSBen Shi; CHECK-NEXT: ret 13986812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=l,l,l"(i8 %0, i8 %1) 14086812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 14186812faaSBen Shi ret void 14286812faaSBen Shi} 14386812faaSBen Shi 14486812faaSBen Shidefine void @add_l_i16(i16 signext %0, i16 signext %1) { 14586812faaSBen Shi; CHECK-LABEL: add_l_i16: 14686812faaSBen Shi; CHECK: ; %bb.0: 14786812faaSBen Shi; CHECK-NEXT: push r10 14886812faaSBen Shi; CHECK-NEXT: push r11 14986812faaSBen Shi; CHECK-NEXT: push r12 15086812faaSBen Shi; CHECK-NEXT: push r13 15186812faaSBen Shi; CHECK-NEXT: push r14 15286812faaSBen Shi; CHECK-NEXT: push r15 15386812faaSBen Shi; CHECK-NEXT: mov r14, r22 15486812faaSBen Shi; CHECK-NEXT: mov r15, r23 15586812faaSBen Shi; CHECK-NEXT: mov r12, r24 15686812faaSBen Shi; CHECK-NEXT: mov r13, r25 15786812faaSBen Shi; CHECK-NEXT: ;APP 15886812faaSBen Shi; CHECK-NEXT: mov r10, r12 15986812faaSBen Shi; CHECK-NEXT: mov r11, r13 16086812faaSBen Shi; CHECK-NEXT: add r10, r14 16186812faaSBen Shi; CHECK-NEXT: adc r11, r15 16286812faaSBen Shi; CHECK-NEXT: ;NO_APP 16386812faaSBen Shi; CHECK-NEXT: mov r24, r10 16486812faaSBen Shi; CHECK-NEXT: mov r25, r11 16586812faaSBen Shi; CHECK-NEXT: mov r22, r12 16686812faaSBen Shi; CHECK-NEXT: mov r23, r13 16786812faaSBen Shi; CHECK-NEXT: mov r20, r14 16886812faaSBen Shi; CHECK-NEXT: mov r21, r15 169c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 17086812faaSBen Shi; CHECK-NEXT: pop r15 17186812faaSBen Shi; CHECK-NEXT: pop r14 17286812faaSBen Shi; CHECK-NEXT: pop r13 17386812faaSBen Shi; CHECK-NEXT: pop r12 17486812faaSBen Shi; CHECK-NEXT: pop r11 17586812faaSBen Shi; CHECK-NEXT: pop r10 17686812faaSBen Shi; CHECK-NEXT: ret 17786812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=l,l,l"(i16 %0, i16 %1) 17886812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 17986812faaSBen Shi ret void 18086812faaSBen Shi} 18186812faaSBen Shi 18286812faaSBen Shidefine void @add_b_i8(i8 signext %0, i8 signext %1) { 18386812faaSBen Shi; CHECK-LABEL: add_b_i8: 18486812faaSBen Shi; CHECK: ; %bb.0: 18586812faaSBen Shi; CHECK-NEXT: mov r20, r22 18686812faaSBen Shi; CHECK-NEXT: mov r22, r24 18786812faaSBen Shi; CHECK-NEXT: mov r30, r22 18886812faaSBen Shi; CHECK-NEXT: ;APP 18986812faaSBen Shi; CHECK-NEXT: mov r30, r30 19086812faaSBen Shi; CHECK-NEXT: add r30, r20 19186812faaSBen Shi; CHECK-NEXT: ;NO_APP 19286812faaSBen Shi; CHECK-NEXT: mov r24, r30 193c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 19486812faaSBen Shi; CHECK-NEXT: ret 19586812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=b,b,r"(i8 %0, i8 %1) 19686812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 19786812faaSBen Shi ret void 19886812faaSBen Shi} 19986812faaSBen Shi 20086812faaSBen Shidefine void @add_b_i16(i16 signext %0, i16 signext %1) { 20186812faaSBen Shi; CHECK-LABEL: add_b_i16: 20286812faaSBen Shi; CHECK: ; %bb.0: 20386812faaSBen Shi; CHECK-NEXT: mov r20, r22 20486812faaSBen Shi; CHECK-NEXT: mov r21, r23 20586812faaSBen Shi; CHECK-NEXT: mov r22, r24 20686812faaSBen Shi; CHECK-NEXT: mov r23, r25 20786812faaSBen Shi; CHECK-NEXT: mov r30, r22 20886812faaSBen Shi; CHECK-NEXT: mov r31, r23 20986812faaSBen Shi; CHECK-NEXT: ;APP 21086812faaSBen Shi; CHECK-NEXT: mov r30, r30 21186812faaSBen Shi; CHECK-NEXT: mov r31, r31 21286812faaSBen Shi; CHECK-NEXT: add r30, r20 21386812faaSBen Shi; CHECK-NEXT: adc r31, r21 21486812faaSBen Shi; CHECK-NEXT: ;NO_APP 21586812faaSBen Shi; CHECK-NEXT: mov r24, r30 21686812faaSBen Shi; CHECK-NEXT: mov r25, r31 217c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 21886812faaSBen Shi; CHECK-NEXT: ret 21986812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=b,b,r"(i16 %0, i16 %1) 22086812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 22186812faaSBen Shi ret void 22286812faaSBen Shi} 22386812faaSBen Shi 22486812faaSBen Shidefine void @add_e_i8(i8 signext %0, i8 signext %1) { 22586812faaSBen Shi; CHECK-LABEL: add_e_i8: 22686812faaSBen Shi; CHECK: ; %bb.0: 22786812faaSBen Shi; CHECK-NEXT: mov r30, r22 22886812faaSBen Shi; CHECK-NEXT: mov r22, r24 22986812faaSBen Shi; CHECK-NEXT: mov r26, r22 23086812faaSBen Shi; CHECK-NEXT: ;APP 23186812faaSBen Shi; CHECK-NEXT: mov r26, r26 23286812faaSBen Shi; CHECK-NEXT: add r26, r30 23386812faaSBen Shi; CHECK-NEXT: ;NO_APP 23486812faaSBen Shi; CHECK-NEXT: mov r20, r30 235cef723a0SBen Shi; CHECK-NEXT: mov r24, r26 236c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 23786812faaSBen Shi; CHECK-NEXT: ret 23886812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=e,e,e"(i8 %0, i8 %1) 23986812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 24086812faaSBen Shi ret void 24186812faaSBen Shi} 24286812faaSBen Shi 24386812faaSBen Shidefine void @add_e_i16(i16 signext %0, i16 signext %1) { 24486812faaSBen Shi; CHECK-LABEL: add_e_i16: 24586812faaSBen Shi; CHECK: ; %bb.0: 24686812faaSBen Shi; CHECK-NEXT: mov r30, r22 24786812faaSBen Shi; CHECK-NEXT: mov r31, r23 24886812faaSBen Shi; CHECK-NEXT: mov r22, r24 24986812faaSBen Shi; CHECK-NEXT: mov r23, r25 25086812faaSBen Shi; CHECK-NEXT: mov r26, r22 25186812faaSBen Shi; CHECK-NEXT: mov r27, r23 25286812faaSBen Shi; CHECK-NEXT: ;APP 25386812faaSBen Shi; CHECK-NEXT: mov r26, r26 25486812faaSBen Shi; CHECK-NEXT: mov r27, r27 25586812faaSBen Shi; CHECK-NEXT: add r26, r30 25686812faaSBen Shi; CHECK-NEXT: adc r27, r31 25786812faaSBen Shi; CHECK-NEXT: ;NO_APP 25886812faaSBen Shi; CHECK-NEXT: mov r24, r26 25986812faaSBen Shi; CHECK-NEXT: mov r25, r27 26086812faaSBen Shi; CHECK-NEXT: mov r20, r30 26186812faaSBen Shi; CHECK-NEXT: mov r21, r31 262c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 26386812faaSBen Shi; CHECK-NEXT: ret 26486812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=e,e,e"(i16 %0, i16 %1) 26586812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 26686812faaSBen Shi ret void 26786812faaSBen Shi} 26886812faaSBen Shi 26986812faaSBen Shidefine void @add_t_i8(i8 signext %0, i8 signext %1) { 27086812faaSBen Shi; CHECK-LABEL: add_t_i8: 27186812faaSBen Shi; CHECK: ; %bb.0: 27286812faaSBen Shi; CHECK-NEXT: mov r20, r22 27386812faaSBen Shi; CHECK-NEXT: mov r22, r24 27486812faaSBen Shi; CHECK-NEXT: ;APP 27586812faaSBen Shi; CHECK-NEXT: mov r0, r22 27686812faaSBen Shi; CHECK-NEXT: add r0, r20 27786812faaSBen Shi; CHECK-NEXT: ;NO_APP 27886812faaSBen Shi; CHECK-NEXT: mov r24, r0 279c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 28086812faaSBen Shi; CHECK-NEXT: ret 28186812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=t,r,r"(i8 %0, i8 %1) 28286812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 28386812faaSBen Shi ret void 28486812faaSBen Shi} 28586812faaSBen Shi 28686812faaSBen Shidefine void @add_w_i8(i8 signext %0, i8 signext %1) { 28786812faaSBen Shi; CHECK-LABEL: add_w_i8: 28886812faaSBen Shi; CHECK: ; %bb.0: 28986812faaSBen Shi; CHECK-NEXT: mov r26, r22 29086812faaSBen Shi; CHECK-NEXT: mov r30, r24 29186812faaSBen Shi; CHECK-NEXT: ;APP 29286812faaSBen Shi; CHECK-NEXT: mov r24, r30 29386812faaSBen Shi; CHECK-NEXT: add r24, r26 29486812faaSBen Shi; CHECK-NEXT: ;NO_APP 29586812faaSBen Shi; CHECK-NEXT: mov r22, r30 29686812faaSBen Shi; CHECK-NEXT: mov r20, r26 297c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 29886812faaSBen Shi; CHECK-NEXT: ret 29986812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=w,w,w"(i8 %0, i8 %1) 30086812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 30186812faaSBen Shi ret void 30286812faaSBen Shi} 30386812faaSBen Shi 30486812faaSBen Shidefine void @add_w_i16(i16 signext %0, i16 signext %1) { 30586812faaSBen Shi; CHECK-LABEL: add_w_i16: 30686812faaSBen Shi; CHECK: ; %bb.0: 30786812faaSBen Shi; CHECK-NEXT: mov r26, r22 30886812faaSBen Shi; CHECK-NEXT: mov r27, r23 30986812faaSBen Shi; CHECK-NEXT: mov r30, r24 31086812faaSBen Shi; CHECK-NEXT: mov r31, r25 31186812faaSBen Shi; CHECK-NEXT: ;APP 31286812faaSBen Shi; CHECK-NEXT: mov r24, r30 31386812faaSBen Shi; CHECK-NEXT: mov r25, r31 31486812faaSBen Shi; CHECK-NEXT: add r24, r26 31586812faaSBen Shi; CHECK-NEXT: adc r25, r27 31686812faaSBen Shi; CHECK-NEXT: ;NO_APP 31786812faaSBen Shi; CHECK-NEXT: mov r22, r30 31886812faaSBen Shi; CHECK-NEXT: mov r23, r31 31986812faaSBen Shi; CHECK-NEXT: mov r20, r26 32086812faaSBen Shi; CHECK-NEXT: mov r21, r27 321c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 32286812faaSBen Shi; CHECK-NEXT: ret 32386812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=w,w,w"(i16 %0, i16 %1) 32486812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 32586812faaSBen Shi ret void 32686812faaSBen Shi} 32786812faaSBen Shi 32886812faaSBen Shidefine void @add_xyz_i8(i8 signext %0, i8 signext %1) { 32986812faaSBen Shi; CHECK-LABEL: add_xyz_i8: 33086812faaSBen Shi; CHECK: ; %bb.0: 33186812faaSBen Shi; CHECK-NEXT: push r28 33286812faaSBen Shi; CHECK-NEXT: push r29 33386812faaSBen Shi; CHECK-NEXT: mov r20, r22 33486812faaSBen Shi; CHECK-NEXT: mov r22, r24 33586812faaSBen Shi; CHECK-NEXT: mov r28, r22 33686812faaSBen Shi; CHECK-NEXT: mov r29, r23 33786812faaSBen Shi; CHECK-NEXT: mov r26, r20 33886812faaSBen Shi; CHECK-NEXT: mov r27, r21 33986812faaSBen Shi; CHECK-NEXT: ;APP 34086812faaSBen Shi; CHECK-NEXT: mov r30, r28 34186812faaSBen Shi; CHECK-NEXT: add r30, r26 34286812faaSBen Shi; CHECK-NEXT: ;NO_APP 34386812faaSBen Shi; CHECK-NEXT: mov r24, r30 34486812faaSBen Shi; CHECK-NEXT: mov r25, r31 345c919ea5bSBen Shi; CHECK-NEXT: rcall foo8 34686812faaSBen Shi; CHECK-NEXT: pop r29 34786812faaSBen Shi; CHECK-NEXT: pop r28 34886812faaSBen Shi; CHECK-NEXT: ret 34986812faaSBen Shi %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=z,y,x"(i8 %0, i8 %1) 35086812faaSBen Shi tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1) 35186812faaSBen Shi ret void 35286812faaSBen Shi} 35386812faaSBen Shi 35486812faaSBen Shidefine void @add_xyz_i16(i16 signext %0, i16 signext %1) { 35586812faaSBen Shi; CHECK-LABEL: add_xyz_i16: 35686812faaSBen Shi; CHECK: ; %bb.0: 35786812faaSBen Shi; CHECK-NEXT: push r28 35886812faaSBen Shi; CHECK-NEXT: push r29 35986812faaSBen Shi; CHECK-NEXT: mov r20, r22 36086812faaSBen Shi; CHECK-NEXT: mov r21, r23 36186812faaSBen Shi; CHECK-NEXT: mov r22, r24 36286812faaSBen Shi; CHECK-NEXT: mov r23, r25 36386812faaSBen Shi; CHECK-NEXT: mov r28, r22 36486812faaSBen Shi; CHECK-NEXT: mov r29, r23 36586812faaSBen Shi; CHECK-NEXT: mov r26, r20 36686812faaSBen Shi; CHECK-NEXT: mov r27, r21 36786812faaSBen Shi; CHECK-NEXT: ;APP 36886812faaSBen Shi; CHECK-NEXT: mov r30, r28 36986812faaSBen Shi; CHECK-NEXT: mov r31, r29 37086812faaSBen Shi; CHECK-NEXT: add r30, r26 37186812faaSBen Shi; CHECK-NEXT: adc r31, r27 37286812faaSBen Shi; CHECK-NEXT: ;NO_APP 37386812faaSBen Shi; CHECK-NEXT: mov r24, r30 37486812faaSBen Shi; CHECK-NEXT: mov r25, r31 375c919ea5bSBen Shi; CHECK-NEXT: rcall foo16 37686812faaSBen Shi; CHECK-NEXT: pop r29 37786812faaSBen Shi; CHECK-NEXT: pop r28 37886812faaSBen Shi; CHECK-NEXT: ret 37986812faaSBen Shi %3 = tail call i16 asm sideeffect "mov ${0:A}, ${1:A}\0Amov ${0:B}, ${1:B}\0Aadd ${0:A}, ${2:A}\0Aadc ${0:B}, ${2:B}", "=z,y,x"(i16 %0, i16 %1) 38086812faaSBen Shi tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1) 38186812faaSBen Shi ret void 38286812faaSBen Shi} 383c919ea5bSBen Shi 384c919ea5bSBen Shi@gvar = global i16 0 385c919ea5bSBen Shi 386*7bdc80f3SNikita Popovdefine ptr @ldi_dreg_symbol() { 387c919ea5bSBen Shi; CHECK-LABEL: ldi_dreg_symbol: 388c919ea5bSBen Shi; CHECK: ; %bb.0: 389c919ea5bSBen Shi; CHECK-NEXT: ;APP 390c919ea5bSBen Shi; CHECK-NEXT: ldi r25, hi8(gvar) 391c919ea5bSBen Shi; CHECK-NEXT: ldi r24, lo8(gvar) 392c919ea5bSBen Shi; CHECK-NEXT: ;NO_APP 393c919ea5bSBen Shi; CHECK-NEXT: ret 394*7bdc80f3SNikita Popov %1 = tail call ptr asm sideeffect "ldi ${0:B}, hi8($1)\0A\09ldi ${0:A}, lo8($1)", "=d,i"(ptr @gvar) 395*7bdc80f3SNikita Popov ret ptr %1 396c919ea5bSBen Shi} 397c919ea5bSBen Shi 398*7bdc80f3SNikita Popovdefine ptr @ldi_dreg_imm() { 399c919ea5bSBen Shi; CHECK-LABEL: ldi_dreg_imm: 400c919ea5bSBen Shi; CHECK: ; %bb.0: 401c919ea5bSBen Shi; CHECK-NEXT: ;APP 402c919ea5bSBen Shi; CHECK-NEXT: ldi r25, hi8(2345) 403c919ea5bSBen Shi; CHECK-NEXT: ldi r24, lo8(2345) 404c919ea5bSBen Shi; CHECK-NEXT: ;NO_APP 405c919ea5bSBen Shi; CHECK-NEXT: ret 406*7bdc80f3SNikita Popov %1 = tail call ptr asm sideeffect "ldi ${0:B}, hi8($1)\0A\09ldi ${0:A}, lo8($1)", "=d,i"(i16 2345) 407*7bdc80f3SNikita Popov ret ptr %1 408c919ea5bSBen Shi} 409