implement FLDD
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 7 Oct 2006 14:03:39 +0000 (14:03 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 7 Oct 2006 14:03:39 +0000 (14:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30802 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/README.txt
test/CodeGen/ARM/fp.ll

index 3aa4a53534aac1e4a5d8719489927f966e8800cc..5cd892e9b830b7d1ef405e02e42444aba7d8b17f 100644 (file)
@@ -104,10 +104,6 @@ def ldr   : InstARM<(ops IntRegs:$dst, memri:$addr),
                      "ldr $dst, $addr",
                      [(set IntRegs:$dst, (load iaddr:$addr))]>;
 
-def FLDS  : InstARM<(ops FPRegs:$dst, IntRegs:$addr),
-                     "flds $dst, $addr",
-                     [(set FPRegs:$dst, (load IntRegs:$addr))]>;
-
 def str  : InstARM<(ops IntRegs:$src, memri:$addr),
                     "str $src, $addr",
                     [(store IntRegs:$src, iaddr:$addr)]>;
@@ -205,3 +201,13 @@ def FMULS   : InstARM<(ops FPRegs:$dst, FPRegs:$a, FPRegs:$b),
 def FMULD   : InstARM<(ops DFPRegs:$dst, DFPRegs:$a, DFPRegs:$b),
                        "fmuld $dst, $a, $b",
                       [(set DFPRegs:$dst, (fmul DFPRegs:$a, DFPRegs:$b))]>;
+
+
+// Floating Point Load
+def FLDS  : InstARM<(ops FPRegs:$dst, IntRegs:$addr),
+                     "flds $dst, $addr",
+                     [(set FPRegs:$dst, (load IntRegs:$addr))]>;
+
+def FLDD  : InstARM<(ops DFPRegs:$dst, IntRegs:$addr),
+                     "fldd $dst, $addr",
+                     [(set DFPRegs:$dst, (load IntRegs:$addr))]>;
index ae94b8f6bfe16ae221bcb2ef88fce0f5a07016c6..ff2e188c71b172dbd813ef9c9818c14cb4b37b5c 100644 (file)
@@ -29,6 +29,6 @@ add r0, r1, r0
 
 ----------------------------------------------------------
 
-add an offset to FLDS addressing mode
+add an offset to FLDS/FLDD addressing mode
 
 ----------------------------------------------------------
index 50c03956fc91a6af0c2acdfb4be7f72896bb27a2..c40e2fc88608f28d301df5aa45b9e7a7bc3b14a0 100644 (file)
@@ -3,8 +3,9 @@
 ; RUN: llvm-as < %s | llc -march=arm | grep fsitos &&
 ; RUN: llvm-as < %s | llc -march=arm | grep fmrs &&
 ; RUN: llvm-as < %s | llc -march=arm | grep fsitod &&
-; RUN: llvm-as < %s | llc -march=arm | grep fmrrd | wc -l | grep 3 &&
+; RUN: llvm-as < %s | llc -march=arm | grep fmrrd | wc -l | grep 4 &&
 ; RUN: llvm-as < %s | llc -march=arm | grep fmdrr | wc -l | grep 2 &&
+; RUN: llvm-as < %s | llc -march=arm | grep fldd &&
 ; RUN: llvm-as < %s | llc -march=arm | grep flds &&
 ; RUN: llvm-as < %s | llc -march=arm | grep ".word.*1065353216"
 
@@ -20,6 +21,12 @@ entry:
         ret double %tmp
 }
 
+double %h(double* %v) {
+entry:
+       %tmp = load double* %v          ; <double> [#uses=1]
+       ret double %tmp
+}
+
 float %h() {
 entry:
         ret float 1.000000e+00