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