brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.6 KiB · 86e75d9 Raw
416 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=avr | FileCheck %s3 4define void @add_r_i8(i8 signext %0, i8 signext %1) {5; CHECK-LABEL: add_r_i8:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    mov r20, r228; CHECK-NEXT:    mov r22, r249; CHECK-NEXT:    ;APP10; CHECK-NEXT:    mov r24, r2211; CHECK-NEXT:    add r24, r2012; CHECK-NEXT:    ;NO_APP13; CHECK-NEXT:    rcall foo814; CHECK-NEXT:    ret15  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=r,r,r"(i8 %0, i8 %1)16  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)17  ret void18}19 20declare void @foo8(i8 signext, i8 signext, i8 signext)21 22define void @add_r_i16(i16 signext %0, i16 signext %1) {23; CHECK-LABEL: add_r_i16:24; CHECK:       ; %bb.0:25; CHECK-NEXT:    mov r20, r2226; CHECK-NEXT:    mov r21, r2327; CHECK-NEXT:    mov r22, r2428; CHECK-NEXT:    mov r23, r2529; CHECK-NEXT:    ;APP30; CHECK-NEXT:    mov r24, r2231; CHECK-NEXT:    mov r25, r2332; CHECK-NEXT:    add r24, r2033; CHECK-NEXT:    adc r25, r2134; CHECK-NEXT:    ;NO_APP35; CHECK-NEXT:    rcall foo1636; CHECK-NEXT:    ret37  %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)38  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)39  ret void40}41 42declare void @foo16(i16 signext, i16 signext, i16 signext)43 44define void @add_a_i8(i8 signext %0, i8 signext %1) {45; CHECK-LABEL: add_a_i8:46; CHECK:       ; %bb.0:47; CHECK-NEXT:    mov r20, r2248; CHECK-NEXT:    mov r22, r2449; CHECK-NEXT:    ;APP50; CHECK-NEXT:    mov r23, r2251; CHECK-NEXT:    add r23, r2052; CHECK-NEXT:    ;NO_APP53; CHECK-NEXT:    mov r24, r2354; CHECK-NEXT:    rcall foo855; CHECK-NEXT:    ret56  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=a,a,a"(i8 %0, i8 %1)57  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)58  ret void59}60 61define void @add_a_i16(i16 signext %0, i16 signext %1) {62; CHECK-LABEL: add_a_i16:63; CHECK:       ; %bb.0:64; CHECK-NEXT:    mov r20, r2265; CHECK-NEXT:    mov r21, r2366; CHECK-NEXT:    mov r22, r2467; CHECK-NEXT:    mov r23, r2568; CHECK-NEXT:    ;APP69; CHECK-NEXT:    mov r18, r2270; CHECK-NEXT:    mov r19, r2371; CHECK-NEXT:    add r18, r2072; CHECK-NEXT:    adc r19, r2173; CHECK-NEXT:    ;NO_APP74; CHECK-NEXT:    mov r24, r1875; CHECK-NEXT:    mov r25, r1976; CHECK-NEXT:    rcall foo1677; CHECK-NEXT:    ret78  %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)79  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)80  ret void81}82 83define void @add_d_i8(i8 signext %0, i8 signext %1) {84; CHECK-LABEL: add_d_i8:85; CHECK:       ; %bb.0:86; CHECK-NEXT:    mov r20, r2287; CHECK-NEXT:    mov r22, r2488; CHECK-NEXT:    ;APP89; CHECK-NEXT:    mov r24, r2290; CHECK-NEXT:    add r24, r2091; CHECK-NEXT:    ;NO_APP92; CHECK-NEXT:    rcall foo893; CHECK-NEXT:    ret94  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=d,d,d"(i8 %0, i8 %1)95  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)96  ret void97}98 99define void @add_d_i16(i16 signext %0, i16 signext %1) {100; CHECK-LABEL: add_d_i16:101; CHECK:       ; %bb.0:102; CHECK-NEXT:    mov r20, r22103; CHECK-NEXT:    mov r21, r23104; CHECK-NEXT:    mov r22, r24105; CHECK-NEXT:    mov r23, r25106; CHECK-NEXT:    ;APP107; CHECK-NEXT:    mov r24, r22108; CHECK-NEXT:    mov r25, r23109; CHECK-NEXT:    add r24, r20110; CHECK-NEXT:    adc r25, r21111; CHECK-NEXT:    ;NO_APP112; CHECK-NEXT:    rcall foo16113; CHECK-NEXT:    ret114  %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)115  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)116  ret void117}118 119define void @add_l_i8(i8 signext %0, i8 signext %1) {120; CHECK-LABEL: add_l_i8:121; CHECK:       ; %bb.0:122; CHECK-NEXT:    push r13123; CHECK-NEXT:    push r14124; CHECK-NEXT:    push r15125; CHECK-NEXT:    mov r15, r22126; CHECK-NEXT:    mov r14, r24127; CHECK-NEXT:    ;APP128; CHECK-NEXT:    mov r13, r14129; CHECK-NEXT:    add r13, r15130; CHECK-NEXT:    ;NO_APP131; CHECK-NEXT:    mov r24, r13132; CHECK-NEXT:    mov r22, r14133; CHECK-NEXT:    mov r20, r15134; CHECK-NEXT:    rcall foo8135; CHECK-NEXT:    pop r15136; CHECK-NEXT:    pop r14137; CHECK-NEXT:    pop r13138; CHECK-NEXT:    ret139  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=l,l,l"(i8 %0, i8 %1)140  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)141  ret void142}143 144define void @add_l_i16(i16 signext %0, i16 signext %1) {145; CHECK-LABEL: add_l_i16:146; CHECK:       ; %bb.0:147; CHECK-NEXT:    push r10148; CHECK-NEXT:    push r11149; CHECK-NEXT:    push r12150; CHECK-NEXT:    push r13151; CHECK-NEXT:    push r14152; CHECK-NEXT:    push r15153; CHECK-NEXT:    mov r14, r22154; CHECK-NEXT:    mov r15, r23155; CHECK-NEXT:    mov r12, r24156; CHECK-NEXT:    mov r13, r25157; CHECK-NEXT:    ;APP158; CHECK-NEXT:    mov r10, r12159; CHECK-NEXT:    mov r11, r13160; CHECK-NEXT:    add r10, r14161; CHECK-NEXT:    adc r11, r15162; CHECK-NEXT:    ;NO_APP163; CHECK-NEXT:    mov r24, r10164; CHECK-NEXT:    mov r25, r11165; CHECK-NEXT:    mov r22, r12166; CHECK-NEXT:    mov r23, r13167; CHECK-NEXT:    mov r20, r14168; CHECK-NEXT:    mov r21, r15169; CHECK-NEXT:    rcall foo16170; CHECK-NEXT:    pop r15171; CHECK-NEXT:    pop r14172; CHECK-NEXT:    pop r13173; CHECK-NEXT:    pop r12174; CHECK-NEXT:    pop r11175; CHECK-NEXT:    pop r10176; CHECK-NEXT:    ret177  %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)178  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)179  ret void180}181 182define void @add_b_i8(i8 signext %0, i8 signext %1) {183; CHECK-LABEL: add_b_i8:184; CHECK:       ; %bb.0:185; CHECK-NEXT:    mov r20, r22186; CHECK-NEXT:    mov r22, r24187; CHECK-NEXT:    mov r24, r22188; CHECK-NEXT:    clr r25189; CHECK-NEXT:    mov r30, r24190; CHECK-NEXT:    mov r31, r25191; CHECK-NEXT:    ;APP192; CHECK-NEXT:    mov r30, r30193; CHECK-NEXT:    add r30, r20194; CHECK-NEXT:    ;NO_APP195; CHECK-NEXT:    mov r24, r30196; CHECK-NEXT:    rcall foo8197; CHECK-NEXT:    ret198  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=b,b,r"(i8 %0, i8 %1)199  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)200  ret void201}202 203define void @add_b_i16(i16 signext %0, i16 signext %1) {204; CHECK-LABEL: add_b_i16:205; CHECK:       ; %bb.0:206; CHECK-NEXT:    mov r20, r22207; CHECK-NEXT:    mov r21, r23208; CHECK-NEXT:    mov r22, r24209; CHECK-NEXT:    mov r23, r25210; CHECK-NEXT:    mov r30, r22211; CHECK-NEXT:    mov r31, r23212; CHECK-NEXT:    ;APP213; CHECK-NEXT:    mov r30, r30214; CHECK-NEXT:    mov r31, r31215; CHECK-NEXT:    add r30, r20216; CHECK-NEXT:    adc r31, r21217; CHECK-NEXT:    ;NO_APP218; CHECK-NEXT:    mov r24, r30219; CHECK-NEXT:    mov r25, r31220; CHECK-NEXT:    rcall foo16221; CHECK-NEXT:    ret222  %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)223  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)224  ret void225}226 227define void @add_e_i8(i8 signext %0, i8 signext %1) {228; CHECK-LABEL: add_e_i8:229; CHECK:       ; %bb.0:230; CHECK-NEXT:    mov r20, r22231; CHECK-NEXT:    mov r22, r24232; CHECK-NEXT:    mov r26, r22233; CHECK-NEXT:    clr r27234; CHECK-NEXT:    mov r30, r20235; CHECK-NEXT:    clr r31236; CHECK-NEXT:    ;APP237; CHECK-NEXT:    mov r26, r26238; CHECK-NEXT:    add r26, r30239; CHECK-NEXT:    ;NO_APP240; CHECK-NEXT:    mov r24, r26241; CHECK-NEXT:    rcall foo8242; CHECK-NEXT:    ret243  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=e,e,e"(i8 %0, i8 %1)244  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)245  ret void246}247 248define void @add_e_i16(i16 signext %0, i16 signext %1) {249; CHECK-LABEL: add_e_i16:250; CHECK:       ; %bb.0:251; CHECK-NEXT:    mov r30, r22252; CHECK-NEXT:    mov r31, r23253; CHECK-NEXT:    mov r22, r24254; CHECK-NEXT:    mov r23, r25255; CHECK-NEXT:    mov r26, r22256; CHECK-NEXT:    mov r27, r23257; CHECK-NEXT:    ;APP258; CHECK-NEXT:    mov r26, r26259; CHECK-NEXT:    mov r27, r27260; CHECK-NEXT:    add r26, r30261; CHECK-NEXT:    adc r27, r31262; CHECK-NEXT:    ;NO_APP263; CHECK-NEXT:    mov r24, r26264; CHECK-NEXT:    mov r25, r27265; CHECK-NEXT:    mov r20, r30266; CHECK-NEXT:    mov r21, r31267; CHECK-NEXT:    rcall foo16268; CHECK-NEXT:    ret269  %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)270  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)271  ret void272}273 274define void @add_t_i8(i8 signext %0, i8 signext %1) {275; CHECK-LABEL: add_t_i8:276; CHECK:       ; %bb.0:277; CHECK-NEXT:    mov r20, r22278; CHECK-NEXT:    mov r22, r24279; CHECK-NEXT:    ;APP280; CHECK-NEXT:    mov r0, r22281; CHECK-NEXT:    add r0, r20282; CHECK-NEXT:    ;NO_APP283; CHECK-NEXT:    mov r24, r0284; CHECK-NEXT:    rcall foo8285; CHECK-NEXT:    ret286  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=t,r,r"(i8 %0, i8 %1)287  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)288  ret void289}290 291define void @add_w_i8(i8 signext %0, i8 signext %1) {292; CHECK-LABEL: add_w_i8:293; CHECK:       ; %bb.0:294; CHECK-NEXT:    mov r20, r22295; CHECK-NEXT:    mov r22, r24296; CHECK-NEXT:    mov r24, r22297; CHECK-NEXT:    clr r25298; CHECK-NEXT:    mov r30, r20299; CHECK-NEXT:    clr r31300; CHECK-NEXT:    ;APP301; CHECK-NEXT:    mov r24, r24302; CHECK-NEXT:    add r24, r30303; CHECK-NEXT:    ;NO_APP304; CHECK-NEXT:    rcall foo8305; CHECK-NEXT:    ret306  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=w,w,w"(i8 %0, i8 %1)307  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)308  ret void309}310 311define void @add_w_i16(i16 signext %0, i16 signext %1) {312; CHECK-LABEL: add_w_i16:313; CHECK:       ; %bb.0:314; CHECK-NEXT:    mov r26, r22315; CHECK-NEXT:    mov r27, r23316; CHECK-NEXT:    mov r30, r24317; CHECK-NEXT:    mov r31, r25318; CHECK-NEXT:    ;APP319; CHECK-NEXT:    mov r24, r30320; CHECK-NEXT:    mov r25, r31321; CHECK-NEXT:    add r24, r26322; CHECK-NEXT:    adc r25, r27323; CHECK-NEXT:    ;NO_APP324; CHECK-NEXT:    mov r22, r30325; CHECK-NEXT:    mov r23, r31326; CHECK-NEXT:    mov r20, r26327; CHECK-NEXT:    mov r21, r27328; CHECK-NEXT:    rcall foo16329; CHECK-NEXT:    ret330  %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)331  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)332  ret void333}334 335define void @add_xyz_i8(i8 signext %0, i8 signext %1) {336; CHECK-LABEL: add_xyz_i8:337; CHECK:       ; %bb.0:338; CHECK-NEXT:    push r28339; CHECK-NEXT:    push r29340; CHECK-NEXT:    mov r20, r22341; CHECK-NEXT:    mov r22, r24342; CHECK-NEXT:    mov r28, r22343; CHECK-NEXT:    clr r29344; CHECK-NEXT:    mov r26, r20345; CHECK-NEXT:    clr r27346; CHECK-NEXT:    ;APP347; CHECK-NEXT:    mov r30, r28348; CHECK-NEXT:    add r30, r26349; CHECK-NEXT:    ;NO_APP350; CHECK-NEXT:    mov r24, r30351; CHECK-NEXT:    mov r25, r31352; CHECK-NEXT:    rcall foo8353; CHECK-NEXT:    pop r29354; CHECK-NEXT:    pop r28355; CHECK-NEXT:    ret356  %3 = tail call i8 asm sideeffect "mov $0, $1\0Aadd $0, $2", "=z,y,x"(i8 %0, i8 %1)357  tail call void @foo8(i8 signext %3, i8 signext %0, i8 signext %1)358  ret void359}360 361define void @add_xyz_i16(i16 signext %0, i16 signext %1) {362; CHECK-LABEL: add_xyz_i16:363; CHECK:       ; %bb.0:364; CHECK-NEXT:    push r28365; CHECK-NEXT:    push r29366; CHECK-NEXT:    mov r20, r22367; CHECK-NEXT:    mov r21, r23368; CHECK-NEXT:    mov r22, r24369; CHECK-NEXT:    mov r23, r25370; CHECK-NEXT:    mov r28, r22371; CHECK-NEXT:    mov r29, r23372; CHECK-NEXT:    mov r26, r20373; CHECK-NEXT:    mov r27, r21374; CHECK-NEXT:    ;APP375; CHECK-NEXT:    mov r30, r28376; CHECK-NEXT:    mov r31, r29377; CHECK-NEXT:    add r30, r26378; CHECK-NEXT:    adc r31, r27379; CHECK-NEXT:    ;NO_APP380; CHECK-NEXT:    mov r24, r30381; CHECK-NEXT:    mov r25, r31382; CHECK-NEXT:    rcall foo16383; CHECK-NEXT:    pop r29384; CHECK-NEXT:    pop r28385; CHECK-NEXT:    ret386  %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)387  tail call void @foo16(i16 signext %3, i16 signext %0, i16 signext %1)388  ret void389}390 391@gvar = global i16 0392 393define ptr @ldi_dreg_symbol() {394; CHECK-LABEL: ldi_dreg_symbol:395; CHECK:       ; %bb.0:396; CHECK-NEXT:    ;APP397; CHECK-NEXT:    ldi r25, hi8(gvar)398; CHECK-NEXT:    ldi r24, lo8(gvar)399; CHECK-NEXT:    ;NO_APP400; CHECK-NEXT:    ret401  %1 = tail call ptr asm sideeffect "ldi ${0:B}, hi8($1)\0A\09ldi ${0:A}, lo8($1)", "=d,i"(ptr @gvar)402  ret ptr %1403}404 405define ptr @ldi_dreg_imm() {406; CHECK-LABEL: ldi_dreg_imm:407; CHECK:       ; %bb.0:408; CHECK-NEXT:    ;APP409; CHECK-NEXT:    ldi r25, hi8(2345)410; CHECK-NEXT:    ldi r24, lo8(2345)411; CHECK-NEXT:    ;NO_APP412; CHECK-NEXT:    ret413  %1 = tail call ptr asm sideeffect "ldi ${0:B}, hi8($1)\0A\09ldi ${0:A}, lo8($1)", "=d,i"(i16 2345)414  ret ptr %1415}416