1; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s 3 4; Make sure that the subfic is generated iff possible 5 6define i64 @subtract_from_imm1(i64 %v) nounwind readnone { 7entry: 8; CHECK-LABEL: subtract_from_imm1 9; CHECK: subfic 3, 3, 32767 10; CHECK: blr 11 %sub = sub i64 32767, %v 12 ret i64 %sub 13} 14 15define i64 @subtract_from_imm2(i64 %v) nounwind readnone { 16entry: 17; CHECK-LABEL: subtract_from_imm2 18; CHECK-NOT: subfic 19; CHECK: blr 20 %sub = sub i64 32768, %v 21 ret i64 %sub 22} 23 24define i64 @subtract_from_imm3(i64 %v) nounwind readnone { 25entry: 26; CHECK-LABEL: subtract_from_imm3 27; CHECK: subfic 3, 3, -32768 28; CHECK: blr 29 %sub = sub i64 -32768, %v 30 ret i64 %sub 31} 32 33define i64 @subtract_from_imm4(i64 %v) nounwind readnone { 34entry: 35; CHECK-LABEL: subtract_from_imm4 36; CHECK-NOT: subfic 37; CHECK: blr 38 %sub = sub i64 -32769, %v 39 ret i64 %sub 40} 41 42