xref: /llvm-project/llvm/test/CodeGen/X86/apx/add.ll (revision 20683de70e43fa73536ac1e8ce4082604048d040)
11fe7bdb8SShengchen Kan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2f6617091SXinWang10; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s
3a9e8a3a1SShengchen Kan; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs --show-mc-encoding | FileCheck --check-prefix=NF %s
41fe7bdb8SShengchen Kan
51fe7bdb8SShengchen Kandefine i8 @add8rr(i8 noundef %a, i8 noundef %b) {
61fe7bdb8SShengchen Kan; CHECK-LABEL: add8rr:
71fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
8f6617091SXinWang10; CHECK-NEXT:    addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]
9f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
10a9e8a3a1SShengchen Kan;
11a9e8a3a1SShengchen Kan; NF-LABEL: add8rr:
12a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
13a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addb %sil, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x00,0xf7]
14a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
151fe7bdb8SShengchen Kanentry:
161fe7bdb8SShengchen Kan    %add = add i8 %a, %b
171fe7bdb8SShengchen Kan    ret i8 %add
181fe7bdb8SShengchen Kan}
191fe7bdb8SShengchen Kan
201fe7bdb8SShengchen Kandefine i16 @add16rr(i16 noundef %a, i16 noundef %b) {
211fe7bdb8SShengchen Kan; CHECK-LABEL: add16rr:
221fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
23*20683de7SShengchen Kan; CHECK-NEXT:    addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]
24f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
25a9e8a3a1SShengchen Kan;
26a9e8a3a1SShengchen Kan; NF-LABEL: add16rr:
27a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
28*20683de7SShengchen Kan; NF-NEXT:    {nf} addw %si, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x01,0xf7]
29a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
301fe7bdb8SShengchen Kanentry:
311fe7bdb8SShengchen Kan    %add = add i16 %a, %b
321fe7bdb8SShengchen Kan    ret i16 %add
331fe7bdb8SShengchen Kan}
341fe7bdb8SShengchen Kan
351fe7bdb8SShengchen Kandefine i32 @add32rr(i32 noundef %a, i32 noundef %b) {
361fe7bdb8SShengchen Kan; CHECK-LABEL: add32rr:
371fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
38f6617091SXinWang10; CHECK-NEXT:    addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]
39f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
40a9e8a3a1SShengchen Kan;
41a9e8a3a1SShengchen Kan; NF-LABEL: add32rr:
42a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
43a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x01,0xf7]
44a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
451fe7bdb8SShengchen Kanentry:
461fe7bdb8SShengchen Kan    %add = add i32 %a, %b
471fe7bdb8SShengchen Kan    ret i32 %add
481fe7bdb8SShengchen Kan}
491fe7bdb8SShengchen Kan
501fe7bdb8SShengchen Kandefine i64 @add64rr(i64 noundef %a, i64 noundef %b) {
511fe7bdb8SShengchen Kan; CHECK-LABEL: add64rr:
521fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
53f6617091SXinWang10; CHECK-NEXT:    addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7]
54f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
55a9e8a3a1SShengchen Kan;
56a9e8a3a1SShengchen Kan; NF-LABEL: add64rr:
57a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
58a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq %rsi, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x01,0xf7]
59a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
601fe7bdb8SShengchen Kanentry:
611fe7bdb8SShengchen Kan    %add = add i64 %a, %b
621fe7bdb8SShengchen Kan    ret i64 %add
631fe7bdb8SShengchen Kan}
641fe7bdb8SShengchen Kan
651fe7bdb8SShengchen Kandefine i8 @add8rm(i8 noundef %a, ptr %ptr) {
661fe7bdb8SShengchen Kan; CHECK-LABEL: add8rm:
671fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
68f6617091SXinWang10; CHECK-NEXT:    addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]
69f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
70a9e8a3a1SShengchen Kan;
71a9e8a3a1SShengchen Kan; NF-LABEL: add8rm:
72a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
73a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addb (%rsi), %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x02,0x3e]
74a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
751fe7bdb8SShengchen Kanentry:
761fe7bdb8SShengchen Kan    %b = load i8, ptr %ptr
771fe7bdb8SShengchen Kan    %add = add i8 %a, %b
781fe7bdb8SShengchen Kan    ret i8 %add
791fe7bdb8SShengchen Kan}
801fe7bdb8SShengchen Kan
811fe7bdb8SShengchen Kandefine i16 @add16rm(i16 noundef %a, ptr %ptr) {
821fe7bdb8SShengchen Kan; CHECK-LABEL: add16rm:
831fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
84f6617091SXinWang10; CHECK-NEXT:    addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]
85f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
86a9e8a3a1SShengchen Kan;
87a9e8a3a1SShengchen Kan; NF-LABEL: add16rm:
88a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
89a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addw (%rsi), %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x03,0x3e]
90a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
911fe7bdb8SShengchen Kanentry:
921fe7bdb8SShengchen Kan    %b = load i16, ptr %ptr
931fe7bdb8SShengchen Kan    %add = add i16 %a, %b
941fe7bdb8SShengchen Kan    ret i16 %add
951fe7bdb8SShengchen Kan}
961fe7bdb8SShengchen Kan
971fe7bdb8SShengchen Kandefine i32 @add32rm(i32 noundef %a, ptr %ptr) {
981fe7bdb8SShengchen Kan; CHECK-LABEL: add32rm:
991fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
100f6617091SXinWang10; CHECK-NEXT:    addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]
101f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
102a9e8a3a1SShengchen Kan;
103a9e8a3a1SShengchen Kan; NF-LABEL: add32rm:
104a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
105a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl (%rsi), %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x03,0x3e]
106a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1071fe7bdb8SShengchen Kanentry:
1081fe7bdb8SShengchen Kan    %b = load i32, ptr %ptr
1091fe7bdb8SShengchen Kan    %add = add i32 %a, %b
1101fe7bdb8SShengchen Kan    ret i32 %add
1111fe7bdb8SShengchen Kan}
1121fe7bdb8SShengchen Kan
1131fe7bdb8SShengchen Kandefine i64 @add64rm(i64 noundef %a, ptr %ptr) {
1141fe7bdb8SShengchen Kan; CHECK-LABEL: add64rm:
1151fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
116f6617091SXinWang10; CHECK-NEXT:    addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]
117f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
118a9e8a3a1SShengchen Kan;
119a9e8a3a1SShengchen Kan; NF-LABEL: add64rm:
120a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
121a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq (%rsi), %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x03,0x3e]
122a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1231fe7bdb8SShengchen Kanentry:
1241fe7bdb8SShengchen Kan    %b = load i64, ptr %ptr
1251fe7bdb8SShengchen Kan    %add = add i64 %a, %b
1261fe7bdb8SShengchen Kan    ret i64 %add
1271fe7bdb8SShengchen Kan}
1281fe7bdb8SShengchen Kan
1291fe7bdb8SShengchen Kandefine i16 @add16ri8(i16 noundef %a) {
1301fe7bdb8SShengchen Kan; CHECK-LABEL: add16ri8:
1311fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
132*20683de7SShengchen Kan; CHECK-NEXT:    addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]
133f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
134a9e8a3a1SShengchen Kan;
135a9e8a3a1SShengchen Kan; NF-LABEL: add16ri8:
136a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
137*20683de7SShengchen Kan; NF-NEXT:    {nf} addw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xc7,0x7b]
138a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1391fe7bdb8SShengchen Kanentry:
1401fe7bdb8SShengchen Kan    %add = add i16 %a, 123
1411fe7bdb8SShengchen Kan    ret i16 %add
1421fe7bdb8SShengchen Kan}
1431fe7bdb8SShengchen Kan
1441fe7bdb8SShengchen Kandefine i32 @add32ri8(i32 noundef %a) {
1451fe7bdb8SShengchen Kan; CHECK-LABEL: add32ri8:
1461fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
1475910e34aSXinWang10; CHECK-NEXT:    addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]
148f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
149a9e8a3a1SShengchen Kan;
150a9e8a3a1SShengchen Kan; NF-LABEL: add32ri8:
151a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
152a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xc7,0x7b]
153a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1541fe7bdb8SShengchen Kanentry:
1551fe7bdb8SShengchen Kan    %add = add i32 %a, 123
1561fe7bdb8SShengchen Kan    ret i32 %add
1571fe7bdb8SShengchen Kan}
1581fe7bdb8SShengchen Kan
1591fe7bdb8SShengchen Kandefine i64 @add64ri8(i64 noundef %a) {
1601fe7bdb8SShengchen Kan; CHECK-LABEL: add64ri8:
1611fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
1625910e34aSXinWang10; CHECK-NEXT:    addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xc7,0x7b]
163f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
164a9e8a3a1SShengchen Kan;
165a9e8a3a1SShengchen Kan; NF-LABEL: add64ri8:
166a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
167a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq $123, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x83,0xc7,0x7b]
168a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1691fe7bdb8SShengchen Kanentry:
1701fe7bdb8SShengchen Kan    %add = add i64 %a, 123
1711fe7bdb8SShengchen Kan    ret i64 %add
1721fe7bdb8SShengchen Kan}
1731fe7bdb8SShengchen Kan
1741fe7bdb8SShengchen Kandefine i8 @add8ri(i8 noundef %a) {
1751fe7bdb8SShengchen Kan; CHECK-LABEL: add8ri:
1761fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
177f6617091SXinWang10; CHECK-NEXT:    addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]
178f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
179a9e8a3a1SShengchen Kan;
180a9e8a3a1SShengchen Kan; NF-LABEL: add8ri:
181a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
182a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addb $123, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0xc7,0x7b]
183a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
1841fe7bdb8SShengchen Kanentry:
1851fe7bdb8SShengchen Kan    %add = add i8 %a, 123
1861fe7bdb8SShengchen Kan    ret i8 %add
1871fe7bdb8SShengchen Kan}
1881fe7bdb8SShengchen Kan
1891fe7bdb8SShengchen Kandefine i16 @add16ri(i16 noundef %a) {
1901fe7bdb8SShengchen Kan; CHECK-LABEL: add16ri:
1911fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
192*20683de7SShengchen Kan; CHECK-NEXT:    addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]
193f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
194f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
195a9e8a3a1SShengchen Kan;
196a9e8a3a1SShengchen Kan; NF-LABEL: add16ri:
197a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
198*20683de7SShengchen Kan; NF-NEXT:    {nf} addw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xc7,0xd2,0x04]
199a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
200a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2011fe7bdb8SShengchen Kanentry:
2021fe7bdb8SShengchen Kan    %add = add i16 %a, 1234
2031fe7bdb8SShengchen Kan    ret i16 %add
2041fe7bdb8SShengchen Kan}
2051fe7bdb8SShengchen Kan
2061fe7bdb8SShengchen Kandefine i32 @add32ri(i32 noundef %a) {
2071fe7bdb8SShengchen Kan; CHECK-LABEL: add32ri:
2081fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
209f6617091SXinWang10; CHECK-NEXT:    addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
210f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
211f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
212a9e8a3a1SShengchen Kan;
213a9e8a3a1SShengchen Kan; NF-LABEL: add32ri:
214a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
215a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xc7,0x40,0xe2,0x01,0x00]
216a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
217a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2181fe7bdb8SShengchen Kanentry:
2191fe7bdb8SShengchen Kan    %add = add i32 %a, 123456
2201fe7bdb8SShengchen Kan    ret i32 %add
2211fe7bdb8SShengchen Kan}
2221fe7bdb8SShengchen Kan
2231fe7bdb8SShengchen Kandefine i64 @add64ri(i64 noundef %a) {
2241fe7bdb8SShengchen Kan; CHECK-LABEL: add64ri:
2251fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
226f6617091SXinWang10; CHECK-NEXT:    addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
227f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
228f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
229a9e8a3a1SShengchen Kan;
230a9e8a3a1SShengchen Kan; NF-LABEL: add64ri:
231a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
232a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq $123456, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x81,0xc7,0x40,0xe2,0x01,0x00]
233a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
234a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2351fe7bdb8SShengchen Kanentry:
2361fe7bdb8SShengchen Kan    %add = add i64 %a, 123456
2371fe7bdb8SShengchen Kan    ret i64 %add
2381fe7bdb8SShengchen Kan}
2391fe7bdb8SShengchen Kan
2401fe7bdb8SShengchen Kandefine i8 @add8mr(ptr %a, i8 noundef %b) {
2411fe7bdb8SShengchen Kan; CHECK-LABEL: add8mr:
2421fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
243b6c9dcc9SShengchen Kan; CHECK-NEXT:    addb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x37]
244f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
245a9e8a3a1SShengchen Kan;
246a9e8a3a1SShengchen Kan; NF-LABEL: add8mr:
247a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
248b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} addb (%rdi), %sil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x02,0x37]
249a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2501fe7bdb8SShengchen Kanentry:
2511fe7bdb8SShengchen Kan  %t= load i8, ptr %a
2521fe7bdb8SShengchen Kan  %add = add nsw i8 %t, %b
2531fe7bdb8SShengchen Kan  ret i8 %add
2541fe7bdb8SShengchen Kan}
2551fe7bdb8SShengchen Kan
2561fe7bdb8SShengchen Kandefine i16 @add16mr(ptr %a, i16 noundef %b) {
2571fe7bdb8SShengchen Kan; CHECK-LABEL: add16mr:
2581fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
259b6c9dcc9SShengchen Kan; CHECK-NEXT:    addw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x37]
260f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
261a9e8a3a1SShengchen Kan;
262a9e8a3a1SShengchen Kan; NF-LABEL: add16mr:
263a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
264b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} addw (%rdi), %si, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x03,0x37]
265a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2661fe7bdb8SShengchen Kanentry:
2671fe7bdb8SShengchen Kan  %t= load i16, ptr %a
2681fe7bdb8SShengchen Kan  %add = add nsw i16 %t, %b
2691fe7bdb8SShengchen Kan  ret i16 %add
2701fe7bdb8SShengchen Kan}
2711fe7bdb8SShengchen Kan
2721fe7bdb8SShengchen Kandefine i32 @add32mr(ptr %a, i32 noundef %b) {
2731fe7bdb8SShengchen Kan; CHECK-LABEL: add32mr:
2741fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
275b6c9dcc9SShengchen Kan; CHECK-NEXT:    addl (%rdi), %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x37]
276f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
277a9e8a3a1SShengchen Kan;
278a9e8a3a1SShengchen Kan; NF-LABEL: add32mr:
279a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
280b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} addl (%rdi), %esi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x03,0x37]
281a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2821fe7bdb8SShengchen Kanentry:
2831fe7bdb8SShengchen Kan  %t= load i32, ptr %a
2841fe7bdb8SShengchen Kan  %add = add nsw i32 %t, %b
2851fe7bdb8SShengchen Kan  ret i32 %add
2861fe7bdb8SShengchen Kan}
2871fe7bdb8SShengchen Kan
2881fe7bdb8SShengchen Kandefine i64 @add64mr(ptr %a, i64 noundef %b) {
2891fe7bdb8SShengchen Kan; CHECK-LABEL: add64mr:
2901fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
291b6c9dcc9SShengchen Kan; CHECK-NEXT:    addq (%rdi), %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x37]
292f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
293a9e8a3a1SShengchen Kan;
294a9e8a3a1SShengchen Kan; NF-LABEL: add64mr:
295a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
296b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} addq (%rdi), %rsi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x03,0x37]
297a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
2981fe7bdb8SShengchen Kanentry:
2991fe7bdb8SShengchen Kan  %t= load i64, ptr %a
3001fe7bdb8SShengchen Kan  %add = add nsw i64 %t, %b
3011fe7bdb8SShengchen Kan  ret i64 %add
3021fe7bdb8SShengchen Kan}
3031fe7bdb8SShengchen Kan
3041fe7bdb8SShengchen Kandefine i16 @add16mi8(ptr %a) {
3051fe7bdb8SShengchen Kan; CHECK-LABEL: add16mi8:
3061fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
307*20683de7SShengchen Kan; CHECK-NEXT:    addw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x07,0x7b]
308f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
309a9e8a3a1SShengchen Kan;
310a9e8a3a1SShengchen Kan; NF-LABEL: add16mi8:
311a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
312*20683de7SShengchen Kan; NF-NEXT:    {nf} addw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x07,0x7b]
313a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3141fe7bdb8SShengchen Kanentry:
3151fe7bdb8SShengchen Kan  %t= load i16, ptr %a
3161fe7bdb8SShengchen Kan  %add = add nsw i16 %t, 123
3171fe7bdb8SShengchen Kan  ret i16 %add
3181fe7bdb8SShengchen Kan}
3191fe7bdb8SShengchen Kan
3201fe7bdb8SShengchen Kandefine i32 @add32mi8(ptr %a) {
3211fe7bdb8SShengchen Kan; CHECK-LABEL: add32mi8:
3221fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
3235910e34aSXinWang10; CHECK-NEXT:    addl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0x07,0x7b]
324f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
325a9e8a3a1SShengchen Kan;
326a9e8a3a1SShengchen Kan; NF-LABEL: add32mi8:
327a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
328a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl $123, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0x07,0x7b]
329a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3301fe7bdb8SShengchen Kanentry:
3311fe7bdb8SShengchen Kan  %t= load i32, ptr %a
3321fe7bdb8SShengchen Kan  %add = add nsw i32 %t, 123
3331fe7bdb8SShengchen Kan  ret i32 %add
3341fe7bdb8SShengchen Kan}
3351fe7bdb8SShengchen Kan
3361fe7bdb8SShengchen Kandefine i64 @add64mi8(ptr %a) {
3371fe7bdb8SShengchen Kan; CHECK-LABEL: add64mi8:
3381fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
3395910e34aSXinWang10; CHECK-NEXT:    addq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0x07,0x7b]
340f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
341a9e8a3a1SShengchen Kan;
342a9e8a3a1SShengchen Kan; NF-LABEL: add64mi8:
343a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
344a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq $123, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x83,0x07,0x7b]
345a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3461fe7bdb8SShengchen Kanentry:
3471fe7bdb8SShengchen Kan  %t= load i64, ptr %a
3481fe7bdb8SShengchen Kan  %add = add nsw i64 %t, 123
3491fe7bdb8SShengchen Kan  ret i64 %add
3501fe7bdb8SShengchen Kan}
3511fe7bdb8SShengchen Kan
3521fe7bdb8SShengchen Kandefine i8 @add8mi(ptr %a) {
3531fe7bdb8SShengchen Kan; CHECK-LABEL: add8mi:
3541fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
355f6617091SXinWang10; CHECK-NEXT:    addb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x07,0x7b]
356f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
357a9e8a3a1SShengchen Kan;
358a9e8a3a1SShengchen Kan; NF-LABEL: add8mi:
359a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
360a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addb $123, (%rdi), %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0x07,0x7b]
361a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3621fe7bdb8SShengchen Kanentry:
3631fe7bdb8SShengchen Kan  %t= load i8, ptr %a
3641fe7bdb8SShengchen Kan  %add = add nsw i8 %t, 123
3651fe7bdb8SShengchen Kan  ret i8 %add
3661fe7bdb8SShengchen Kan}
3671fe7bdb8SShengchen Kan
3681fe7bdb8SShengchen Kandefine i16 @add16mi(ptr %a) {
3691fe7bdb8SShengchen Kan; CHECK-LABEL: add16mi:
3701fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
371*20683de7SShengchen Kan; CHECK-NEXT:    addw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x07,0xd2,0x04]
372f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
373f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
374a9e8a3a1SShengchen Kan;
375a9e8a3a1SShengchen Kan; NF-LABEL: add16mi:
376a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
377*20683de7SShengchen Kan; NF-NEXT:    {nf} addw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x07,0xd2,0x04]
378a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
379a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3801fe7bdb8SShengchen Kanentry:
3811fe7bdb8SShengchen Kan  %t= load i16, ptr %a
3821fe7bdb8SShengchen Kan  %add = add nsw i16 %t, 1234
3831fe7bdb8SShengchen Kan  ret i16 %add
3841fe7bdb8SShengchen Kan}
3851fe7bdb8SShengchen Kan
3861fe7bdb8SShengchen Kandefine i32 @add32mi(ptr %a) {
3871fe7bdb8SShengchen Kan; CHECK-LABEL: add32mi:
3881fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
389f6617091SXinWang10; CHECK-NEXT:    addl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0x40,0xe2,0x01,0x00]
390f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
391f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
392a9e8a3a1SShengchen Kan;
393a9e8a3a1SShengchen Kan; NF-LABEL: add32mi:
394a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
395a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addl $123456, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0x07,0x40,0xe2,0x01,0x00]
396a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
397a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
3981fe7bdb8SShengchen Kanentry:
3991fe7bdb8SShengchen Kan  %t= load i32, ptr %a
4001fe7bdb8SShengchen Kan  %add = add nsw i32 %t, 123456
4011fe7bdb8SShengchen Kan  ret i32 %add
4021fe7bdb8SShengchen Kan}
4031fe7bdb8SShengchen Kan
4041fe7bdb8SShengchen Kandefine i64 @add64mi(ptr %a) {
4051fe7bdb8SShengchen Kan; CHECK-LABEL: add64mi:
4061fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
407f6617091SXinWang10; CHECK-NEXT:    addq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0x40,0xe2,0x01,0x00]
408f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
409f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
410a9e8a3a1SShengchen Kan;
411a9e8a3a1SShengchen Kan; NF-LABEL: add64mi:
412a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
413a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} addq $123456, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x81,0x07,0x40,0xe2,0x01,0x00]
414a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
415a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
4161fe7bdb8SShengchen Kanentry:
4171fe7bdb8SShengchen Kan  %t= load i64, ptr %a
4181fe7bdb8SShengchen Kan  %add = add nsw i64 %t, 123456
4191fe7bdb8SShengchen Kan  ret i64 %add
4201fe7bdb8SShengchen Kan}
4211fe7bdb8SShengchen Kan
4221fe7bdb8SShengchen Kandeclare i8 @llvm.uadd.sat.i8(i8, i8)
4231fe7bdb8SShengchen Kandeclare i16 @llvm.uadd.sat.i16(i16, i16)
4241fe7bdb8SShengchen Kandeclare i32 @llvm.uadd.sat.i32(i32, i32)
4251fe7bdb8SShengchen Kandeclare i64 @llvm.uadd.sat.i64(i64, i64)
4261fe7bdb8SShengchen Kan
4271fe7bdb8SShengchen Kandefine i8 @addflag8rr(i8 noundef %a, i8 noundef %b) {
4281fe7bdb8SShengchen Kan; CHECK-LABEL: addflag8rr:
4291fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
430f6617091SXinWang10; CHECK-NEXT:    addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]
4317b766a6fSXinWang10; CHECK-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
4327b766a6fSXinWang10; CHECK-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
4337b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
4341fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $al killed $al killed $eax
435f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
436a9e8a3a1SShengchen Kan;
437a9e8a3a1SShengchen Kan; NF-LABEL: addflag8rr:
438a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
439a9e8a3a1SShengchen Kan; NF-NEXT:    addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]
440a9e8a3a1SShengchen Kan; NF-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
441a9e8a3a1SShengchen Kan; NF-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
442a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
443a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $al killed $al killed $eax
444a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
4451fe7bdb8SShengchen Kanentry:
4461fe7bdb8SShengchen Kan    %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %b)
4471fe7bdb8SShengchen Kan    ret i8 %add
4481fe7bdb8SShengchen Kan}
4491fe7bdb8SShengchen Kan
4501fe7bdb8SShengchen Kandefine i16 @addflag16rr(i16 noundef %a, i16 noundef %b) {
4511fe7bdb8SShengchen Kan; CHECK-LABEL: addflag16rr:
4521fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
4537b766a6fSXinWang10; CHECK-NEXT:    addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]
4547b766a6fSXinWang10; CHECK-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
455f6617091SXinWang10; CHECK-NEXT:    # imm = 0xFFFF
4567b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
4571fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
458f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
459a9e8a3a1SShengchen Kan;
460a9e8a3a1SShengchen Kan; NF-LABEL: addflag16rr:
461a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
462a9e8a3a1SShengchen Kan; NF-NEXT:    addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]
463a9e8a3a1SShengchen Kan; NF-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
464a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0xFFFF
465a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
466a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $ax killed $ax killed $eax
467a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
4681fe7bdb8SShengchen Kanentry:
4691fe7bdb8SShengchen Kan    %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %b)
4701fe7bdb8SShengchen Kan    ret i16 %add
4711fe7bdb8SShengchen Kan}
4721fe7bdb8SShengchen Kan
4731fe7bdb8SShengchen Kandefine i32 @addflag32rr(i32 noundef %a, i32 noundef %b) {
4741fe7bdb8SShengchen Kan; CHECK-LABEL: addflag32rr:
4751fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
4767b766a6fSXinWang10; CHECK-NEXT:    addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]
4777b766a6fSXinWang10; CHECK-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
4787b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
479f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
480a9e8a3a1SShengchen Kan;
481a9e8a3a1SShengchen Kan; NF-LABEL: addflag32rr:
482a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
483a9e8a3a1SShengchen Kan; NF-NEXT:    addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]
484a9e8a3a1SShengchen Kan; NF-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
485a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
486a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
4871fe7bdb8SShengchen Kanentry:
4881fe7bdb8SShengchen Kan    %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %b)
4891fe7bdb8SShengchen Kan    ret i32 %add
4901fe7bdb8SShengchen Kan}
4911fe7bdb8SShengchen Kan
4921fe7bdb8SShengchen Kandefine i64 @addflag64rr(i64 noundef %a, i64 noundef %b) {
4931fe7bdb8SShengchen Kan; CHECK-LABEL: addflag64rr:
4941fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
4957b766a6fSXinWang10; CHECK-NEXT:    addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7]
4967b766a6fSXinWang10; CHECK-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
4977b766a6fSXinWang10; CHECK-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
498f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
499a9e8a3a1SShengchen Kan;
500a9e8a3a1SShengchen Kan; NF-LABEL: addflag64rr:
501a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
502a9e8a3a1SShengchen Kan; NF-NEXT:    addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7]
503a9e8a3a1SShengchen Kan; NF-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
504a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
505a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
5061fe7bdb8SShengchen Kanentry:
5071fe7bdb8SShengchen Kan    %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %b)
5081fe7bdb8SShengchen Kan    ret i64 %add
5091fe7bdb8SShengchen Kan}
5101fe7bdb8SShengchen Kan
5111fe7bdb8SShengchen Kandefine i8 @addflag8rm(i8 noundef %a, ptr %b) {
5121fe7bdb8SShengchen Kan; CHECK-LABEL: addflag8rm:
5131fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
514f6617091SXinWang10; CHECK-NEXT:    addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]
5157b766a6fSXinWang10; CHECK-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
5167b766a6fSXinWang10; CHECK-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
5177b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
5181fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $al killed $al killed $eax
519f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
520a9e8a3a1SShengchen Kan;
521a9e8a3a1SShengchen Kan; NF-LABEL: addflag8rm:
522a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
523a9e8a3a1SShengchen Kan; NF-NEXT:    addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]
524a9e8a3a1SShengchen Kan; NF-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
525a9e8a3a1SShengchen Kan; NF-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
526a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
527a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $al killed $al killed $eax
528a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
5291fe7bdb8SShengchen Kanentry:
5301fe7bdb8SShengchen Kan    %t = load i8, ptr %b
5311fe7bdb8SShengchen Kan    %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %t)
5321fe7bdb8SShengchen Kan    ret i8 %add
5331fe7bdb8SShengchen Kan}
5341fe7bdb8SShengchen Kan
5351fe7bdb8SShengchen Kandefine i16 @addflag16rm(i16 noundef %a, ptr %b) {
5361fe7bdb8SShengchen Kan; CHECK-LABEL: addflag16rm:
5371fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
5387b766a6fSXinWang10; CHECK-NEXT:    addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]
5397b766a6fSXinWang10; CHECK-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
540f6617091SXinWang10; CHECK-NEXT:    # imm = 0xFFFF
5417b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
5421fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
543f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
544a9e8a3a1SShengchen Kan;
545a9e8a3a1SShengchen Kan; NF-LABEL: addflag16rm:
546a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
547a9e8a3a1SShengchen Kan; NF-NEXT:    addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]
548a9e8a3a1SShengchen Kan; NF-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
549a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0xFFFF
550a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
551a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $ax killed $ax killed $eax
552a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
5531fe7bdb8SShengchen Kanentry:
5541fe7bdb8SShengchen Kan    %t = load i16, ptr %b
5551fe7bdb8SShengchen Kan    %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %t)
5561fe7bdb8SShengchen Kan    ret i16 %add
5571fe7bdb8SShengchen Kan}
5581fe7bdb8SShengchen Kan
5591fe7bdb8SShengchen Kandefine i32 @addflag32rm(i32 noundef %a, ptr %b) {
5601fe7bdb8SShengchen Kan; CHECK-LABEL: addflag32rm:
5611fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
5627b766a6fSXinWang10; CHECK-NEXT:    addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]
5637b766a6fSXinWang10; CHECK-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
5647b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
565f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
566a9e8a3a1SShengchen Kan;
567a9e8a3a1SShengchen Kan; NF-LABEL: addflag32rm:
568a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
569a9e8a3a1SShengchen Kan; NF-NEXT:    addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]
570a9e8a3a1SShengchen Kan; NF-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
571a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
572a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
5731fe7bdb8SShengchen Kanentry:
5741fe7bdb8SShengchen Kan    %t = load i32, ptr %b
5751fe7bdb8SShengchen Kan    %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %t)
5761fe7bdb8SShengchen Kan    ret i32 %add
5771fe7bdb8SShengchen Kan}
5781fe7bdb8SShengchen Kan
5791fe7bdb8SShengchen Kandefine i64 @addflag64rm(i64 noundef %a, ptr %b) {
5801fe7bdb8SShengchen Kan; CHECK-LABEL: addflag64rm:
5811fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
5827b766a6fSXinWang10; CHECK-NEXT:    addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]
5837b766a6fSXinWang10; CHECK-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
5847b766a6fSXinWang10; CHECK-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
585f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
586a9e8a3a1SShengchen Kan;
587a9e8a3a1SShengchen Kan; NF-LABEL: addflag64rm:
588a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
589a9e8a3a1SShengchen Kan; NF-NEXT:    addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]
590a9e8a3a1SShengchen Kan; NF-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
591a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
592a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
5931fe7bdb8SShengchen Kanentry:
5941fe7bdb8SShengchen Kan    %t = load i64, ptr %b
5951fe7bdb8SShengchen Kan    %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %t)
5961fe7bdb8SShengchen Kan    ret i64 %add
5971fe7bdb8SShengchen Kan}
5981fe7bdb8SShengchen Kan
5991fe7bdb8SShengchen Kandefine i16 @addflag16ri8(i16 noundef %a) {
6001fe7bdb8SShengchen Kan; CHECK-LABEL: addflag16ri8:
6011fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
6027b766a6fSXinWang10; CHECK-NEXT:    addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]
6037b766a6fSXinWang10; CHECK-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
604f6617091SXinWang10; CHECK-NEXT:    # imm = 0xFFFF
6057b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
6061fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
607f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
608a9e8a3a1SShengchen Kan;
609a9e8a3a1SShengchen Kan; NF-LABEL: addflag16ri8:
610a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
611a9e8a3a1SShengchen Kan; NF-NEXT:    addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]
612a9e8a3a1SShengchen Kan; NF-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
613a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0xFFFF
614a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
615a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $ax killed $ax killed $eax
616a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
6171fe7bdb8SShengchen Kanentry:
6181fe7bdb8SShengchen Kan    %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 123)
6191fe7bdb8SShengchen Kan    ret i16 %add
6201fe7bdb8SShengchen Kan}
6211fe7bdb8SShengchen Kan
6221fe7bdb8SShengchen Kandefine i32 @addflag32ri8(i32 noundef %a) {
6231fe7bdb8SShengchen Kan; CHECK-LABEL: addflag32ri8:
6241fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
6257b766a6fSXinWang10; CHECK-NEXT:    addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]
6267b766a6fSXinWang10; CHECK-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
6277b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
628f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
629a9e8a3a1SShengchen Kan;
630a9e8a3a1SShengchen Kan; NF-LABEL: addflag32ri8:
631a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
632a9e8a3a1SShengchen Kan; NF-NEXT:    addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]
633a9e8a3a1SShengchen Kan; NF-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
634a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
635a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
6361fe7bdb8SShengchen Kanentry:
6371fe7bdb8SShengchen Kan    %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123)
6381fe7bdb8SShengchen Kan    ret i32 %add
6391fe7bdb8SShengchen Kan}
6401fe7bdb8SShengchen Kan
6411fe7bdb8SShengchen Kandefine i64 @addflag64ri8(i64 noundef %a) {
6421fe7bdb8SShengchen Kan; CHECK-LABEL: addflag64ri8:
6431fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
6447b766a6fSXinWang10; CHECK-NEXT:    addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xc7,0x7b]
6457b766a6fSXinWang10; CHECK-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
6467b766a6fSXinWang10; CHECK-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
647f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
648a9e8a3a1SShengchen Kan;
649a9e8a3a1SShengchen Kan; NF-LABEL: addflag64ri8:
650a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
651a9e8a3a1SShengchen Kan; NF-NEXT:    addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xc7,0x7b]
652a9e8a3a1SShengchen Kan; NF-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
653a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
654a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
6551fe7bdb8SShengchen Kanentry:
6561fe7bdb8SShengchen Kan    %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123)
6571fe7bdb8SShengchen Kan    ret i64 %add
6581fe7bdb8SShengchen Kan}
6591fe7bdb8SShengchen Kan
6601fe7bdb8SShengchen Kandefine i8 @addflag8ri(i8 noundef %a) {
6611fe7bdb8SShengchen Kan; CHECK-LABEL: addflag8ri:
6621fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
663f6617091SXinWang10; CHECK-NEXT:    addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]
6647b766a6fSXinWang10; CHECK-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
6657b766a6fSXinWang10; CHECK-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
6667b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
6671fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $al killed $al killed $eax
668f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
669a9e8a3a1SShengchen Kan;
670a9e8a3a1SShengchen Kan; NF-LABEL: addflag8ri:
671a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
672a9e8a3a1SShengchen Kan; NF-NEXT:    addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]
673a9e8a3a1SShengchen Kan; NF-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]
674a9e8a3a1SShengchen Kan; NF-NEXT:    movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]
675a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
676a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $al killed $al killed $eax
677a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
6781fe7bdb8SShengchen Kanentry:
6791fe7bdb8SShengchen Kan    %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 123)
6801fe7bdb8SShengchen Kan    ret i8 %add
6811fe7bdb8SShengchen Kan}
6821fe7bdb8SShengchen Kan
6831fe7bdb8SShengchen Kandefine i16 @addflag16ri(i16 noundef %a) {
6841fe7bdb8SShengchen Kan; CHECK-LABEL: addflag16ri:
6851fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
6867b766a6fSXinWang10; CHECK-NEXT:    addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]
687f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
6887b766a6fSXinWang10; CHECK-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
689f6617091SXinWang10; CHECK-NEXT:    # imm = 0xFFFF
6907b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
6911fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
692f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
693a9e8a3a1SShengchen Kan;
694a9e8a3a1SShengchen Kan; NF-LABEL: addflag16ri:
695a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
696a9e8a3a1SShengchen Kan; NF-NEXT:    addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]
697a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
698a9e8a3a1SShengchen Kan; NF-NEXT:    movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]
699a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0xFFFF
700a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
701a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $ax killed $ax killed $eax
702a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
7031fe7bdb8SShengchen Kanentry:
7041fe7bdb8SShengchen Kan    %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 1234)
7051fe7bdb8SShengchen Kan    ret i16 %add
7061fe7bdb8SShengchen Kan}
7071fe7bdb8SShengchen Kan
7081fe7bdb8SShengchen Kandefine i32 @addflag32ri(i32 noundef %a) {
7091fe7bdb8SShengchen Kan; CHECK-LABEL: addflag32ri:
7101fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
7117b766a6fSXinWang10; CHECK-NEXT:    addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
712f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
7137b766a6fSXinWang10; CHECK-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
7147b766a6fSXinWang10; CHECK-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
715f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
716a9e8a3a1SShengchen Kan;
717a9e8a3a1SShengchen Kan; NF-LABEL: addflag32ri:
718a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
719a9e8a3a1SShengchen Kan; NF-NEXT:    addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
720a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
721a9e8a3a1SShengchen Kan; NF-NEXT:    movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]
722a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]
723a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
7241fe7bdb8SShengchen Kanentry:
7251fe7bdb8SShengchen Kan    %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123456)
7261fe7bdb8SShengchen Kan    ret i32 %add
7271fe7bdb8SShengchen Kan}
7281fe7bdb8SShengchen Kan
7291fe7bdb8SShengchen Kandefine i64 @addflag64ri(i64 noundef %a) {
7301fe7bdb8SShengchen Kan; CHECK-LABEL: addflag64ri:
7311fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
7327b766a6fSXinWang10; CHECK-NEXT:    addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
733f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
7347b766a6fSXinWang10; CHECK-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
7357b766a6fSXinWang10; CHECK-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
736f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
737a9e8a3a1SShengchen Kan;
738a9e8a3a1SShengchen Kan; NF-LABEL: addflag64ri:
739a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
740a9e8a3a1SShengchen Kan; NF-NEXT:    addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]
741a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
742a9e8a3a1SShengchen Kan; NF-NEXT:    movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]
743a9e8a3a1SShengchen Kan; NF-NEXT:    cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]
744a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
7451fe7bdb8SShengchen Kanentry:
7461fe7bdb8SShengchen Kan    %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123456)
7471fe7bdb8SShengchen Kan    ret i64 %add
7481fe7bdb8SShengchen Kan}
7491fe7bdb8SShengchen Kan
7501fe7bdb8SShengchen Kan@val = external dso_local global i16, align 4
7511fe7bdb8SShengchen Kan
7521fe7bdb8SShengchen Kandefine i1 @add64ri_reloc(i16 %k) {
7531fe7bdb8SShengchen Kan; CHECK-LABEL: add64ri_reloc:
7541fe7bdb8SShengchen Kan; CHECK:       # %bb.0:
7551fe7bdb8SShengchen Kan; CHECK-NEXT:    # kill: def $edi killed $edi def $rdi
756f6617091SXinWang10; CHECK-NEXT:    movswq %di, %rax # encoding: [0x48,0x0f,0xbf,0xc7]
757f6617091SXinWang10; CHECK-NEXT:    addq %rax, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x01,0xc0]
758f6617091SXinWang10; CHECK-NEXT:    addq $val, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,A,A,A,A]
759f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: val, kind: reloc_signed_4byte
760f6617091SXinWang10; CHECK-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
761f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
762a9e8a3a1SShengchen Kan;
763a9e8a3a1SShengchen Kan; NF-LABEL: add64ri_reloc:
764a9e8a3a1SShengchen Kan; NF:       # %bb.0:
765a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $edi killed $edi def $rdi
766a9e8a3a1SShengchen Kan; NF-NEXT:    movswq %di, %rax # encoding: [0x48,0x0f,0xbf,0xc7]
767a9e8a3a1SShengchen Kan; NF-NEXT:    addq %rax, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x01,0xc0]
768a9e8a3a1SShengchen Kan; NF-NEXT:    addq $val, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,A,A,A,A]
769a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: val, kind: reloc_signed_4byte
770a9e8a3a1SShengchen Kan; NF-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
771a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
7721fe7bdb8SShengchen Kan  %g = getelementptr inbounds i16, ptr @val, i16 %k
7731fe7bdb8SShengchen Kan  %cmp = icmp ne ptr %g, null
7741fe7bdb8SShengchen Kan  ret i1 %cmp
7751fe7bdb8SShengchen Kan}
7761fe7bdb8SShengchen Kan
7771fe7bdb8SShengchen Kandefine void @add8mr_legacy(ptr %a, i8 noundef %b) {
7781fe7bdb8SShengchen Kan; CHECK-LABEL: add8mr_legacy:
7791fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
780f6617091SXinWang10; CHECK-NEXT:    addb %sil, (%rdi) # encoding: [0x40,0x00,0x37]
781f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
782a9e8a3a1SShengchen Kan;
783a9e8a3a1SShengchen Kan; NF-LABEL: add8mr_legacy:
784a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
785a9e8a3a1SShengchen Kan; NF-NEXT:    addb %sil, (%rdi) # encoding: [0x40,0x00,0x37]
786a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
7871fe7bdb8SShengchen Kanentry:
7881fe7bdb8SShengchen Kan  %t= load i8, ptr %a
7891fe7bdb8SShengchen Kan  %add = add i8 %t, %b
7901fe7bdb8SShengchen Kan  store i8 %add, ptr %a
7911fe7bdb8SShengchen Kan  ret void
7921fe7bdb8SShengchen Kan}
7931fe7bdb8SShengchen Kan
7941fe7bdb8SShengchen Kandefine void @add16mr_legacy(ptr %a, i16 noundef %b) {
7951fe7bdb8SShengchen Kan; CHECK-LABEL: add16mr_legacy:
7961fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
797f6617091SXinWang10; CHECK-NEXT:    addw %si, (%rdi) # encoding: [0x66,0x01,0x37]
798f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
799a9e8a3a1SShengchen Kan;
800a9e8a3a1SShengchen Kan; NF-LABEL: add16mr_legacy:
801a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
802a9e8a3a1SShengchen Kan; NF-NEXT:    addw %si, (%rdi) # encoding: [0x66,0x01,0x37]
803a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8041fe7bdb8SShengchen Kanentry:
8051fe7bdb8SShengchen Kan  %t= load i16, ptr %a
8061fe7bdb8SShengchen Kan  %add = add i16 %t, %b
8071fe7bdb8SShengchen Kan  store i16 %add, ptr %a
8081fe7bdb8SShengchen Kan  ret void
8091fe7bdb8SShengchen Kan}
8101fe7bdb8SShengchen Kan
8111fe7bdb8SShengchen Kandefine void @add32mr_legacy(ptr %a, i32 noundef %b) {
8121fe7bdb8SShengchen Kan; CHECK-LABEL: add32mr_legacy:
8131fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
814f6617091SXinWang10; CHECK-NEXT:    addl %esi, (%rdi) # encoding: [0x01,0x37]
815f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
816a9e8a3a1SShengchen Kan;
817a9e8a3a1SShengchen Kan; NF-LABEL: add32mr_legacy:
818a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
819a9e8a3a1SShengchen Kan; NF-NEXT:    addl %esi, (%rdi) # encoding: [0x01,0x37]
820a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8211fe7bdb8SShengchen Kanentry:
8221fe7bdb8SShengchen Kan  %t= load i32, ptr %a
8231fe7bdb8SShengchen Kan  %add = add i32 %t, %b
8241fe7bdb8SShengchen Kan  store i32 %add, ptr %a
8251fe7bdb8SShengchen Kan  ret void
8261fe7bdb8SShengchen Kan}
8271fe7bdb8SShengchen Kan
8281fe7bdb8SShengchen Kandefine void @add64mr_legacy(ptr %a, i64 noundef %b) {
8291fe7bdb8SShengchen Kan; CHECK-LABEL: add64mr_legacy:
8301fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
831f6617091SXinWang10; CHECK-NEXT:    addq %rsi, (%rdi) # encoding: [0x48,0x01,0x37]
832f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
833a9e8a3a1SShengchen Kan;
834a9e8a3a1SShengchen Kan; NF-LABEL: add64mr_legacy:
835a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
836a9e8a3a1SShengchen Kan; NF-NEXT:    addq %rsi, (%rdi) # encoding: [0x48,0x01,0x37]
837a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8381fe7bdb8SShengchen Kanentry:
8391fe7bdb8SShengchen Kan  %t= load i64, ptr %a
8401fe7bdb8SShengchen Kan  %add = add i64 %t, %b
8411fe7bdb8SShengchen Kan  store i64 %add, ptr %a
8421fe7bdb8SShengchen Kan  ret void
8431fe7bdb8SShengchen Kan}
8441fe7bdb8SShengchen Kan
8451fe7bdb8SShengchen Kandefine void @add8mi_legacy(ptr %a) {
8461fe7bdb8SShengchen Kan; CHECK-LABEL: add8mi_legacy:
8471fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
848f6617091SXinWang10; CHECK-NEXT:    addb $123, (%rdi) # encoding: [0x80,0x07,0x7b]
849f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
850a9e8a3a1SShengchen Kan;
851a9e8a3a1SShengchen Kan; NF-LABEL: add8mi_legacy:
852a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
853a9e8a3a1SShengchen Kan; NF-NEXT:    addb $123, (%rdi) # encoding: [0x80,0x07,0x7b]
854a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8551fe7bdb8SShengchen Kanentry:
8561fe7bdb8SShengchen Kan  %t= load i8, ptr %a
8571fe7bdb8SShengchen Kan  %add = add nsw i8 %t, 123
8581fe7bdb8SShengchen Kan  store i8 %add, ptr %a
8591fe7bdb8SShengchen Kan  ret void
8601fe7bdb8SShengchen Kan}
8611fe7bdb8SShengchen Kan
8621fe7bdb8SShengchen Kandefine void @add16mi_legacy(ptr %a) {
8631fe7bdb8SShengchen Kan; CHECK-LABEL: add16mi_legacy:
8641fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
865f6617091SXinWang10; CHECK-NEXT:    addw $1234, (%rdi) # encoding: [0x66,0x81,0x07,0xd2,0x04]
866f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
867f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
868a9e8a3a1SShengchen Kan;
869a9e8a3a1SShengchen Kan; NF-LABEL: add16mi_legacy:
870a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
871a9e8a3a1SShengchen Kan; NF-NEXT:    addw $1234, (%rdi) # encoding: [0x66,0x81,0x07,0xd2,0x04]
872a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
873a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8741fe7bdb8SShengchen Kanentry:
8751fe7bdb8SShengchen Kan  %t= load i16, ptr %a
8761fe7bdb8SShengchen Kan  %add = add nsw i16 %t, 1234
8771fe7bdb8SShengchen Kan  store i16 %add, ptr %a
8781fe7bdb8SShengchen Kan  ret void
8791fe7bdb8SShengchen Kan}
8801fe7bdb8SShengchen Kan
8811fe7bdb8SShengchen Kandefine void @add32mi_legacy(ptr %a) {
8821fe7bdb8SShengchen Kan; CHECK-LABEL: add32mi_legacy:
8831fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
884f6617091SXinWang10; CHECK-NEXT:    addl $123456, (%rdi) # encoding: [0x81,0x07,0x40,0xe2,0x01,0x00]
885f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
886f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
887a9e8a3a1SShengchen Kan;
888a9e8a3a1SShengchen Kan; NF-LABEL: add32mi_legacy:
889a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
890a9e8a3a1SShengchen Kan; NF-NEXT:    addl $123456, (%rdi) # encoding: [0x81,0x07,0x40,0xe2,0x01,0x00]
891a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
892a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
8931fe7bdb8SShengchen Kanentry:
8941fe7bdb8SShengchen Kan  %t= load i32, ptr %a
8951fe7bdb8SShengchen Kan  %add = add nsw i32 %t, 123456
8961fe7bdb8SShengchen Kan  store i32 %add, ptr %a
8971fe7bdb8SShengchen Kan  ret void
8981fe7bdb8SShengchen Kan}
8991fe7bdb8SShengchen Kan
9001fe7bdb8SShengchen Kandefine void @add64mi_legacy(ptr %a) {
9011fe7bdb8SShengchen Kan; CHECK-LABEL: add64mi_legacy:
9021fe7bdb8SShengchen Kan; CHECK:       # %bb.0: # %entry
903f6617091SXinWang10; CHECK-NEXT:    addq $123456, (%rdi) # encoding: [0x48,0x81,0x07,0x40,0xe2,0x01,0x00]
904f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
905f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
906a9e8a3a1SShengchen Kan;
907a9e8a3a1SShengchen Kan; NF-LABEL: add64mi_legacy:
908a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
909a9e8a3a1SShengchen Kan; NF-NEXT:    addq $123456, (%rdi) # encoding: [0x48,0x81,0x07,0x40,0xe2,0x01,0x00]
910a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
911a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
9121fe7bdb8SShengchen Kanentry:
9131fe7bdb8SShengchen Kan  %t= load i64, ptr %a
9141fe7bdb8SShengchen Kan  %add = add nsw i64 %t, 123456
9151fe7bdb8SShengchen Kan  store i64 %add, ptr %a
9161fe7bdb8SShengchen Kan  ret void
9171fe7bdb8SShengchen Kan}
918