; RUN: llc < %s -march=avr | FileCheck %s ; CHECK-LABEL: ret_struct_i8_i16_i8 define { i8, i16, i8 } @ret_struct_i8_i16_i8() { start: ; for some reason the i16 is loaded to r24:r25 ; and then moved to r23:r24 ; CHECK: ldi r22, 64 ; CHECK-NEXT: r23, ; CHECK-NEXT: r24, ; CHECK-NEXT: r25, 11 %0 = insertvalue {i8, i16, i8} undef, i8 64, 0 %1 = insertvalue {i8, i16, i8} %0, i16 1024, 1 %2 = insertvalue {i8, i16, i8} %1, i8 11, 2 ret {i8, i16, i8} %2 } ; CHECK-LABEL: ret_struct_i32_i16 define { i32, i16 } @ret_struct_i32_i16() { start: ; CHECK: ldi r18, 4 ; CHECK-NEXT: ldi r19, 3 ; CHECK-NEXT: ldi r20, 2 ; CHECK-NEXT: ldi r21, 1 ; CHECK-NEXT: ldi r22, 0 ; CHECK-NEXT: ldi r23, 8 %0 = insertvalue { i32, i16 } undef, i32 16909060, 0 %1 = insertvalue { i32, i16 } %0, i16 2048, 1 ret { i32, i16} %1 }