mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 06:30:39 +00:00
Handle bitconverts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76042 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b6831cb044
commit
05a0b8bc66
@ -129,6 +129,10 @@ SystemZTargetLowering::SystemZTargetLowering(SystemZTargetMachine &tm) :
|
||||
setOperationAction(ISD::FCOS, MVT::f32, Expand);
|
||||
setOperationAction(ISD::FCOS, MVT::f64, Expand);
|
||||
|
||||
// We have only 64-bit bitconverts
|
||||
setOperationAction(ISD::BIT_CONVERT, MVT::f32, Promote);
|
||||
setOperationAction(ISD::BIT_CONVERT, MVT::i32, Promote);
|
||||
|
||||
setOperationAction(ISD::UINT_TO_FP, MVT::i32, Expand);
|
||||
setOperationAction(ISD::UINT_TO_FP, MVT::i64, Expand);
|
||||
setOperationAction(ISD::FP_TO_UINT, MVT::i32, Expand);
|
||||
|
@ -295,6 +295,13 @@ def FCONVGR64 : Pseudo<(outs GR64:$dst), (ins FP64:$src),
|
||||
(implicit PSW)]>;
|
||||
} // Defs = [PSW]
|
||||
|
||||
def FBCONVG64 : Pseudo<(outs GR64:$dst), (ins FP64:$src),
|
||||
"lgdr\t{$dst, $src}",
|
||||
[(set GR64:$dst, (bitconvert FP64:$src))]>;
|
||||
def FBCONVF64 : Pseudo<(outs FP64:$dst), (ins GR64:$src),
|
||||
"ldgr\t{$dst, $src}",
|
||||
[(set FP64:$dst, (bitconvert GR64:$src))]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Test instructions (like AND but do not produce any result)
|
||||
|
||||
|
@ -785,7 +785,11 @@ def : Pat<(SystemZcall (i64 texternalsym:$dst)), (CALLi texternalsym:$dst)>;
|
||||
|
||||
// FIXME: use add/sub tricks with 32678/-32768
|
||||
|
||||
// Arbitrary immediate support. Implement in terms of LLIHF/OILF.
|
||||
// Arbitrary immediate support.
|
||||
def : Pat<(i32 imm:$src),
|
||||
(EXTRACT_SUBREG (MOV64ri32 (i64 imm:$src)), subreg_32bit)>;
|
||||
|
||||
// Implement in terms of LLIHF/OILF.
|
||||
def : Pat<(i64 imm:$imm),
|
||||
(OR64rilo32 (MOV64rihi32 (HI32 imm:$imm)), (LO32 imm:$imm))>;
|
||||
|
||||
@ -821,6 +825,3 @@ def : Pat<(mulhu GR64:$src1, GR64:$src2),
|
||||
GR64:$src1, subreg_odd),
|
||||
GR64:$src2),
|
||||
subreg_even)>;
|
||||
|
||||
def : Pat<(i32 imm:$src),
|
||||
(EXTRACT_SUBREG (MOV64ri32 (i64 imm:$src)), subreg_32bit)>;
|
||||
|
Loading…
Reference in New Issue
Block a user