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