197 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s3; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs | FileCheck --check-prefix=NF %s4; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -x86-enable-apx-for-relocation=true -verify-machineinstrs | FileCheck --check-prefix=NF %s5 6define i8 @dec8r(i8 noundef %a) {7; CHECK-LABEL: dec8r:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: decb %dil, %al10; CHECK-NEXT: retq11;12; NF-LABEL: dec8r:13; NF: # %bb.0: # %entry14; NF-NEXT: {nf} decb %dil, %al15; NF-NEXT: retq16entry:17 %dec = sub i8 %a, 118 ret i8 %dec19}20 21define i16 @dec16r(i16 noundef %a) {22; CHECK-LABEL: dec16r:23; CHECK: # %bb.0: # %entry24; CHECK-NEXT: decw %di, %ax25; CHECK-NEXT: retq26;27; NF-LABEL: dec16r:28; NF: # %bb.0: # %entry29; NF-NEXT: {nf} decw %di, %ax30; NF-NEXT: retq31entry:32 %dec = sub i16 %a, 133 ret i16 %dec34}35 36define i32 @dec32r(i32 noundef %a) {37; CHECK-LABEL: dec32r:38; CHECK: # %bb.0: # %entry39; CHECK-NEXT: decl %edi, %eax40; CHECK-NEXT: retq41;42; NF-LABEL: dec32r:43; NF: # %bb.0: # %entry44; NF-NEXT: {nf} decl %edi, %eax45; NF-NEXT: retq46entry:47 %dec = sub i32 %a, 148 ret i32 %dec49}50 51define i64 @dec64r(i64 noundef %a) {52; CHECK-LABEL: dec64r:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: decq %rdi, %rax55; CHECK-NEXT: retq56;57; NF-LABEL: dec64r:58; NF: # %bb.0: # %entry59; NF-NEXT: {nf} decq %rdi, %rax60; NF-NEXT: retq61entry:62 %dec = sub i64 %a, 163 ret i64 %dec64}65 66define i8 @dec8m(ptr %ptr) {67; CHECK-LABEL: dec8m:68; CHECK: # %bb.0: # %entry69; CHECK-NEXT: decb (%rdi), %al70; CHECK-NEXT: retq71;72; NF-LABEL: dec8m:73; NF: # %bb.0: # %entry74; NF-NEXT: {nf} decb (%rdi), %al75; NF-NEXT: retq76entry:77 %a = load i8, ptr %ptr78 %dec = sub i8 %a, 179 ret i8 %dec80}81 82define i16 @dec16m(ptr %ptr) {83; CHECK-LABEL: dec16m:84; CHECK: # %bb.0: # %entry85; CHECK-NEXT: decw (%rdi), %ax86; CHECK-NEXT: retq87;88; NF-LABEL: dec16m:89; NF: # %bb.0: # %entry90; NF-NEXT: {nf} decw (%rdi), %ax91; NF-NEXT: retq92entry:93 %a = load i16, ptr %ptr94 %dec = sub i16 %a, 195 ret i16 %dec96}97 98define i32 @dec32m(ptr %ptr) {99; CHECK-LABEL: dec32m:100; CHECK: # %bb.0: # %entry101; CHECK-NEXT: decl (%rdi), %eax102; CHECK-NEXT: retq103;104; NF-LABEL: dec32m:105; NF: # %bb.0: # %entry106; NF-NEXT: {nf} decl (%rdi), %eax107; NF-NEXT: retq108entry:109 %a = load i32, ptr %ptr110 %dec = sub i32 %a, 1111 ret i32 %dec112}113 114define i64 @dec64m(ptr %ptr) {115; CHECK-LABEL: dec64m:116; CHECK: # %bb.0: # %entry117; CHECK-NEXT: decq (%rdi), %rax118; CHECK-NEXT: retq119;120; NF-LABEL: dec64m:121; NF: # %bb.0: # %entry122; NF-NEXT: {nf} decq (%rdi), %rax123; NF-NEXT: retq124entry:125 %a = load i64, ptr %ptr126 %dec = sub i64 %a, 1127 ret i64 %dec128}129 130define void @dec8m_legacy(ptr %ptr) {131; CHECK-LABEL: dec8m_legacy:132; CHECK: # %bb.0: # %entry133; CHECK-NEXT: decb (%rdi)134; CHECK-NEXT: retq135;136; NF-LABEL: dec8m_legacy:137; NF: # %bb.0: # %entry138; NF-NEXT: decb (%rdi)139; NF-NEXT: retq140entry:141 %a = load i8, ptr %ptr142 %dec = sub i8 %a, 1143 store i8 %dec, ptr %ptr144 ret void145}146 147define void @dec16m_legacy(ptr %ptr) {148; CHECK-LABEL: dec16m_legacy:149; CHECK: # %bb.0: # %entry150; CHECK-NEXT: decw (%rdi)151; CHECK-NEXT: retq152;153; NF-LABEL: dec16m_legacy:154; NF: # %bb.0: # %entry155; NF-NEXT: decw (%rdi)156; NF-NEXT: retq157entry:158 %a = load i16, ptr %ptr159 %dec = sub i16 %a, 1160 store i16 %dec, ptr %ptr161 ret void162}163 164define void @dec32m_legacy(ptr %ptr) {165; CHECK-LABEL: dec32m_legacy:166; CHECK: # %bb.0: # %entry167; CHECK-NEXT: decl (%rdi)168; CHECK-NEXT: retq169;170; NF-LABEL: dec32m_legacy:171; NF: # %bb.0: # %entry172; NF-NEXT: decl (%rdi)173; NF-NEXT: retq174entry:175 %a = load i32, ptr %ptr176 %dec = sub i32 %a, 1177 store i32 %dec, ptr %ptr178 ret void179}180 181define void @dec64m_legacy(ptr %ptr) {182; CHECK-LABEL: dec64m_legacy:183; CHECK: # %bb.0: # %entry184; CHECK-NEXT: decq (%rdi)185; CHECK-NEXT: retq186;187; NF-LABEL: dec64m_legacy:188; NF: # %bb.0: # %entry189; NF-NEXT: decq (%rdi)190; NF-NEXT: retq191entry:192 %a = load i64, ptr %ptr193 %dec = sub i64 %a, 1194 store i64 %dec, ptr %ptr195 ret void196}197