xref: /llvm-project/llvm/test/CodeGen/X86/apx/not.ll (revision 20683de70e43fa73536ac1e8ce4082604048d040)
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