xref: /llvm-project/llvm/test/CodeGen/AVR/struct.ll (revision 7bdc80f35c325d148b1ddbdfce7dea8c6ba7af84)
11dd2d15bSBen Shi; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
21dd2d15bSBen Shi; RUN: llc -mtriple=avr < %s | FileCheck %s --check-prefix=CHECKA
31dd2d15bSBen Shi; RUN: llc -mtriple=avr -mattr=+movw < %s | FileCheck %s --check-prefix=CHECKB
41dd2d15bSBen Shi
51dd2d15bSBen Shi%struct.s10 = type { i16, i16, i16, i16, i16 }
61dd2d15bSBen Shi%struct.s06 = type { i16, i16, i16 }
71dd2d15bSBen Shi%struct.s04 = type { i16, i16 }
81dd2d15bSBen Shi
9*7bdc80f3SNikita Popovdefine void @foo10(ptr sret(%struct.s10) %0, i16 %1, i16 %2, i16 %3) addrspace(1) {
101dd2d15bSBen Shi; CHECKA-LABEL: foo10:
111dd2d15bSBen Shi; CHECKA:       ; %bb.0:
121dd2d15bSBen Shi; CHECKA-NEXT:    mov r30, r24
131dd2d15bSBen Shi; CHECKA-NEXT:    mov r31, r25
141dd2d15bSBen Shi; CHECKA-NEXT:    std Z+5, r23
152a528760SBen Shi; CHECKA-NEXT:    std Z+4, r22
161dd2d15bSBen Shi; CHECKA-NEXT:    std Z+3, r21
172a528760SBen Shi; CHECKA-NEXT:    std Z+2, r20
181dd2d15bSBen Shi; CHECKA-NEXT:    std Z+1, r19
192a528760SBen Shi; CHECKA-NEXT:    st Z, r18
201dd2d15bSBen Shi; CHECKA-NEXT:    ret
211dd2d15bSBen Shi;
221dd2d15bSBen Shi; CHECKB-LABEL: foo10:
231dd2d15bSBen Shi; CHECKB:       ; %bb.0:
241dd2d15bSBen Shi; CHECKB-NEXT:    movw r30, r24
251dd2d15bSBen Shi; CHECKB-NEXT:    std Z+5, r23
262a528760SBen Shi; CHECKB-NEXT:    std Z+4, r22
271dd2d15bSBen Shi; CHECKB-NEXT:    std Z+3, r21
282a528760SBen Shi; CHECKB-NEXT:    std Z+2, r20
291dd2d15bSBen Shi; CHECKB-NEXT:    std Z+1, r19
302a528760SBen Shi; CHECKB-NEXT:    st Z, r18
311dd2d15bSBen Shi; CHECKB-NEXT:    ret
32*7bdc80f3SNikita Popov  %5 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 0
33*7bdc80f3SNikita Popov  store i16 %3, ptr %5
34*7bdc80f3SNikita Popov  %6 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 1
35*7bdc80f3SNikita Popov  store i16 %2, ptr %6
36*7bdc80f3SNikita Popov  %7 = getelementptr inbounds %struct.s10, ptr %0, i16 0, i32 2
37*7bdc80f3SNikita Popov  store i16 %1, ptr %7
381dd2d15bSBen Shi  ret void
391dd2d15bSBen Shi}
401dd2d15bSBen Shi
411dd2d15bSBen Shidefine %struct.s06 @foo06(i16 %0, i16 %1, i16 %2) addrspace(1) {
421dd2d15bSBen Shi; CHECKA-LABEL: foo06:
431dd2d15bSBen Shi; CHECKA:       ; %bb.0:
441dd2d15bSBen Shi; CHECKA-NEXT:    mov r30, r20
451dd2d15bSBen Shi; CHECKA-NEXT:    mov r31, r21
461dd2d15bSBen Shi; CHECKA-NEXT:    mov r20, r22
471dd2d15bSBen Shi; CHECKA-NEXT:    mov r21, r23
481dd2d15bSBen Shi; CHECKA-NEXT:    mov r18, r24
491dd2d15bSBen Shi; CHECKA-NEXT:    mov r19, r25
501dd2d15bSBen Shi; CHECKA-NEXT:    mov r22, r30
511dd2d15bSBen Shi; CHECKA-NEXT:    mov r23, r31
521dd2d15bSBen Shi; CHECKA-NEXT:    ret
531dd2d15bSBen Shi;
541dd2d15bSBen Shi; CHECKB-LABEL: foo06:
551dd2d15bSBen Shi; CHECKB:       ; %bb.0:
561dd2d15bSBen Shi; CHECKB-NEXT:    movw r30, r20
571dd2d15bSBen Shi; CHECKB-NEXT:    movw r20, r22
581dd2d15bSBen Shi; CHECKB-NEXT:    movw r18, r24
591dd2d15bSBen Shi; CHECKB-NEXT:    movw r22, r30
601dd2d15bSBen Shi; CHECKB-NEXT:    ret
611dd2d15bSBen Shi  %4 = insertvalue %struct.s06 undef, i16 %0, 0
621dd2d15bSBen Shi  %5 = insertvalue %struct.s06 %4, i16 %1, 1
631dd2d15bSBen Shi  %6 = insertvalue %struct.s06 %5, i16 %2, 2
641dd2d15bSBen Shi  ret %struct.s06 %6
651dd2d15bSBen Shi}
661dd2d15bSBen Shi
671dd2d15bSBen Shidefine %struct.s04 @foo04(i16 %0, i16 %1) addrspace(1) {
681dd2d15bSBen Shi; CHECKA-LABEL: foo04:
691dd2d15bSBen Shi; CHECKA:       ; %bb.0:
701dd2d15bSBen Shi; CHECKA-NEXT:    mov r18, r22
711dd2d15bSBen Shi; CHECKA-NEXT:    mov r19, r23
721dd2d15bSBen Shi; CHECKA-NEXT:    mov r22, r24
731dd2d15bSBen Shi; CHECKA-NEXT:    mov r23, r25
741dd2d15bSBen Shi; CHECKA-NEXT:    mov r24, r18
751dd2d15bSBen Shi; CHECKA-NEXT:    mov r25, r19
761dd2d15bSBen Shi; CHECKA-NEXT:    ret
771dd2d15bSBen Shi;
781dd2d15bSBen Shi; CHECKB-LABEL: foo04:
791dd2d15bSBen Shi; CHECKB:       ; %bb.0:
801dd2d15bSBen Shi; CHECKB-NEXT:    movw r18, r22
811dd2d15bSBen Shi; CHECKB-NEXT:    movw r22, r24
821dd2d15bSBen Shi; CHECKB-NEXT:    movw r24, r18
831dd2d15bSBen Shi; CHECKB-NEXT:    ret
841dd2d15bSBen Shi  %3 = insertvalue %struct.s04 undef, i16 %0, 0
851dd2d15bSBen Shi  %4 = insertvalue %struct.s04 %3, i16 %1, 1
861dd2d15bSBen Shi  ret %struct.s04 %4
871dd2d15bSBen Shi}
88