1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s 3 4define i8 @not8r(i8 noundef %a) { 5; CHECK-LABEL: not8r: 6; CHECK: # %bb.0: # %entry 7; CHECK-NEXT: notb %dil, %al 8; CHECK-NEXT: retq 9entry: 10 %not = xor i8 %a, -1 11 ret i8 %not 12} 13 14define i16 @not16r(i16 noundef %a) { 15; CHECK-LABEL: not16r: 16; CHECK: # %bb.0: # %entry 17; CHECK-NEXT: notw %di, %ax 18; CHECK-NEXT: retq 19entry: 20 %not = xor i16 %a, -1 21 ret i16 %not 22} 23 24define i32 @not32r(i32 noundef %a) { 25; CHECK-LABEL: not32r: 26; CHECK: # %bb.0: # %entry 27; CHECK-NEXT: notl %edi, %eax 28; CHECK-NEXT: retq 29entry: 30 %not = xor i32 %a, -1 31 ret i32 %not 32} 33 34define i64 @not64r(i64 noundef %a) { 35; CHECK-LABEL: not64r: 36; CHECK: # %bb.0: # %entry 37; CHECK-NEXT: notq %rdi, %rax 38; CHECK-NEXT: retq 39entry: 40 %not = xor i64 %a, -1 41 ret i64 %not 42} 43 44define i8 @not8m(ptr %ptr) { 45; CHECK-LABEL: not8m: 46; CHECK: # %bb.0: # %entry 47; CHECK-NEXT: notb (%rdi), %al 48; CHECK-NEXT: retq 49entry: 50 %a = load i8, ptr %ptr 51 %not = xor i8 %a, -1 52 ret i8 %not 53} 54 55define i16 @not16m(ptr %ptr) { 56; CHECK-LABEL: not16m: 57; CHECK: # %bb.0: # %entry 58; CHECK-NEXT: notw (%rdi), %ax 59; CHECK-NEXT: retq 60entry: 61 %a = load i16, ptr %ptr 62 %not = xor i16 %a, -1 63 ret i16 %not 64} 65 66define i32 @not32m(ptr %ptr) { 67; CHECK-LABEL: not32m: 68; CHECK: # %bb.0: # %entry 69; CHECK-NEXT: notl (%rdi), %eax 70; CHECK-NEXT: retq 71entry: 72 %a = load i32, ptr %ptr 73 %not = xor i32 %a, -1 74 ret i32 %not 75} 76 77define i64 @not64m(ptr %ptr) { 78; CHECK-LABEL: not64m: 79; CHECK: # %bb.0: # %entry 80; CHECK-NEXT: notq (%rdi), %rax 81; CHECK-NEXT: retq 82entry: 83 %a = load i64, ptr %ptr 84 %not = xor i64 %a, -1 85 ret i64 %not 86} 87 88define void @not8m_legacy(ptr %ptr) { 89; CHECK-LABEL: not8m_legacy: 90; CHECK: # %bb.0: # %entry 91; CHECK-NEXT: notb (%rdi) 92; CHECK-NEXT: retq 93entry: 94 %a = load i8, ptr %ptr 95 %not = xor i8 %a, -1 96 store i8 %not, ptr %ptr 97 ret void 98} 99 100define void @not16m_legacy(ptr %ptr) { 101; CHECK-LABEL: not16m_legacy: 102; CHECK: # %bb.0: # %entry 103; CHECK-NEXT: notw (%rdi) 104; CHECK-NEXT: retq 105entry: 106 %a = load i16, ptr %ptr 107 %not = xor i16 %a, -1 108 store i16 %not, ptr %ptr 109 ret void 110} 111 112define void @not32m_legacy(ptr %ptr) { 113; CHECK-LABEL: not32m_legacy: 114; CHECK: # %bb.0: # %entry 115; CHECK-NEXT: notl (%rdi) 116; CHECK-NEXT: retq 117entry: 118 %a = load i32, ptr %ptr 119 %not = xor i32 %a, -1 120 store i32 %not, ptr %ptr 121 ret void 122} 123 124define void @not64m_legacy(ptr %ptr) { 125; CHECK-LABEL: not64m_legacy: 126; CHECK: # %bb.0: # %entry 127; CHECK-NEXT: notq (%rdi) 128; CHECK-NEXT: retq 129entry: 130 %a = load i64, ptr %ptr 131 %not = xor i64 %a, -1 132 store i64 %not, ptr %ptr 133 ret void 134} 135