xref: /llvm-project/llvm/test/CodeGen/AVR/inline-asm/inline-asm3.ll (revision 7bdc80f35c325d148b1ddbdfce7dea8c6ba7af84)
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