1*9ef1d37fSFangrui Song; RUN: llc -mtriple=avr -filetype=asm -O1 < %s | FileCheck %s 2c7a4efa4SPatryk Wychowaniec 3c7a4efa4SPatryk Wychowaniecdefine void @check60(ptr %1) { 4c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check60: 5c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 6c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 7c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 8c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r24, Z+60 9c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+61 10c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+62 11c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+63 12c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r19 13c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r18 14c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r25 15c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r24 16c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 17c7a4efa4SPatryk Wychowaniec 18c7a4efa4SPatryk Wychowaniecbb0: 19c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 60 20c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 21c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 22c7a4efa4SPatryk Wychowaniec ret void 23c7a4efa4SPatryk Wychowaniec} 24c7a4efa4SPatryk Wychowaniec 25c7a4efa4SPatryk Wychowaniecdefine void @check61(ptr %1) { 26c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check61: 27c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 28c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 29c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 30c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+61 31c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+62 32c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: adiw r24, 63 33c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 34c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 35c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ld r24, Z 36c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+1 37c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r25 38c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r24 39c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r19 40c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r18 41c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 42c7a4efa4SPatryk Wychowaniec 43c7a4efa4SPatryk Wychowaniecbb0: 44c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 61 45c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 46c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 47c7a4efa4SPatryk Wychowaniec ret void 48c7a4efa4SPatryk Wychowaniec} 49c7a4efa4SPatryk Wychowaniec 50c7a4efa4SPatryk Wychowaniecdefine void @check62(ptr %1) { 51c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check62: 52c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 53c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 54c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 55c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+62 56c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+63 57c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: adiw r24, 62 58c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 59c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 60c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r24, Z+2 61c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+3 62c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r25 63c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r24 64c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r19 65c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r18 66c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 67c7a4efa4SPatryk Wychowaniec 68c7a4efa4SPatryk Wychowaniecbb0: 69c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 62 70c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 71c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 72c7a4efa4SPatryk Wychowaniec ret void 73c7a4efa4SPatryk Wychowaniec} 74c7a4efa4SPatryk Wychowaniec 75c7a4efa4SPatryk Wychowaniecdefine void @check63(ptr %1) { 76c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check63: 77c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 78c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: adiw r24, 63 79c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 80c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 81c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ld r24, Z 82c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+1 83c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+2 84c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+3 85c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r19 86c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r18 87c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r25 88c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r24 89c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 90c7a4efa4SPatryk Wychowaniec 91c7a4efa4SPatryk Wychowaniecbb0: 92c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 63 93c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 94c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 95c7a4efa4SPatryk Wychowaniec ret void 96c7a4efa4SPatryk Wychowaniec} 97c7a4efa4SPatryk Wychowaniec 98c7a4efa4SPatryk Wychowaniecdefine void @check64(ptr %1) { 99c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check64: 100c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 101c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: subi r24, 192 102c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sbci r25, 255 103c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 104c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 105c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ld r24, Z 106c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+1 107c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+2 108c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+3 109c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r19 110c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r18 111c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r25 112c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r24 113c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 114c7a4efa4SPatryk Wychowaniec 115c7a4efa4SPatryk Wychowaniecbb0: 116c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 64 117c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 118c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 119c7a4efa4SPatryk Wychowaniec ret void 120c7a4efa4SPatryk Wychowaniec} 121c7a4efa4SPatryk Wychowaniec 122c7a4efa4SPatryk Wychowaniecdefine void @check65(ptr %1) { 123c7a4efa4SPatryk Wychowaniec; CHECK-LABEL: check65: 124c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: %bb.0 125c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: subi r24, 191 126c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sbci r25, 255 127c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r30, r24 128c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: mov r31, r25 129c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ld r24, Z 130c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r25, Z+1 131c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r18, Z+2 132c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ldd r19, Z+3 133c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 3, r19 134c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 2, r18 135c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 1, r25 136c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: sts 0, r24 137c7a4efa4SPatryk Wychowaniec; CHECK-NEXT: ret 138c7a4efa4SPatryk Wychowaniec 139c7a4efa4SPatryk Wychowaniecbb0: 140c7a4efa4SPatryk Wychowaniec %2 = getelementptr i8, ptr %1, i16 65 141c7a4efa4SPatryk Wychowaniec %3 = load i32, ptr %2, align 1 142c7a4efa4SPatryk Wychowaniec store i32 %3, ptr null, align 1 143c7a4efa4SPatryk Wychowaniec ret void 144c7a4efa4SPatryk Wychowaniec} 145