1b1eaffd3SShengchen 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 4b1eaffd3SShengchen Kan 5b1eaffd3SShengchen Kandefine i8 @and8rr(i8 noundef %a, i8 noundef %b) { 6b1eaffd3SShengchen Kan; CHECK-LABEL: and8rr: 7b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 8f6617091SXinWang10; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] 9b1eaffd3SShengchen Kan; CHECK-NEXT: # kill: def $al killed $al killed $eax 10f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 11a9e8a3a1SShengchen Kan; 12a9e8a3a1SShengchen Kan; NF-LABEL: and8rr: 13a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 14a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7] 15a9e8a3a1SShengchen Kan; NF-NEXT: # kill: def $al killed $al killed $eax 16a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 17b1eaffd3SShengchen Kanentry: 18b1eaffd3SShengchen Kan %and = and i8 %a, %b 19b1eaffd3SShengchen Kan ret i8 %and 20b1eaffd3SShengchen Kan} 21b1eaffd3SShengchen Kan 22b1eaffd3SShengchen Kandefine i16 @and16rr(i16 noundef %a, i16 noundef %b) { 23b1eaffd3SShengchen Kan; CHECK-LABEL: and16rr: 24b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 25f6617091SXinWang10; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] 26b1eaffd3SShengchen Kan; CHECK-NEXT: # kill: def $ax killed $ax killed $eax 27f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 28a9e8a3a1SShengchen Kan; 29a9e8a3a1SShengchen Kan; NF-LABEL: and16rr: 30a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 31a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7] 32a9e8a3a1SShengchen Kan; NF-NEXT: # kill: def $ax killed $ax killed $eax 33a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 34b1eaffd3SShengchen Kanentry: 35b1eaffd3SShengchen Kan %and = and i16 %a, %b 36b1eaffd3SShengchen Kan ret i16 %and 37b1eaffd3SShengchen Kan} 38b1eaffd3SShengchen Kan 39b1eaffd3SShengchen Kandefine i32 @and32rr(i32 noundef %a, i32 noundef %b) { 40b1eaffd3SShengchen Kan; CHECK-LABEL: and32rr: 41b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 42f6617091SXinWang10; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] 43f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 44a9e8a3a1SShengchen Kan; 45a9e8a3a1SShengchen Kan; NF-LABEL: and32rr: 46a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 47a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7] 48a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 49b1eaffd3SShengchen Kanentry: 50b1eaffd3SShengchen Kan %and = and i32 %a, %b 51b1eaffd3SShengchen Kan ret i32 %and 52b1eaffd3SShengchen Kan} 53b1eaffd3SShengchen Kan 54b1eaffd3SShengchen Kandefine i64 @and64rr(i64 noundef %a, i64 noundef %b) { 55b1eaffd3SShengchen Kan; CHECK-LABEL: and64rr: 56b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 57f6617091SXinWang10; CHECK-NEXT: andq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x21,0xf7] 58f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 59a9e8a3a1SShengchen Kan; 60a9e8a3a1SShengchen Kan; NF-LABEL: and64rr: 61a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 62a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andq %rsi, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x21,0xf7] 63a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 64b1eaffd3SShengchen Kanentry: 65b1eaffd3SShengchen Kan %and = and i64 %a, %b 66b1eaffd3SShengchen Kan ret i64 %and 67b1eaffd3SShengchen Kan} 68b1eaffd3SShengchen Kan 69b1eaffd3SShengchen Kandefine i8 @and8rm(i8 noundef %a, ptr %b) { 70b1eaffd3SShengchen Kan; CHECK-LABEL: and8rm: 71b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 72f6617091SXinWang10; CHECK-NEXT: andb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x22,0x3e] 73f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 74a9e8a3a1SShengchen Kan; 75a9e8a3a1SShengchen Kan; NF-LABEL: and8rm: 76a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 77a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andb (%rsi), %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x22,0x3e] 78a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 79b1eaffd3SShengchen Kanentry: 80b1eaffd3SShengchen Kan %t = load i8, ptr %b 81b1eaffd3SShengchen Kan %and = and i8 %a, %t 82b1eaffd3SShengchen Kan ret i8 %and 83b1eaffd3SShengchen Kan} 84b1eaffd3SShengchen Kan 85b1eaffd3SShengchen Kandefine i16 @and16rm(i16 noundef %a, ptr %b) { 86b1eaffd3SShengchen Kan; CHECK-LABEL: and16rm: 87b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 88f6617091SXinWang10; CHECK-NEXT: andw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x23,0x3e] 89f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 90a9e8a3a1SShengchen Kan; 91a9e8a3a1SShengchen Kan; NF-LABEL: and16rm: 92a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 93a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andw (%rsi), %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x23,0x3e] 94a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 95b1eaffd3SShengchen Kanentry: 96b1eaffd3SShengchen Kan %t = load i16, ptr %b 97b1eaffd3SShengchen Kan %and = and i16 %a, %t 98b1eaffd3SShengchen Kan ret i16 %and 99b1eaffd3SShengchen Kan} 100b1eaffd3SShengchen Kan 101b1eaffd3SShengchen Kandefine i32 @and32rm(i32 noundef %a, ptr %b) { 102b1eaffd3SShengchen Kan; CHECK-LABEL: and32rm: 103b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 104f6617091SXinWang10; CHECK-NEXT: andl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x23,0x3e] 105f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 106a9e8a3a1SShengchen Kan; 107a9e8a3a1SShengchen Kan; NF-LABEL: and32rm: 108a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 109a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl (%rsi), %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x23,0x3e] 110a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 111b1eaffd3SShengchen Kanentry: 112b1eaffd3SShengchen Kan %t = load i32, ptr %b 113b1eaffd3SShengchen Kan %and = and i32 %a, %t 114b1eaffd3SShengchen Kan ret i32 %and 115b1eaffd3SShengchen Kan} 116b1eaffd3SShengchen Kan 117b1eaffd3SShengchen Kandefine i64 @and64rm(i64 noundef %a, ptr %b) { 118b1eaffd3SShengchen Kan; CHECK-LABEL: and64rm: 119b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 120f6617091SXinWang10; CHECK-NEXT: andq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x23,0x3e] 121f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 122a9e8a3a1SShengchen Kan; 123a9e8a3a1SShengchen Kan; NF-LABEL: and64rm: 124a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 125a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andq (%rsi), %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x23,0x3e] 126a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 127b1eaffd3SShengchen Kanentry: 128b1eaffd3SShengchen Kan %t = load i64, ptr %b 129b1eaffd3SShengchen Kan %and = and i64 %a, %t 130b1eaffd3SShengchen Kan ret i64 %and 131b1eaffd3SShengchen Kan} 132b1eaffd3SShengchen Kan 133b1eaffd3SShengchen Kandefine i16 @and16ri8(i16 noundef %a) { 134b1eaffd3SShengchen Kan; CHECK-LABEL: and16ri8: 135b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 13620683de7SShengchen Kan; CHECK-NEXT: andw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xe7,0x7b] 137f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 138a9e8a3a1SShengchen Kan; 139a9e8a3a1SShengchen Kan; NF-LABEL: and16ri8: 140a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 14120683de7SShengchen Kan; NF-NEXT: {nf} andw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xe7,0x7b] 142a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 143b1eaffd3SShengchen Kanentry: 144b1eaffd3SShengchen Kan %and = and i16 %a, 123 145b1eaffd3SShengchen Kan ret i16 %and 146b1eaffd3SShengchen Kan} 147b1eaffd3SShengchen Kan 148b1eaffd3SShengchen Kandefine i32 @and32ri8(i32 noundef %a) { 149b1eaffd3SShengchen Kan; CHECK-LABEL: and32ri8: 150b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 1515910e34aSXinWang10; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xe7,0x7b] 152f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 153a9e8a3a1SShengchen Kan; 154a9e8a3a1SShengchen Kan; NF-LABEL: and32ri8: 155a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 156a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xe7,0x7b] 157a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 158b1eaffd3SShengchen Kanentry: 159b1eaffd3SShengchen Kan %and = and i32 %a, 123 160b1eaffd3SShengchen Kan ret i32 %and 161b1eaffd3SShengchen Kan} 162b1eaffd3SShengchen Kan 163b1eaffd3SShengchen Kandefine i64 @and64ri8(i64 noundef %a) { 164b1eaffd3SShengchen Kan; CHECK-LABEL: and64ri8: 165b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 1665910e34aSXinWang10; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xe7,0x7b] 167f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 168a9e8a3a1SShengchen Kan; 169a9e8a3a1SShengchen Kan; NF-LABEL: and64ri8: 170a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 171a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xe7,0x7b] 172a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 173b1eaffd3SShengchen Kanentry: 174b1eaffd3SShengchen Kan %and = and i64 %a, 123 175b1eaffd3SShengchen Kan ret i64 %and 176b1eaffd3SShengchen Kan} 177b1eaffd3SShengchen Kan 178b1eaffd3SShengchen Kandefine i8 @and8ri(i8 noundef %a) { 179b1eaffd3SShengchen Kan; CHECK-LABEL: and8ri: 180b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 181f6617091SXinWang10; CHECK-NEXT: andb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xe7,0x7b] 182f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 183a9e8a3a1SShengchen Kan; 184a9e8a3a1SShengchen Kan; NF-LABEL: and8ri: 185a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 186a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andb $123, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0xe7,0x7b] 187a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 188b1eaffd3SShengchen Kanentry: 189b1eaffd3SShengchen Kan %and = and i8 %a, 123 190b1eaffd3SShengchen Kan ret i8 %and 191b1eaffd3SShengchen Kan} 192b1eaffd3SShengchen Kan 193b1eaffd3SShengchen Kandefine i16 @and16ri(i16 noundef %a) { 194b1eaffd3SShengchen Kan; CHECK-LABEL: and16ri: 195b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 19620683de7SShengchen Kan; CHECK-NEXT: andw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xe7,0xd2,0x04] 197f6617091SXinWang10; CHECK-NEXT: # imm = 0x4D2 198f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 199a9e8a3a1SShengchen Kan; 200a9e8a3a1SShengchen Kan; NF-LABEL: and16ri: 201a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 20220683de7SShengchen Kan; NF-NEXT: {nf} andw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xe7,0xd2,0x04] 203a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x4D2 204a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 205b1eaffd3SShengchen Kanentry: 206b1eaffd3SShengchen Kan %and = and i16 %a, 1234 207b1eaffd3SShengchen Kan ret i16 %and 208b1eaffd3SShengchen Kan} 209b1eaffd3SShengchen Kan 210b1eaffd3SShengchen Kandefine i32 @and32ri(i32 noundef %a) { 211b1eaffd3SShengchen Kan; CHECK-LABEL: and32ri: 212b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 213f6617091SXinWang10; CHECK-NEXT: andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] 214f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 215f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 216a9e8a3a1SShengchen Kan; 217a9e8a3a1SShengchen Kan; NF-LABEL: and32ri: 218a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 219a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xe7,0x40,0xe2,0x01,0x00] 220a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 221a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 222b1eaffd3SShengchen Kanentry: 223b1eaffd3SShengchen Kan %and = and i32 %a, 123456 224b1eaffd3SShengchen Kan ret i32 %and 225b1eaffd3SShengchen Kan} 226b1eaffd3SShengchen Kan 227b1eaffd3SShengchen Kandefine i64 @and64ri(i64 noundef %a) { 228b1eaffd3SShengchen Kan; CHECK-LABEL: and64ri: 229b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 230f6617091SXinWang10; CHECK-NEXT: andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] 231f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 232f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 233a9e8a3a1SShengchen Kan; 234a9e8a3a1SShengchen Kan; NF-LABEL: and64ri: 235a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 236a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xe7,0x40,0xe2,0x01,0x00] 237a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 238a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 239b1eaffd3SShengchen Kanentry: 240b1eaffd3SShengchen Kan %and = and i64 %a, 123456 241b1eaffd3SShengchen Kan ret i64 %and 242b1eaffd3SShengchen Kan} 243b1eaffd3SShengchen Kan 244b1eaffd3SShengchen Kandefine i8 @and8mr(ptr %a, i8 noundef %b) { 245b1eaffd3SShengchen Kan; CHECK-LABEL: and8mr: 246b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 247b6c9dcc9SShengchen Kan; CHECK-NEXT: andb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x22,0x37] 248f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 249a9e8a3a1SShengchen Kan; 250a9e8a3a1SShengchen Kan; NF-LABEL: and8mr: 251a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 252b6c9dcc9SShengchen Kan; NF-NEXT: {nf} andb (%rdi), %sil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x22,0x37] 253a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 254b1eaffd3SShengchen Kanentry: 255b1eaffd3SShengchen Kan %t= load i8, ptr %a 256b1eaffd3SShengchen Kan %and = and i8 %t, %b 257b1eaffd3SShengchen Kan ret i8 %and 258b1eaffd3SShengchen Kan} 259b1eaffd3SShengchen Kan 260b1eaffd3SShengchen Kandefine i16 @and16mr(ptr %a, i16 noundef %b) { 261b1eaffd3SShengchen Kan; CHECK-LABEL: and16mr: 262b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 263b6c9dcc9SShengchen Kan; CHECK-NEXT: andw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x23,0x37] 264f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 265a9e8a3a1SShengchen Kan; 266a9e8a3a1SShengchen Kan; NF-LABEL: and16mr: 267a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 268b6c9dcc9SShengchen Kan; NF-NEXT: {nf} andw (%rdi), %si, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x23,0x37] 269a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 270b1eaffd3SShengchen Kanentry: 271b1eaffd3SShengchen Kan %t= load i16, ptr %a 272b1eaffd3SShengchen Kan %and = and i16 %t, %b 273b1eaffd3SShengchen Kan ret i16 %and 274b1eaffd3SShengchen Kan} 275b1eaffd3SShengchen Kan 276b1eaffd3SShengchen Kandefine i32 @and32mr(ptr %a, i32 noundef %b) { 277b1eaffd3SShengchen Kan; CHECK-LABEL: and32mr: 278b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 279b6c9dcc9SShengchen Kan; CHECK-NEXT: andl (%rdi), %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x23,0x37] 280f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 281a9e8a3a1SShengchen Kan; 282a9e8a3a1SShengchen Kan; NF-LABEL: and32mr: 283a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 284b6c9dcc9SShengchen Kan; NF-NEXT: {nf} andl (%rdi), %esi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x23,0x37] 285a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 286b1eaffd3SShengchen Kanentry: 287b1eaffd3SShengchen Kan %t= load i32, ptr %a 288b1eaffd3SShengchen Kan %and = and i32 %t, %b 289b1eaffd3SShengchen Kan ret i32 %and 290b1eaffd3SShengchen Kan} 291b1eaffd3SShengchen Kan 292b1eaffd3SShengchen Kandefine i64 @and64mr(ptr %a, i64 noundef %b) { 293b1eaffd3SShengchen Kan; CHECK-LABEL: and64mr: 294b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 295b6c9dcc9SShengchen Kan; CHECK-NEXT: andq (%rdi), %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x23,0x37] 296f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 297a9e8a3a1SShengchen Kan; 298a9e8a3a1SShengchen Kan; NF-LABEL: and64mr: 299a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 300b6c9dcc9SShengchen Kan; NF-NEXT: {nf} andq (%rdi), %rsi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x23,0x37] 301a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 302b1eaffd3SShengchen Kanentry: 303b1eaffd3SShengchen Kan %t= load i64, ptr %a 304b1eaffd3SShengchen Kan %and = and i64 %t, %b 305b1eaffd3SShengchen Kan ret i64 %and 306b1eaffd3SShengchen Kan} 307b1eaffd3SShengchen Kan 308b1eaffd3SShengchen Kandefine i16 @and16mi8(ptr %a) { 309b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi8: 310b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 31120683de7SShengchen Kan; CHECK-NEXT: andw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x27,0x7b] 312f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 313a9e8a3a1SShengchen Kan; 314a9e8a3a1SShengchen Kan; NF-LABEL: and16mi8: 315a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 31620683de7SShengchen Kan; NF-NEXT: {nf} andw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x27,0x7b] 317a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 318b1eaffd3SShengchen Kanentry: 319b1eaffd3SShengchen Kan %t= load i16, ptr %a 320b1eaffd3SShengchen Kan %and = and i16 %t, 123 321b1eaffd3SShengchen Kan ret i16 %and 322b1eaffd3SShengchen Kan} 323b1eaffd3SShengchen Kan 324b1eaffd3SShengchen Kandefine i32 @and32mi8(ptr %a) { 325b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi8: 326b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 3275910e34aSXinWang10; CHECK-NEXT: andl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0x27,0x7b] 328f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 329a9e8a3a1SShengchen Kan; 330a9e8a3a1SShengchen Kan; NF-LABEL: and32mi8: 331a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 332a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0x27,0x7b] 333a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 334b1eaffd3SShengchen Kanentry: 335b1eaffd3SShengchen Kan %t= load i32, ptr %a 336b1eaffd3SShengchen Kan %and = and i32 %t, 123 337b1eaffd3SShengchen Kan ret i32 %and 338b1eaffd3SShengchen Kan} 339b1eaffd3SShengchen Kan 340b1eaffd3SShengchen Kandefine i64 @and64mi8(ptr %a) { 341b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi8: 342b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 343f6617091SXinWang10; CHECK-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] 344f6617091SXinWang10; CHECK-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b] 345f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 346a9e8a3a1SShengchen Kan; 347a9e8a3a1SShengchen Kan; NF-LABEL: and64mi8: 348a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 349a9e8a3a1SShengchen Kan; NF-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] 350a9e8a3a1SShengchen Kan; NF-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b] 351a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 352b1eaffd3SShengchen Kanentry: 353b1eaffd3SShengchen Kan %t= load i64, ptr %a 354b1eaffd3SShengchen Kan %and = and i64 %t, 123 355b1eaffd3SShengchen Kan ret i64 %and 356b1eaffd3SShengchen Kan} 357b1eaffd3SShengchen Kan 358b1eaffd3SShengchen Kandefine i8 @and8mi(ptr %a) { 359b1eaffd3SShengchen Kan; CHECK-LABEL: and8mi: 360b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 361f6617091SXinWang10; CHECK-NEXT: andb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x27,0x7b] 362f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 363a9e8a3a1SShengchen Kan; 364a9e8a3a1SShengchen Kan; NF-LABEL: and8mi: 365a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 366a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andb $123, (%rdi), %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0x27,0x7b] 367a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 368b1eaffd3SShengchen Kanentry: 369b1eaffd3SShengchen Kan %t= load i8, ptr %a 370b1eaffd3SShengchen Kan %and = and i8 %t, 123 371b1eaffd3SShengchen Kan ret i8 %and 372b1eaffd3SShengchen Kan} 373b1eaffd3SShengchen Kan 374b1eaffd3SShengchen Kandefine i16 @and16mi(ptr %a) { 375b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi: 376b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 37720683de7SShengchen Kan; CHECK-NEXT: andw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x27,0xd2,0x04] 378f6617091SXinWang10; CHECK-NEXT: # imm = 0x4D2 379f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 380a9e8a3a1SShengchen Kan; 381a9e8a3a1SShengchen Kan; NF-LABEL: and16mi: 382a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 38320683de7SShengchen Kan; NF-NEXT: {nf} andw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x27,0xd2,0x04] 384a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x4D2 385a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 386b1eaffd3SShengchen Kanentry: 387b1eaffd3SShengchen Kan %t= load i16, ptr %a 388b1eaffd3SShengchen Kan %and = and i16 %t, 1234 389b1eaffd3SShengchen Kan ret i16 %and 390b1eaffd3SShengchen Kan} 391b1eaffd3SShengchen Kan 392b1eaffd3SShengchen Kandefine i32 @and32mi(ptr %a) { 393b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi: 394b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 395f6617091SXinWang10; CHECK-NEXT: andl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x27,0x40,0xe2,0x01,0x00] 396f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 397f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 398a9e8a3a1SShengchen Kan; 399a9e8a3a1SShengchen Kan; NF-LABEL: and32mi: 400a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 401a9e8a3a1SShengchen Kan; NF-NEXT: {nf} andl $123456, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0x27,0x40,0xe2,0x01,0x00] 402a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 403a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 404b1eaffd3SShengchen Kanentry: 405b1eaffd3SShengchen Kan %t= load i32, ptr %a 406b1eaffd3SShengchen Kan %and = and i32 %t, 123456 407b1eaffd3SShengchen Kan ret i32 %and 408b1eaffd3SShengchen Kan} 409b1eaffd3SShengchen Kan 410b1eaffd3SShengchen Kandefine i64 @and64mi(ptr %a) { 411b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi: 412b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 413f6617091SXinWang10; CHECK-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] 414f6617091SXinWang10; CHECK-NEXT: andl $123456, %eax # EVEX TO LEGACY Compression encoding: [0x25,0x40,0xe2,0x01,0x00] 415f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 416f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 417a9e8a3a1SShengchen Kan; 418a9e8a3a1SShengchen Kan; NF-LABEL: and64mi: 419a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 420a9e8a3a1SShengchen Kan; NF-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] 421a9e8a3a1SShengchen Kan; NF-NEXT: andl $123456, %eax # EVEX TO LEGACY Compression encoding: [0x25,0x40,0xe2,0x01,0x00] 422a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 423a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 424b1eaffd3SShengchen Kanentry: 425b1eaffd3SShengchen Kan %t= load i64, ptr %a 426b1eaffd3SShengchen Kan %and = and i64 %t, 123456 427b1eaffd3SShengchen Kan ret i64 %and 428b1eaffd3SShengchen Kan} 429b1eaffd3SShengchen Kan 430b1eaffd3SShengchen Kan@d64 = dso_local global i64 0 431b1eaffd3SShengchen Kan 432b1eaffd3SShengchen Kandefine i1 @andflag8rr(i8 %a, i8 %b) { 433b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8rr: 434b1eaffd3SShengchen Kan; CHECK: # %bb.0: 435f6617091SXinWang10; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] 436f6617091SXinWang10; CHECK-NEXT: andb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x20,0xc7] 437f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 438f6617091SXinWang10; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 439f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 440f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 441a9e8a3a1SShengchen Kan; 442a9e8a3a1SShengchen Kan; NF-LABEL: andflag8rr: 443a9e8a3a1SShengchen Kan; NF: # %bb.0: 444a9e8a3a1SShengchen Kan; NF-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] 445a9e8a3a1SShengchen Kan; NF-NEXT: andb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x20,0xc7] 446a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 447a9e8a3a1SShengchen Kan; NF-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 448a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 449a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 450b1eaffd3SShengchen Kan %xor = xor i8 %b, -1 451b1eaffd3SShengchen Kan %v0 = and i8 %a, %xor ; 0xff << 50 452b1eaffd3SShengchen Kan %v1 = icmp eq i8 %v0, 0 453b1eaffd3SShengchen Kan store i8 %v0, ptr @d64 454b1eaffd3SShengchen Kan ret i1 %v1 455b1eaffd3SShengchen Kan} 456b1eaffd3SShengchen Kan 457b1eaffd3SShengchen Kandefine i1 @andflag16rr(i16 %a, i16 %b) { 458b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16rr: 459b1eaffd3SShengchen Kan; CHECK: # %bb.0: 46020683de7SShengchen Kan; CHECK-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6] 461f6617091SXinWang10; CHECK-NEXT: andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7] 462f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 463f6617091SXinWang10; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 464f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 465f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 466a9e8a3a1SShengchen Kan; 467a9e8a3a1SShengchen Kan; NF-LABEL: andflag16rr: 468a9e8a3a1SShengchen Kan; NF: # %bb.0: 46920683de7SShengchen Kan; NF-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6] 470a9e8a3a1SShengchen Kan; NF-NEXT: andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7] 471a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 472a9e8a3a1SShengchen Kan; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 473a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 474a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 475b1eaffd3SShengchen Kan %xor = xor i16 %b, -1 476b1eaffd3SShengchen Kan %v0 = and i16 %a, %xor ; 0xff << 50 477b1eaffd3SShengchen Kan %v1 = icmp eq i16 %v0, 0 478b1eaffd3SShengchen Kan store i16 %v0, ptr @d64 479b1eaffd3SShengchen Kan ret i1 %v1 480b1eaffd3SShengchen Kan} 481b1eaffd3SShengchen Kan 482b1eaffd3SShengchen Kandefine i1 @andflag32rr(i32 %a, i32 %b) { 483b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32rr: 484b1eaffd3SShengchen Kan; CHECK: # %bb.0: 485*f3018879SFreddy Ye; CHECK-NEXT: andl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x21,0xfe] 486f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 487*f3018879SFreddy Ye; CHECK-NEXT: movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A] 488f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 489f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 490a9e8a3a1SShengchen Kan; 491a9e8a3a1SShengchen Kan; NF-LABEL: andflag32rr: 492a9e8a3a1SShengchen Kan; NF: # %bb.0: 493*f3018879SFreddy Ye; NF-NEXT: andl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x21,0xfe] 494a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 495*f3018879SFreddy Ye; NF-NEXT: movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A] 496a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 497a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 498b1eaffd3SShengchen Kan %v0 = and i32 %a, %b ; 0xff << 50 499b1eaffd3SShengchen Kan %v1 = icmp eq i32 %v0, 0 500b1eaffd3SShengchen Kan store i32 %v0, ptr @d64 501b1eaffd3SShengchen Kan ret i1 %v1 502b1eaffd3SShengchen Kan} 503b1eaffd3SShengchen Kan 504b1eaffd3SShengchen Kandefine i1 @andflag64rr(i64 %a, i64 %b) { 505b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64rr: 506b1eaffd3SShengchen Kan; CHECK: # %bb.0: 507*f3018879SFreddy Ye; CHECK-NEXT: andq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x21,0xfe] 508f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 509*f3018879SFreddy Ye; CHECK-NEXT: movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A] 510f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 511f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 512a9e8a3a1SShengchen Kan; 513a9e8a3a1SShengchen Kan; NF-LABEL: andflag64rr: 514a9e8a3a1SShengchen Kan; NF: # %bb.0: 515*f3018879SFreddy Ye; NF-NEXT: andq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x21,0xfe] 516a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 517*f3018879SFreddy Ye; NF-NEXT: movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A] 518a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 519a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 520b1eaffd3SShengchen Kan %v0 = and i64 %a, %b ; 0xff << 50 521b1eaffd3SShengchen Kan %v1 = icmp eq i64 %v0, 0 522b1eaffd3SShengchen Kan store i64 %v0, ptr @d64 523b1eaffd3SShengchen Kan ret i1 %v1 524b1eaffd3SShengchen Kan} 525b1eaffd3SShengchen Kan 526b1eaffd3SShengchen Kandefine i1 @andflag8rm(ptr %ptr, i8 %b) { 527b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8rm: 528b1eaffd3SShengchen Kan; CHECK: # %bb.0: 529f6617091SXinWang10; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] 530f6617091SXinWang10; CHECK-NEXT: andb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x22,0x07] 531f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 532f6617091SXinWang10; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 533f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 534f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 535a9e8a3a1SShengchen Kan; 536a9e8a3a1SShengchen Kan; NF-LABEL: andflag8rm: 537a9e8a3a1SShengchen Kan; NF: # %bb.0: 538a9e8a3a1SShengchen Kan; NF-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] 539a9e8a3a1SShengchen Kan; NF-NEXT: andb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x22,0x07] 540a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 541a9e8a3a1SShengchen Kan; NF-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 542a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 543a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 544b1eaffd3SShengchen Kan %a = load i8, ptr %ptr 545b1eaffd3SShengchen Kan %xor = xor i8 %b, -1 546b1eaffd3SShengchen Kan %v0 = and i8 %a, %xor ; 0xff << 50 547b1eaffd3SShengchen Kan %v1 = icmp eq i8 %v0, 0 548b1eaffd3SShengchen Kan store i8 %v0, ptr @d64 549b1eaffd3SShengchen Kan ret i1 %v1 550b1eaffd3SShengchen Kan} 551b1eaffd3SShengchen Kan 552b1eaffd3SShengchen Kandefine i1 @andflag16rm(ptr %ptr, i16 %b) { 553b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16rm: 554b1eaffd3SShengchen Kan; CHECK: # %bb.0: 55520683de7SShengchen Kan; CHECK-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6] 556f6617091SXinWang10; CHECK-NEXT: andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07] 557f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 558f6617091SXinWang10; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 559f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 560f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 561a9e8a3a1SShengchen Kan; 562a9e8a3a1SShengchen Kan; NF-LABEL: andflag16rm: 563a9e8a3a1SShengchen Kan; NF: # %bb.0: 56420683de7SShengchen Kan; NF-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6] 565a9e8a3a1SShengchen Kan; NF-NEXT: andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07] 566a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 567a9e8a3a1SShengchen Kan; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 568a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 569a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 570b1eaffd3SShengchen Kan %a = load i16, ptr %ptr 571b1eaffd3SShengchen Kan %xor = xor i16 %b, -1 572b1eaffd3SShengchen Kan %v0 = and i16 %a, %xor ; 0xff << 50 573b1eaffd3SShengchen Kan %v1 = icmp eq i16 %v0, 0 574b1eaffd3SShengchen Kan store i16 %v0, ptr @d64 575b1eaffd3SShengchen Kan ret i1 %v1 576b1eaffd3SShengchen Kan} 577b1eaffd3SShengchen Kan 578b1eaffd3SShengchen Kandefine i1 @andflag32rm(ptr %ptr, i32 %b) { 579b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32rm: 580b1eaffd3SShengchen Kan; CHECK: # %bb.0: 581*f3018879SFreddy Ye; CHECK-NEXT: andl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x23,0x37] 582f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 583*f3018879SFreddy Ye; CHECK-NEXT: movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A] 584f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 585f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 586a9e8a3a1SShengchen Kan; 587a9e8a3a1SShengchen Kan; NF-LABEL: andflag32rm: 588a9e8a3a1SShengchen Kan; NF: # %bb.0: 589*f3018879SFreddy Ye; NF-NEXT: andl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x23,0x37] 590a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 591*f3018879SFreddy Ye; NF-NEXT: movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A] 592a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 593a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 594b1eaffd3SShengchen Kan %a = load i32, ptr %ptr 595b1eaffd3SShengchen Kan %v0 = and i32 %a, %b ; 0xff << 50 596b1eaffd3SShengchen Kan %v1 = icmp eq i32 %v0, 0 597b1eaffd3SShengchen Kan store i32 %v0, ptr @d64 598b1eaffd3SShengchen Kan ret i1 %v1 599b1eaffd3SShengchen Kan} 600b1eaffd3SShengchen Kan 601b1eaffd3SShengchen Kandefine i1 @andflag64rm(ptr %ptr, i64 %b) { 602b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64rm: 603b1eaffd3SShengchen Kan; CHECK: # %bb.0: 604*f3018879SFreddy Ye; CHECK-NEXT: andq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x23,0x37] 605f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 606*f3018879SFreddy Ye; CHECK-NEXT: movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A] 607f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 608f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 609a9e8a3a1SShengchen Kan; 610a9e8a3a1SShengchen Kan; NF-LABEL: andflag64rm: 611a9e8a3a1SShengchen Kan; NF: # %bb.0: 612*f3018879SFreddy Ye; NF-NEXT: andq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x23,0x37] 613a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 614*f3018879SFreddy Ye; NF-NEXT: movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A] 615a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 616a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 617b1eaffd3SShengchen Kan %a = load i64, ptr %ptr 618b1eaffd3SShengchen Kan %v0 = and i64 %a, %b ; 0xff << 50 619b1eaffd3SShengchen Kan %v1 = icmp eq i64 %v0, 0 620b1eaffd3SShengchen Kan store i64 %v0, ptr @d64 621b1eaffd3SShengchen Kan ret i1 %v1 622b1eaffd3SShengchen Kan} 623b1eaffd3SShengchen Kan 624b1eaffd3SShengchen Kandefine i1 @andflag8ri(i8 %a) { 625b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8ri: 626b1eaffd3SShengchen Kan; CHECK: # %bb.0: 627f6617091SXinWang10; CHECK-NEXT: andb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xe7,0x84] 628f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 629f6617091SXinWang10; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 630f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 631f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 632a9e8a3a1SShengchen Kan; 633a9e8a3a1SShengchen Kan; NF-LABEL: andflag8ri: 634a9e8a3a1SShengchen Kan; NF: # %bb.0: 635a9e8a3a1SShengchen Kan; NF-NEXT: andb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xe7,0x84] 636a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 637a9e8a3a1SShengchen Kan; NF-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] 638a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 639a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 640b1eaffd3SShengchen Kan %xor = xor i8 123, -1 641b1eaffd3SShengchen Kan %v0 = and i8 %a, %xor ; 0xff << 50 642b1eaffd3SShengchen Kan %v1 = icmp eq i8 %v0, 0 643b1eaffd3SShengchen Kan store i8 %v0, ptr @d64 644b1eaffd3SShengchen Kan ret i1 %v1 645b1eaffd3SShengchen Kan} 646b1eaffd3SShengchen Kan 647b1eaffd3SShengchen Kandefine i1 @andflag16ri(i16 %a) { 648b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16ri: 649b1eaffd3SShengchen Kan; CHECK: # %bb.0: 650f6617091SXinWang10; CHECK-NEXT: andw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x2d,0xfb] 651f6617091SXinWang10; CHECK-NEXT: # imm = 0xFB2D 652f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 653f6617091SXinWang10; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 654f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 655f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 656a9e8a3a1SShengchen Kan; 657a9e8a3a1SShengchen Kan; NF-LABEL: andflag16ri: 658a9e8a3a1SShengchen Kan; NF: # %bb.0: 659a9e8a3a1SShengchen Kan; NF-NEXT: andw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x2d,0xfb] 660a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0xFB2D 661a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 662a9e8a3a1SShengchen Kan; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 663a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 664a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 665b1eaffd3SShengchen Kan %xor = xor i16 1234, -1 666b1eaffd3SShengchen Kan %v0 = and i16 %a, %xor ; 0xff << 50 667b1eaffd3SShengchen Kan %v1 = icmp eq i16 %v0, 0 668b1eaffd3SShengchen Kan store i16 %v0, ptr @d64 669b1eaffd3SShengchen Kan ret i1 %v1 670b1eaffd3SShengchen Kan} 671b1eaffd3SShengchen Kan 672b1eaffd3SShengchen Kandefine i1 @andflag32ri(i32 %a) { 673b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32ri: 674b1eaffd3SShengchen Kan; CHECK: # %bb.0: 675*f3018879SFreddy Ye; CHECK-NEXT: andl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xe7,0x40,0xe2,0x01,0x00] 676f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 677f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 678*f3018879SFreddy Ye; CHECK-NEXT: movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A] 679f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 680f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 681a9e8a3a1SShengchen Kan; 682a9e8a3a1SShengchen Kan; NF-LABEL: andflag32ri: 683a9e8a3a1SShengchen Kan; NF: # %bb.0: 684*f3018879SFreddy Ye; NF-NEXT: andl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xe7,0x40,0xe2,0x01,0x00] 685a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 686a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 687*f3018879SFreddy Ye; NF-NEXT: movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A] 688a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 689a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 690b1eaffd3SShengchen Kan %v0 = and i32 %a, 123456 ; 0xff << 50 691b1eaffd3SShengchen Kan %v1 = icmp eq i32 %v0, 0 692b1eaffd3SShengchen Kan store i32 %v0, ptr @d64 693b1eaffd3SShengchen Kan ret i1 %v1 694b1eaffd3SShengchen Kan} 695b1eaffd3SShengchen Kan 696b1eaffd3SShengchen Kandefine i1 @andflag64ri(i64 %a) { 697b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64ri: 698b1eaffd3SShengchen Kan; CHECK: # %bb.0: 699*f3018879SFreddy Ye; CHECK-NEXT: andq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xe7,0x40,0xe2,0x01,0x00] 700f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 701f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 702*f3018879SFreddy Ye; CHECK-NEXT: movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A] 703f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 704f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 705a9e8a3a1SShengchen Kan; 706a9e8a3a1SShengchen Kan; NF-LABEL: andflag64ri: 707a9e8a3a1SShengchen Kan; NF: # %bb.0: 708*f3018879SFreddy Ye; NF-NEXT: andq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xe7,0x40,0xe2,0x01,0x00] 709a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 710a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 711*f3018879SFreddy Ye; NF-NEXT: movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A] 712a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 713a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 714b1eaffd3SShengchen Kan %v0 = and i64 %a, 123456 ; 0xff << 50 715b1eaffd3SShengchen Kan %v1 = icmp eq i64 %v0, 0 716b1eaffd3SShengchen Kan store i64 %v0, ptr @d64 717b1eaffd3SShengchen Kan ret i1 %v1 718b1eaffd3SShengchen Kan} 719b1eaffd3SShengchen Kan 720b1eaffd3SShengchen Kandefine i1 @andflag16ri8(i16 %a) { 721b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16ri8: 722b1eaffd3SShengchen Kan; CHECK: # %bb.0: 7235910e34aSXinWang10; CHECK-NEXT: andw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xe7,0x84] 724f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 725f6617091SXinWang10; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 726f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 727f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 728a9e8a3a1SShengchen Kan; 729a9e8a3a1SShengchen Kan; NF-LABEL: andflag16ri8: 730a9e8a3a1SShengchen Kan; NF: # %bb.0: 731a9e8a3a1SShengchen Kan; NF-NEXT: andw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xe7,0x84] 732a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 733a9e8a3a1SShengchen Kan; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] 734a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 735a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 736b1eaffd3SShengchen Kan %xor = xor i16 123, -1 737b1eaffd3SShengchen Kan %v0 = and i16 %a, %xor ; 0xff << 50 738b1eaffd3SShengchen Kan %v1 = icmp eq i16 %v0, 0 739b1eaffd3SShengchen Kan store i16 %v0, ptr @d64 740b1eaffd3SShengchen Kan ret i1 %v1 741b1eaffd3SShengchen Kan} 742b1eaffd3SShengchen Kan 743b1eaffd3SShengchen Kandefine i1 @andflag32ri8(i32 %a) { 744b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32ri8: 745b1eaffd3SShengchen Kan; CHECK: # %bb.0: 746*f3018879SFreddy Ye; CHECK-NEXT: andl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xe7,0x7b] 747f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 748*f3018879SFreddy Ye; CHECK-NEXT: movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A] 749f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 750f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 751a9e8a3a1SShengchen Kan; 752a9e8a3a1SShengchen Kan; NF-LABEL: andflag32ri8: 753a9e8a3a1SShengchen Kan; NF: # %bb.0: 754*f3018879SFreddy Ye; NF-NEXT: andl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xe7,0x7b] 755a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 756*f3018879SFreddy Ye; NF-NEXT: movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A] 757a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte 758a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 759b1eaffd3SShengchen Kan %v0 = and i32 %a, 123 ; 0xff << 50 760b1eaffd3SShengchen Kan %v1 = icmp eq i32 %v0, 0 761b1eaffd3SShengchen Kan store i32 %v0, ptr @d64 762b1eaffd3SShengchen Kan ret i1 %v1 763b1eaffd3SShengchen Kan} 764b1eaffd3SShengchen Kan 765b1eaffd3SShengchen Kandefine i1 @andflag64ri8(i64 %a) { 766b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64ri8: 767b1eaffd3SShengchen Kan; CHECK: # %bb.0: 768*f3018879SFreddy Ye; CHECK-NEXT: andq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xe7,0x7b] 769f6617091SXinWang10; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 770*f3018879SFreddy Ye; CHECK-NEXT: movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A] 771f6617091SXinWang10; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 772f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 773a9e8a3a1SShengchen Kan; 774a9e8a3a1SShengchen Kan; NF-LABEL: andflag64ri8: 775a9e8a3a1SShengchen Kan; NF: # %bb.0: 776*f3018879SFreddy Ye; NF-NEXT: andq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xe7,0x7b] 777a9e8a3a1SShengchen Kan; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] 778*f3018879SFreddy Ye; NF-NEXT: movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A] 779a9e8a3a1SShengchen Kan; NF-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte 780a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 781b1eaffd3SShengchen Kan %v0 = and i64 %a, 123 ; 0xff << 50 782b1eaffd3SShengchen Kan %v1 = icmp eq i64 %v0, 0 783b1eaffd3SShengchen Kan store i64 %v0, ptr @d64 784b1eaffd3SShengchen Kan ret i1 %v1 785b1eaffd3SShengchen Kan} 786b1eaffd3SShengchen Kan 787b1eaffd3SShengchen Kandefine void @and8mr_legacy(ptr %a, i8 noundef %b) { 788b1eaffd3SShengchen Kan; CHECK-LABEL: and8mr_legacy: 789b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 790f6617091SXinWang10; CHECK-NEXT: andb %sil, (%rdi) # encoding: [0x40,0x20,0x37] 791f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 792a9e8a3a1SShengchen Kan; 793a9e8a3a1SShengchen Kan; NF-LABEL: and8mr_legacy: 794a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 795a9e8a3a1SShengchen Kan; NF-NEXT: andb %sil, (%rdi) # encoding: [0x40,0x20,0x37] 796a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 797b1eaffd3SShengchen Kanentry: 798b1eaffd3SShengchen Kan %t= load i8, ptr %a 799b1eaffd3SShengchen Kan %and = and i8 %t, %b 800b1eaffd3SShengchen Kan store i8 %and, ptr %a 801b1eaffd3SShengchen Kan ret void 802b1eaffd3SShengchen Kan} 803b1eaffd3SShengchen Kan 804b1eaffd3SShengchen Kandefine void @and16mr_legacy(ptr %a, i16 noundef %b) { 805b1eaffd3SShengchen Kan; CHECK-LABEL: and16mr_legacy: 806b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 807f6617091SXinWang10; CHECK-NEXT: andw %si, (%rdi) # encoding: [0x66,0x21,0x37] 808f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 809a9e8a3a1SShengchen Kan; 810a9e8a3a1SShengchen Kan; NF-LABEL: and16mr_legacy: 811a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 812a9e8a3a1SShengchen Kan; NF-NEXT: andw %si, (%rdi) # encoding: [0x66,0x21,0x37] 813a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 814b1eaffd3SShengchen Kanentry: 815b1eaffd3SShengchen Kan %t= load i16, ptr %a 816b1eaffd3SShengchen Kan %and = and i16 %t, %b 817b1eaffd3SShengchen Kan store i16 %and, ptr %a 818b1eaffd3SShengchen Kan ret void 819b1eaffd3SShengchen Kan} 820b1eaffd3SShengchen Kan 821b1eaffd3SShengchen Kandefine void @and32mr_legacy(ptr %a, i32 noundef %b) { 822b1eaffd3SShengchen Kan; CHECK-LABEL: and32mr_legacy: 823b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 824f6617091SXinWang10; CHECK-NEXT: andl %esi, (%rdi) # encoding: [0x21,0x37] 825f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 826a9e8a3a1SShengchen Kan; 827a9e8a3a1SShengchen Kan; NF-LABEL: and32mr_legacy: 828a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 829a9e8a3a1SShengchen Kan; NF-NEXT: andl %esi, (%rdi) # encoding: [0x21,0x37] 830a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 831b1eaffd3SShengchen Kanentry: 832b1eaffd3SShengchen Kan %t= load i32, ptr %a 833b1eaffd3SShengchen Kan %and = and i32 %t, %b 834b1eaffd3SShengchen Kan store i32 %and, ptr %a 835b1eaffd3SShengchen Kan ret void 836b1eaffd3SShengchen Kan} 837b1eaffd3SShengchen Kan 838b1eaffd3SShengchen Kandefine void @and64mr_legacy(ptr %a, i64 noundef %b) { 839b1eaffd3SShengchen Kan; CHECK-LABEL: and64mr_legacy: 840b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 841f6617091SXinWang10; CHECK-NEXT: andq %rsi, (%rdi) # encoding: [0x48,0x21,0x37] 842f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 843a9e8a3a1SShengchen Kan; 844a9e8a3a1SShengchen Kan; NF-LABEL: and64mr_legacy: 845a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 846a9e8a3a1SShengchen Kan; NF-NEXT: andq %rsi, (%rdi) # encoding: [0x48,0x21,0x37] 847a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 848b1eaffd3SShengchen Kanentry: 849b1eaffd3SShengchen Kan %t= load i64, ptr %a 850b1eaffd3SShengchen Kan %and = and i64 %t, %b 851b1eaffd3SShengchen Kan store i64 %and, ptr %a 852b1eaffd3SShengchen Kan ret void 853b1eaffd3SShengchen Kan} 854b1eaffd3SShengchen Kan 855b1eaffd3SShengchen Kandefine void @and8mi_legacy(ptr %a) { 856b1eaffd3SShengchen Kan; CHECK-LABEL: and8mi_legacy: 857b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 858f6617091SXinWang10; CHECK-NEXT: andb $123, (%rdi) # encoding: [0x80,0x27,0x7b] 859f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 860a9e8a3a1SShengchen Kan; 861a9e8a3a1SShengchen Kan; NF-LABEL: and8mi_legacy: 862a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 863a9e8a3a1SShengchen Kan; NF-NEXT: andb $123, (%rdi) # encoding: [0x80,0x27,0x7b] 864a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 865b1eaffd3SShengchen Kanentry: 866b1eaffd3SShengchen Kan %t= load i8, ptr %a 867b1eaffd3SShengchen Kan %and = and i8 %t, 123 868b1eaffd3SShengchen Kan store i8 %and, ptr %a 869b1eaffd3SShengchen Kan ret void 870b1eaffd3SShengchen Kan} 871b1eaffd3SShengchen Kan 872b1eaffd3SShengchen Kandefine void @and16mi_legacy(ptr %a) { 873b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi_legacy: 874b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 875f6617091SXinWang10; CHECK-NEXT: andw $1234, (%rdi) # encoding: [0x66,0x81,0x27,0xd2,0x04] 876f6617091SXinWang10; CHECK-NEXT: # imm = 0x4D2 877f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 878a9e8a3a1SShengchen Kan; 879a9e8a3a1SShengchen Kan; NF-LABEL: and16mi_legacy: 880a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 881a9e8a3a1SShengchen Kan; NF-NEXT: andw $1234, (%rdi) # encoding: [0x66,0x81,0x27,0xd2,0x04] 882a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x4D2 883a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 884b1eaffd3SShengchen Kanentry: 885b1eaffd3SShengchen Kan %t= load i16, ptr %a 886b1eaffd3SShengchen Kan %and = and i16 %t, 1234 887b1eaffd3SShengchen Kan store i16 %and, ptr %a 888b1eaffd3SShengchen Kan ret void 889b1eaffd3SShengchen Kan} 890b1eaffd3SShengchen Kan 891b1eaffd3SShengchen Kandefine void @and32mi_legacy(ptr %a) { 892b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi_legacy: 893b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 894f6617091SXinWang10; CHECK-NEXT: andl $123456, (%rdi) # encoding: [0x81,0x27,0x40,0xe2,0x01,0x00] 895f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 896f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 897a9e8a3a1SShengchen Kan; 898a9e8a3a1SShengchen Kan; NF-LABEL: and32mi_legacy: 899a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 900a9e8a3a1SShengchen Kan; NF-NEXT: andl $123456, (%rdi) # encoding: [0x81,0x27,0x40,0xe2,0x01,0x00] 901a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 902a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 903b1eaffd3SShengchen Kanentry: 904b1eaffd3SShengchen Kan %t= load i32, ptr %a 905b1eaffd3SShengchen Kan %and = and i32 %t, 123456 906b1eaffd3SShengchen Kan store i32 %and, ptr %a 907b1eaffd3SShengchen Kan ret void 908b1eaffd3SShengchen Kan} 909b1eaffd3SShengchen Kan 910b1eaffd3SShengchen Kandefine void @and64mi_legacy(ptr %a) { 911b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi_legacy: 912b1eaffd3SShengchen Kan; CHECK: # %bb.0: # %entry 913f6617091SXinWang10; CHECK-NEXT: andq $123456, (%rdi) # encoding: [0x48,0x81,0x27,0x40,0xe2,0x01,0x00] 914f6617091SXinWang10; CHECK-NEXT: # imm = 0x1E240 915f6617091SXinWang10; CHECK-NEXT: retq # encoding: [0xc3] 916a9e8a3a1SShengchen Kan; 917a9e8a3a1SShengchen Kan; NF-LABEL: and64mi_legacy: 918a9e8a3a1SShengchen Kan; NF: # %bb.0: # %entry 919a9e8a3a1SShengchen Kan; NF-NEXT: andq $123456, (%rdi) # encoding: [0x48,0x81,0x27,0x40,0xe2,0x01,0x00] 920a9e8a3a1SShengchen Kan; NF-NEXT: # imm = 0x1E240 921a9e8a3a1SShengchen Kan; NF-NEXT: retq # encoding: [0xc3] 922b1eaffd3SShengchen Kanentry: 923b1eaffd3SShengchen Kan %t= load i64, ptr %a 924b1eaffd3SShengchen Kan %and = and i64 %t, 123456 925b1eaffd3SShengchen Kan store i64 %and, ptr %a 926b1eaffd3SShengchen Kan ret void 927b1eaffd3SShengchen Kan} 928