xref: /llvm-project/llvm/test/CodeGen/AVR/std-immediate-overflow.ll (revision 9ef1d37ffb5f56a9b949a6307bbb16c2ea0130e3)
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