88 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=avr < %s | FileCheck %s --check-prefix=CHECKA3; RUN: llc -mtriple=avr -mattr=+movw < %s | FileCheck %s --check-prefix=CHECKB4 5%struct.s10 = type { i16, i16, i16, i16, i16 }6%struct.s06 = type { i16, i16, i16 }7%struct.s04 = type { i16, i16 }8 9define void @foo10(ptr sret(%struct.s10) %0, i16 %1, i16 %2, i16 %3) addrspace(1) {10; CHECKA-LABEL: foo10:11; CHECKA: ; %bb.0:12; CHECKA-NEXT: mov r30, r2413; CHECKA-NEXT: mov r31, r2514; CHECKA-NEXT: std Z+5, r2315; CHECKA-NEXT: std Z+4, r2216; CHECKA-NEXT: std Z+3, r2117; CHECKA-NEXT: std Z+2, r2018; CHECKA-NEXT: std Z+1, r1919; CHECKA-NEXT: st Z, r1820; CHECKA-NEXT: ret21;22; CHECKB-LABEL: foo10:23; CHECKB: ; %bb.0:24; CHECKB-NEXT: movw r30, r2425; CHECKB-NEXT: std Z+5, r2326; CHECKB-NEXT: std Z+4, r2227; CHECKB-NEXT: std Z+3, r2128; CHECKB-NEXT: std Z+2, r2029; CHECKB-NEXT: std Z+1, r1930; CHECKB-NEXT: st Z, r1831; CHECKB-NEXT: ret32 %5 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 033 store i16 %3, ptr %534 %6 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 135 store i16 %2, ptr %636 %7 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 237 store i16 %1, ptr %738 ret void39}40 41define %struct.s06 @foo06(i16 %0, i16 %1, i16 %2) addrspace(1) {42; CHECKA-LABEL: foo06:43; CHECKA: ; %bb.0:44; CHECKA-NEXT: mov r30, r2045; CHECKA-NEXT: mov r31, r2146; CHECKA-NEXT: mov r20, r2247; CHECKA-NEXT: mov r21, r2348; CHECKA-NEXT: mov r18, r2449; CHECKA-NEXT: mov r19, r2550; CHECKA-NEXT: mov r22, r3051; CHECKA-NEXT: mov r23, r3152; CHECKA-NEXT: ret53;54; CHECKB-LABEL: foo06:55; CHECKB: ; %bb.0:56; CHECKB-NEXT: movw r30, r2057; CHECKB-NEXT: movw r20, r2258; CHECKB-NEXT: movw r18, r2459; CHECKB-NEXT: movw r22, r3060; CHECKB-NEXT: ret61 %4 = insertvalue %struct.s06 undef, i16 %0, 062 %5 = insertvalue %struct.s06 %4, i16 %1, 163 %6 = insertvalue %struct.s06 %5, i16 %2, 264 ret %struct.s06 %665}66 67define %struct.s04 @foo04(i16 %0, i16 %1) addrspace(1) {68; CHECKA-LABEL: foo04:69; CHECKA: ; %bb.0:70; CHECKA-NEXT: mov r18, r2271; CHECKA-NEXT: mov r19, r2372; CHECKA-NEXT: mov r22, r2473; CHECKA-NEXT: mov r23, r2574; CHECKA-NEXT: mov r24, r1875; CHECKA-NEXT: mov r25, r1976; CHECKA-NEXT: ret77;78; CHECKB-LABEL: foo04:79; CHECKB: ; %bb.0:80; CHECKB-NEXT: movw r18, r2281; CHECKB-NEXT: movw r22, r2482; CHECKB-NEXT: movw r24, r1883; CHECKB-NEXT: ret84 %3 = insertvalue %struct.s04 undef, i16 %0, 085 %4 = insertvalue %struct.s04 %3, i16 %1, 186 ret %struct.s04 %487}88