[ORC] Merge ostream operators for SymbolStringPtrs into SymbolStringPool.h. NFC.
[llvm-project.git] / llvm / test / CodeGen / X86 / apx / dec.ll
blob56c45336291869edc54787e517700b51aa3a8493
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 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs | FileCheck --check-prefix=NF %s
5 define i8 @dec8r(i8 noundef %a) {
6 ; CHECK-LABEL: dec8r:
7 ; CHECK:       # %bb.0: # %entry
8 ; CHECK-NEXT:    decb %dil, %al
9 ; CHECK-NEXT:    retq
11 ; NF-LABEL: dec8r:
12 ; NF:       # %bb.0: # %entry
13 ; NF-NEXT:    {nf} decb %dil, %al
14 ; NF-NEXT:    retq
15 entry:
16   %dec = sub i8 %a, 1
17   ret i8 %dec
20 define i16 @dec16r(i16 noundef %a) {
21 ; CHECK-LABEL: dec16r:
22 ; CHECK:       # %bb.0: # %entry
23 ; CHECK-NEXT:    decw %di, %ax
24 ; CHECK-NEXT:    retq
26 ; NF-LABEL: dec16r:
27 ; NF:       # %bb.0: # %entry
28 ; NF-NEXT:    {nf} decw %di, %ax
29 ; NF-NEXT:    retq
30 entry:
31   %dec = sub i16 %a, 1
32   ret i16 %dec
35 define i32 @dec32r(i32 noundef %a) {
36 ; CHECK-LABEL: dec32r:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    decl %edi, %eax
39 ; CHECK-NEXT:    retq
41 ; NF-LABEL: dec32r:
42 ; NF:       # %bb.0: # %entry
43 ; NF-NEXT:    {nf} decl %edi, %eax
44 ; NF-NEXT:    retq
45 entry:
46   %dec = sub i32 %a, 1
47   ret i32 %dec
50 define i64 @dec64r(i64 noundef %a) {
51 ; CHECK-LABEL: dec64r:
52 ; CHECK:       # %bb.0: # %entry
53 ; CHECK-NEXT:    decq %rdi, %rax
54 ; CHECK-NEXT:    retq
56 ; NF-LABEL: dec64r:
57 ; NF:       # %bb.0: # %entry
58 ; NF-NEXT:    {nf} decq %rdi, %rax
59 ; NF-NEXT:    retq
60 entry:
61   %dec = sub i64 %a, 1
62   ret i64 %dec
65 define i8 @dec8m(ptr %ptr) {
66 ; CHECK-LABEL: dec8m:
67 ; CHECK:       # %bb.0: # %entry
68 ; CHECK-NEXT:    decb (%rdi), %al
69 ; CHECK-NEXT:    retq
71 ; NF-LABEL: dec8m:
72 ; NF:       # %bb.0: # %entry
73 ; NF-NEXT:    {nf} decb (%rdi), %al
74 ; NF-NEXT:    retq
75 entry:
76   %a = load i8, ptr %ptr
77   %dec = sub i8 %a, 1
78   ret i8 %dec
81 define i16 @dec16m(ptr %ptr) {
82 ; CHECK-LABEL: dec16m:
83 ; CHECK:       # %bb.0: # %entry
84 ; CHECK-NEXT:    decw (%rdi), %ax
85 ; CHECK-NEXT:    retq
87 ; NF-LABEL: dec16m:
88 ; NF:       # %bb.0: # %entry
89 ; NF-NEXT:    {nf} decw (%rdi), %ax
90 ; NF-NEXT:    retq
91 entry:
92   %a = load i16, ptr %ptr
93   %dec = sub i16 %a, 1
94   ret i16 %dec
97 define i32 @dec32m(ptr %ptr) {
98 ; CHECK-LABEL: dec32m:
99 ; CHECK:       # %bb.0: # %entry
100 ; CHECK-NEXT:    decl (%rdi), %eax
101 ; CHECK-NEXT:    retq
103 ; NF-LABEL: dec32m:
104 ; NF:       # %bb.0: # %entry
105 ; NF-NEXT:    {nf} decl (%rdi), %eax
106 ; NF-NEXT:    retq
107 entry:
108   %a = load i32, ptr %ptr
109   %dec = sub i32 %a, 1
110   ret i32 %dec
113 define i64 @dec64m(ptr %ptr) {
114 ; CHECK-LABEL: dec64m:
115 ; CHECK:       # %bb.0: # %entry
116 ; CHECK-NEXT:    decq (%rdi), %rax
117 ; CHECK-NEXT:    retq
119 ; NF-LABEL: dec64m:
120 ; NF:       # %bb.0: # %entry
121 ; NF-NEXT:    {nf} decq (%rdi), %rax
122 ; NF-NEXT:    retq
123 entry:
124   %a = load i64, ptr %ptr
125   %dec = sub i64 %a, 1
126   ret i64 %dec
129 define void @dec8m_legacy(ptr %ptr) {
130 ; CHECK-LABEL: dec8m_legacy:
131 ; CHECK:       # %bb.0: # %entry
132 ; CHECK-NEXT:    decb (%rdi)
133 ; CHECK-NEXT:    retq
135 ; NF-LABEL: dec8m_legacy:
136 ; NF:       # %bb.0: # %entry
137 ; NF-NEXT:    decb (%rdi)
138 ; NF-NEXT:    retq
139 entry:
140   %a = load i8, ptr %ptr
141   %dec = sub i8 %a, 1
142   store i8 %dec, ptr %ptr
143   ret void
146 define void @dec16m_legacy(ptr %ptr) {
147 ; CHECK-LABEL: dec16m_legacy:
148 ; CHECK:       # %bb.0: # %entry
149 ; CHECK-NEXT:    decw (%rdi)
150 ; CHECK-NEXT:    retq
152 ; NF-LABEL: dec16m_legacy:
153 ; NF:       # %bb.0: # %entry
154 ; NF-NEXT:    decw (%rdi)
155 ; NF-NEXT:    retq
156 entry:
157   %a = load i16, ptr %ptr
158   %dec = sub i16 %a, 1
159   store i16 %dec, ptr %ptr
160   ret void
163 define void @dec32m_legacy(ptr %ptr) {
164 ; CHECK-LABEL: dec32m_legacy:
165 ; CHECK:       # %bb.0: # %entry
166 ; CHECK-NEXT:    decl (%rdi)
167 ; CHECK-NEXT:    retq
169 ; NF-LABEL: dec32m_legacy:
170 ; NF:       # %bb.0: # %entry
171 ; NF-NEXT:    decl (%rdi)
172 ; NF-NEXT:    retq
173 entry:
174   %a = load i32, ptr %ptr
175   %dec = sub i32 %a, 1
176   store i32 %dec, ptr %ptr
177   ret void
180 define void @dec64m_legacy(ptr %ptr) {
181 ; CHECK-LABEL: dec64m_legacy:
182 ; CHECK:       # %bb.0: # %entry
183 ; CHECK-NEXT:    decq (%rdi)
184 ; CHECK-NEXT:    retq
186 ; NF-LABEL: dec64m_legacy:
187 ; NF:       # %bb.0: # %entry
188 ; NF-NEXT:    decq (%rdi)
189 ; NF-NEXT:    retq
190 entry:
191   %a = load i64, ptr %ptr
192   %dec = sub i64 %a, 1
193   store i64 %dec, ptr %ptr
194   ret void