mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 23:48:49 +00:00
ab05c2009d
Provide a 64-bit pattern to use SUBFIC for subtracting from a 16-bit immediate. The corresponding pattern already exists for 32-bit integers. Committing on behalf of Hiroshi Inoue. Differential Revision: https://reviews.llvm.org/D29387 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296144 91177308-0d34-0410-b5e6-96231b3b80d8
42 lines
969 B
LLVM
42 lines
969 B
LLVM
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s
|
|
|
|
; Make sure that the subfic is generated iff possible
|
|
|
|
define i64 @subtract_from_imm1(i64 %v) nounwind readnone {
|
|
entry:
|
|
; CHECK-LABEL: subtract_from_imm1
|
|
; CHECK: subfic 3, 3, 32767
|
|
; CHECK: blr
|
|
%sub = sub i64 32767, %v
|
|
ret i64 %sub
|
|
}
|
|
|
|
define i64 @subtract_from_imm2(i64 %v) nounwind readnone {
|
|
entry:
|
|
; CHECK-LABEL: subtract_from_imm2
|
|
; CHECK-NOT: subfic
|
|
; CHECK: blr
|
|
%sub = sub i64 32768, %v
|
|
ret i64 %sub
|
|
}
|
|
|
|
define i64 @subtract_from_imm3(i64 %v) nounwind readnone {
|
|
entry:
|
|
; CHECK-LABEL: subtract_from_imm3
|
|
; CHECK: subfic 3, 3, -32768
|
|
; CHECK: blr
|
|
%sub = sub i64 -32768, %v
|
|
ret i64 %sub
|
|
}
|
|
|
|
define i64 @subtract_from_imm4(i64 %v) nounwind readnone {
|
|
entry:
|
|
; CHECK-LABEL: subtract_from_imm4
|
|
; CHECK-NOT: subfic
|
|
; CHECK: blr
|
|
%sub = sub i64 -32769, %v
|
|
ret i64 %sub
|
|
}
|
|
|