From: Chris Lattner Date: Sat, 17 Dec 2005 23:14:30 +0000 (+0000) Subject: Add patterns for fround/fextend and the funny fsmuld instruction X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=b4d5172af93533e3325b647dd257810b236337aa;p=oota-llvm.git Add patterns for fround/fextend and the funny fsmuld instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24802 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td index 3739b90a53b..cf8d551d740 100644 --- a/lib/Target/Sparc/SparcInstrInfo.td +++ b/lib/Target/Sparc/SparcInstrInfo.td @@ -501,10 +501,12 @@ def FDTOI : F3_3<2, 0b110100, 0b011010010, // Convert between Floating-point Formats Instructions, p. 143 def FSTOD : F3_3<2, 0b110100, 0b011001001, (ops DFPRegs:$dst, FPRegs:$src), - "fstod $src, $dst", []>; + "fstod $src, $dst", + [(set DFPRegs:$dst, (fextend FPRegs:$src))]>; def FDTOS : F3_3<2, 0b110100, 0b011000110, (ops FPRegs:$dst, DFPRegs:$src), - "fdtos $src, $dst", []>; + "fdtos $src, $dst", + [(set FPRegs:$dst, (fround DFPRegs:$src))]>; // Floating-point Move Instructions, p. 144 def FMOVS : F3_3<2, 0b110100, 0b000000001, @@ -546,11 +548,13 @@ def FMULD : F3_3<2, 0b110100, 0b001001010, [(set DFPRegs:$dst, (fmul DFPRegs:$src1, DFPRegs:$src2))]>; def FSMULD : F3_3<2, 0b110100, 0b001101001, (ops DFPRegs:$dst, FPRegs:$src1, FPRegs:$src2), - "fsmuld $src1, $src2, $dst", []>; + "fsmuld $src1, $src2, $dst", + [(set DFPRegs:$dst, (fmul (fextend FPRegs:$src1), + (fextend FPRegs:$src2)))]>; def FDIVS : F3_3<2, 0b110100, 0b001001101, (ops FPRegs:$dst, FPRegs:$src1, FPRegs:$src2), "fdivs $src1, $src2, $dst", - [(set DFPRegs:$dst, (fdiv FPRegs:$src1, FPRegs:$src2))]>; + [(set FPRegs:$dst, (fdiv FPRegs:$src1, FPRegs:$src2))]>; def FDIVD : F3_3<2, 0b110100, 0b001001110, (ops DFPRegs:$dst, DFPRegs:$src1, DFPRegs:$src2), "fdivd $src1, $src2, $dst", diff --git a/lib/Target/SparcV8/SparcV8InstrInfo.td b/lib/Target/SparcV8/SparcV8InstrInfo.td index 3739b90a53b..cf8d551d740 100644 --- a/lib/Target/SparcV8/SparcV8InstrInfo.td +++ b/lib/Target/SparcV8/SparcV8InstrInfo.td @@ -501,10 +501,12 @@ def FDTOI : F3_3<2, 0b110100, 0b011010010, // Convert between Floating-point Formats Instructions, p. 143 def FSTOD : F3_3<2, 0b110100, 0b011001001, (ops DFPRegs:$dst, FPRegs:$src), - "fstod $src, $dst", []>; + "fstod $src, $dst", + [(set DFPRegs:$dst, (fextend FPRegs:$src))]>; def FDTOS : F3_3<2, 0b110100, 0b011000110, (ops FPRegs:$dst, DFPRegs:$src), - "fdtos $src, $dst", []>; + "fdtos $src, $dst", + [(set FPRegs:$dst, (fround DFPRegs:$src))]>; // Floating-point Move Instructions, p. 144 def FMOVS : F3_3<2, 0b110100, 0b000000001, @@ -546,11 +548,13 @@ def FMULD : F3_3<2, 0b110100, 0b001001010, [(set DFPRegs:$dst, (fmul DFPRegs:$src1, DFPRegs:$src2))]>; def FSMULD : F3_3<2, 0b110100, 0b001101001, (ops DFPRegs:$dst, FPRegs:$src1, FPRegs:$src2), - "fsmuld $src1, $src2, $dst", []>; + "fsmuld $src1, $src2, $dst", + [(set DFPRegs:$dst, (fmul (fextend FPRegs:$src1), + (fextend FPRegs:$src2)))]>; def FDIVS : F3_3<2, 0b110100, 0b001001101, (ops FPRegs:$dst, FPRegs:$src1, FPRegs:$src2), "fdivs $src1, $src2, $dst", - [(set DFPRegs:$dst, (fdiv FPRegs:$src1, FPRegs:$src2))]>; + [(set FPRegs:$dst, (fdiv FPRegs:$src1, FPRegs:$src2))]>; def FDIVD : F3_3<2, 0b110100, 0b001001110, (ops DFPRegs:$dst, DFPRegs:$src1, DFPRegs:$src2), "fdivd $src1, $src2, $dst",