Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / X86 / apx / dec.ll
blobfcb2cae3b5cad8059d8a3c6cfc958979dbab29e2
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
4 define i8 @dec8r(i8 noundef %a) {
5 ; CHECK-LABEL: dec8r:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    decb %dil, %al
8 ; CHECK-NEXT:    retq
9 entry:
10   %dec = sub i8 %a, 1
11   ret i8 %dec
14 define i16 @dec16r(i16 noundef %a) {
15 ; CHECK-LABEL: dec16r:
16 ; CHECK:       # %bb.0: # %entry
17 ; CHECK-NEXT:    decl %edi, %eax
18 ; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
19 ; CHECK-NEXT:    retq
20 entry:
21   %dec = sub i16 %a, 1
22   ret i16 %dec
25 define i32 @dec32r(i32 noundef %a) {
26 ; CHECK-LABEL: dec32r:
27 ; CHECK:       # %bb.0: # %entry
28 ; CHECK-NEXT:    decl %edi, %eax
29 ; CHECK-NEXT:    retq
30 entry:
31   %dec = sub i32 %a, 1
32   ret i32 %dec
35 define i64 @dec64r(i64 noundef %a) {
36 ; CHECK-LABEL: dec64r:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    decq %rdi, %rax
39 ; CHECK-NEXT:    retq
40 entry:
41   %dec = sub i64 %a, 1
42   ret i64 %dec
45 define i8 @dec8m(ptr %ptr) {
46 ; CHECK-LABEL: dec8m:
47 ; CHECK:       # %bb.0: # %entry
48 ; CHECK-NEXT:    decb (%rdi), %al
49 ; CHECK-NEXT:    retq
50 entry:
51   %a = load i8, ptr %ptr
52   %dec = sub i8 %a, 1
53   ret i8 %dec
56 define i16 @dec16m(ptr %ptr) {
57 ; CHECK-LABEL: dec16m:
58 ; CHECK:       # %bb.0: # %entry
59 ; CHECK-NEXT:    movzwl (%rdi), %eax
60 ; CHECK-NEXT:    decl %eax
61 ; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
62 ; CHECK-NEXT:    retq
63 entry:
64   %a = load i16, ptr %ptr
65   %dec = sub i16 %a, 1
66   ret i16 %dec
69 define i32 @dec32m(ptr %ptr) {
70 ; CHECK-LABEL: dec32m:
71 ; CHECK:       # %bb.0: # %entry
72 ; CHECK-NEXT:    decl (%rdi), %eax
73 ; CHECK-NEXT:    retq
74 entry:
75   %a = load i32, ptr %ptr
76   %dec = sub i32 %a, 1
77   ret i32 %dec
80 define i64 @dec64m(ptr %ptr) {
81 ; CHECK-LABEL: dec64m:
82 ; CHECK:       # %bb.0: # %entry
83 ; CHECK-NEXT:    decq (%rdi), %rax
84 ; CHECK-NEXT:    retq
85 entry:
86   %a = load i64, ptr %ptr
87   %dec = sub i64 %a, 1
88   ret i64 %dec
91 define void @dec8m_legacy(ptr %ptr) {
92 ; CHECK-LABEL: dec8m_legacy:
93 ; CHECK:       # %bb.0: # %entry
94 ; CHECK-NEXT:    decb (%rdi)
95 ; CHECK-NEXT:    retq
96 entry:
97   %a = load i8, ptr %ptr
98   %dec = sub i8 %a, 1
99   store i8 %dec, ptr %ptr
100   ret void
103 define void @dec16m_legacy(ptr %ptr) {
104 ; CHECK-LABEL: dec16m_legacy:
105 ; CHECK:       # %bb.0: # %entry
106 ; CHECK-NEXT:    decw (%rdi)
107 ; CHECK-NEXT:    retq
108 entry:
109   %a = load i16, ptr %ptr
110   %dec = sub i16 %a, 1
111   store i16 %dec, ptr %ptr
112   ret void
115 define void @dec32m_legacy(ptr %ptr) {
116 ; CHECK-LABEL: dec32m_legacy:
117 ; CHECK:       # %bb.0: # %entry
118 ; CHECK-NEXT:    decl (%rdi)
119 ; CHECK-NEXT:    retq
120 entry:
121   %a = load i32, ptr %ptr
122   %dec = sub i32 %a, 1
123   store i32 %dec, ptr %ptr
124   ret void
127 define void @dec64m_legacy(ptr %ptr) {
128 ; CHECK-LABEL: dec64m_legacy:
129 ; CHECK:       # %bb.0: # %entry
130 ; CHECK-NEXT:    decq (%rdi)
131 ; CHECK-NEXT:    retq
132 entry:
133   %a = load i64, ptr %ptr
134   %dec = sub i64 %a, 1
135   store i64 %dec, ptr %ptr
136   ret void