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