mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
f87f345963
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 llvm-svn: 296144
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
|
|
}
|
|
|