X86: Use the cda microop where appropriate. The ENTER instruction still needs these.
authorGabe Black <gblack@eecs.umich.edu>
Mon, 22 Oct 2007 21:39:40 +0000 (14:39 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 22 Oct 2007 21:39:40 +0000 (14:39 -0700)
--HG--
extra : convert_revision : c5a1a6d66c454f252d3b798c38a6798e7dd486f0

src/arch/x86/isa/insts/general_purpose/data_transfer/stack_operations.py
tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout

index 5771242e6ac9a0ab891dcfdad1e2f7de64731365..5884d68c2ad86a55a15e562bb97757e72957b8d3 100644 (file)
@@ -58,8 +58,9 @@ def macroop POP_R {
     # Make the default data size of pops 64 bits in 64 bit mode
     .adjust_env oszIn64Override
 
-    ld reg, ss, [1, t0, rsp]
+    ld t1, ss, [1, t0, rsp]
     addi rsp, rsp, dsz
+    mov reg, reg, t1
 };
 
 def macroop POP_M {
@@ -67,7 +68,7 @@ def macroop POP_M {
     .adjust_env oszIn64Override
 
     ld t1, ss, [1, t0, rsp]
-    # Check stack address
+    cda seg, sib, disp
     addi rsp, rsp, dsz
     st t1, seg, sib, disp
 };
@@ -78,7 +79,7 @@ def macroop POP_P {
 
     rdip t7
     ld t1, ss, [1, t0, rsp]
-    # Check stack address
+    cda seg, sib, disp
     addi rsp, rsp, dsz
     st t1, seg, riprel, disp
 };
@@ -87,8 +88,6 @@ def macroop PUSH_R {
     # Make the default data size of pops 64 bits in 64 bit mode
     .adjust_env oszIn64Override
 
-    # This needs to work slightly differently from the other versions of push
-    # because the -original- version of the stack pointer is what gets pushed
     stupd reg, ss, [1, t0, rsp], "-env.dataSize"
 };
 
@@ -118,7 +117,10 @@ def macroop PUSH_P {
 };
 
 def macroop PUSHA {
-    # Check all the stack addresses.
+    # Check all the stack addresses. We'll assume that if the beginning and
+    # end are ok, then the stuff in the middle should be as well.
+    cda ss, [1, t0, rsp], "-env.dataSize"
+    cda ss, [1, t0, rsp], "-8 * env.dataSize"
     stupd rax, ss, [1, t0, rsp], "-env.dataSize"
     stupd rcx, ss, [1, t0, rsp], "-env.dataSize"
     stupd rdx, ss, [1, t0, rsp], "-env.dataSize"
@@ -130,14 +132,17 @@ def macroop PUSHA {
 };
 
 def macroop POPA {
-    # Check all the stack addresses.
-    ld rdi, ss, [1, t0, rsp], "0 * env.dataSize"
+    # Check all the stack addresses. We'll assume that if the beginning and
+    # end are ok, then the stuff in the middle should be as well.
+    ld t1, ss, [1, t0, rsp], "0 * env.dataSize"
+    ld t2, ss, [1, t0, rsp], "7 * env.dataSize"
+    mov rdi, rdi, t1
     ld rsi, ss, [1, t0, rsp], "1 * env.dataSize"
     ld rbp, ss, [1, t0, rsp], "2 * env.dataSize"
     ld rbx, ss, [1, t0, rsp], "4 * env.dataSize"
     ld rdx, ss, [1, t0, rsp], "5 * env.dataSize"
     ld rcx, ss, [1, t0, rsp], "6 * env.dataSize"
-    ld rax, ss, [1, t0, rsp], "7 * env.dataSize"
+    mov rax, rax, t2
     addi rsp, rsp, "8 * env.dataSize"
 };
 
index ba5126f4da71a4e25d2975cb96311edce35eb9c9..186158b96ebf3db5a7eb691da406620077939a18 100644 (file)
@@ -1,17 +1,17 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1273928                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 175856                       # Number of bytes of host memory used
-host_seconds                                  1258.84                       # Real time elapsed on the host
-host_tick_rate                              758576488                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1240763                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 175872                       # Number of bytes of host memory used
+host_seconds                                  1292.50                       # Real time elapsed on the host
+host_tick_rate                              738827746                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                  1603675345                       # Number of instructions simulated
-sim_seconds                                  0.954929                       # Number of seconds simulated
-sim_ticks                                954929276500                       # Number of ticks simulated
+sim_insts                                  1603680167                       # Number of instructions simulated
+sim_seconds                                  0.954932                       # Number of seconds simulated
+sim_ticks                                954931687500                       # Number of ticks simulated
 system.cpu.idle_fraction                            0                       # Percentage of idle cycles
 system.cpu.not_idle_fraction                        1                       # Percentage of non-idle cycles
-system.cpu.numCycles                       1909858554                       # number of cpu cycles simulated
-system.cpu.num_insts                       1603675345                       # Number of instructions executed
+system.cpu.numCycles                       1909863376                       # number of cpu cycles simulated
+system.cpu.num_insts                       1603680167                       # Number of instructions executed
 system.cpu.num_refs                         607157396                       # Number of memory references
 system.cpu.workload.PROG:num_syscalls              18                       # Number of system calls
 
index b0a2189c3fabb5b430815d686f2e286738429bfa..b0a68cad2a669f365601d89a6bccf803ca0463e5 100644 (file)
@@ -36,9 +36,9 @@ The Regents of The University of Michigan
 All Rights Reserved
 
 
-M5 compiled Oct 19 2007 16:48:38
-M5 started Fri Oct 19 18:08:21 2007
+M5 compiled Oct 21 2007 20:57:52
+M5 started Sun Oct 21 21:35:26 2007
 M5 executing on nacho
 command line: build/X86_SE/m5.fast -d build/X86_SE/tests/fast/long/00.gzip/x86/linux/simple-atomic tests/run.py long/00.gzip/x86/linux/simple-atomic
 Global frequency set at 1000000000000 ticks per second
-Exiting @ tick 954929276500 because target called exit()
+Exiting @ tick 954931687500 because target called exit()
index 04136d558d5e43dade18f10d784a18a41f9192e0..7942861967de8a05618bfa3d1a53de5e62ce05dd 100644 (file)
@@ -1,17 +1,17 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1133815                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 310268                       # Number of bytes of host memory used
-host_seconds                                   237.78                       # Real time elapsed on the host
-host_tick_rate                              696782714                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1168424                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 310284                       # Number of bytes of host memory used
+host_seconds                                   230.78                       # Real time elapsed on the host
+host_tick_rate                              718029499                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                   269599525                       # Number of instructions simulated
-sim_seconds                                  0.165682                       # Number of seconds simulated
-sim_ticks                                165681894000                       # Number of ticks simulated
+sim_insts                                   269642969                       # Number of instructions simulated
+sim_seconds                                  0.165704                       # Number of seconds simulated
+sim_ticks                                165703616000                       # Number of ticks simulated
 system.cpu.idle_fraction                            0                       # Percentage of idle cycles
 system.cpu.not_idle_fraction                        1                       # Percentage of non-idle cycles
-system.cpu.numCycles                        331363789                       # number of cpu cycles simulated
-system.cpu.num_insts                        269599525                       # Number of instructions executed
+system.cpu.numCycles                        331407233                       # number of cpu cycles simulated
+system.cpu.num_insts                        269642969                       # Number of instructions executed
 system.cpu.num_refs                         124052668                       # Number of memory references
 system.cpu.workload.PROG:num_syscalls             429                       # Number of system calls
 
index 4c462956f1ea5e087dabe1484d80cc947fb96d0b..743c3e8f14d33f16bad3b5824948bd8483d79c70 100644 (file)
@@ -21,9 +21,9 @@ The Regents of The University of Michigan
 All Rights Reserved
 
 
-M5 compiled Oct 19 2007 16:48:38
-M5 started Fri Oct 19 16:54:37 2007
+M5 compiled Oct 21 2007 20:57:52
+M5 started Sun Oct 21 21:57:00 2007
 M5 executing on nacho
 command line: build/X86_SE/m5.fast -d build/X86_SE/tests/fast/long/10.mcf/x86/linux/simple-atomic tests/run.py long/10.mcf/x86/linux/simple-atomic
 Global frequency set at 1000000000000 ticks per second
-Exiting @ tick 165681894000 because target called exit()
+Exiting @ tick 165703616000 because target called exit()
index 67aae28c5b8981f8e5b17ac641eca3835a825a13..e1f98313b698033e618d19798145ad45b7188b3c 100644 (file)
@@ -1,17 +1,17 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1349569                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 179560                       # Number of bytes of host memory used
-host_seconds                                  1098.57                       # Real time elapsed on the host
-host_tick_rate                              784871141                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1244280                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 179592                       # Number of bytes of host memory used
+host_seconds                                  1193.15                       # Real time elapsed on the host
+host_tick_rate                              723499766                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                  1482589975                       # Number of instructions simulated
-sim_seconds                                  0.862233                       # Number of seconds simulated
-sim_ticks                                862232618000                       # Number of ticks simulated
+sim_insts                                  1484611664                       # Number of instructions simulated
+sim_seconds                                  0.863243                       # Number of seconds simulated
+sim_ticks                                863243462500                       # Number of ticks simulated
 system.cpu.idle_fraction                            0                       # Percentage of idle cycles
 system.cpu.not_idle_fraction                        1                       # Percentage of non-idle cycles
-system.cpu.numCycles                       1724465237                       # number of cpu cycles simulated
-system.cpu.num_insts                       1482589975                       # Number of instructions executed
+system.cpu.numCycles                       1726486926                       # number of cpu cycles simulated
+system.cpu.num_insts                       1484611664                       # Number of instructions executed
 system.cpu.num_refs                         533543283                       # Number of memory references
 system.cpu.workload.PROG:num_syscalls             541                       # Number of system calls
 
index 742e80921e3e01266491975953aa983152aaee4c..372af2d773a657812f86e25a720207fa0fe8585e 100644 (file)
@@ -64,9 +64,9 @@ The Regents of The University of Michigan
 All Rights Reserved
 
 
-M5 compiled Oct 19 2007 16:48:38
-M5 started Fri Oct 19 18:41:37 2007
+M5 compiled Oct 21 2007 20:57:52
+M5 started Sun Oct 21 22:00:51 2007
 M5 executing on nacho
 command line: build/X86_SE/m5.fast -d build/X86_SE/tests/fast/long/20.parser/x86/linux/simple-atomic tests/run.py long/20.parser/x86/linux/simple-atomic
 Global frequency set at 1000000000000 ticks per second
-Exiting @ tick 862232618000 because target called exit()
+Exiting @ tick 863243462500 because target called exit()
index f6dd732d114845d1216adf73bf807d718c7dd74f..03017061d1c149a5b209732faa834053673346b2 100644 (file)
@@ -1,17 +1,17 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1178554                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 175672                       # Number of bytes of host memory used
-host_seconds                                  3899.42                       # Real time elapsed on the host
-host_tick_rate                              719706854                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1084871                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 175684                       # Number of bytes of host memory used
+host_seconds                                  4236.15                       # Real time elapsed on the host
+host_tick_rate                              662497504                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                  4595671909                       # Number of instructions simulated
-sim_seconds                                  2.806436                       # Number of seconds simulated
-sim_ticks                                2806436396000                       # Number of ticks simulated
+sim_insts                                  4595672201                       # Number of instructions simulated
+sim_seconds                                  2.806437                       # Number of seconds simulated
+sim_ticks                                2806436542000                       # Number of ticks simulated
 system.cpu.idle_fraction                            0                       # Percentage of idle cycles
 system.cpu.not_idle_fraction                        1                       # Percentage of non-idle cycles
-system.cpu.numCycles                       5612872793                       # number of cpu cycles simulated
-system.cpu.num_insts                       4595671909                       # Number of instructions executed
+system.cpu.numCycles                       5612873085                       # number of cpu cycles simulated
+system.cpu.num_insts                       4595672201                       # Number of instructions executed
 system.cpu.num_refs                        1686312529                       # Number of memory references
 system.cpu.workload.PROG:num_syscalls              33                       # Number of system calls
 
index c08c0a7295a3deab76fc9f8cfa8e83769062523d..1a0378ca61ef66e2386ed720dc90adb37c15eb67 100644 (file)
@@ -19,9 +19,9 @@ The Regents of The University of Michigan
 All Rights Reserved
 
 
-M5 compiled Oct 19 2007 16:48:38
-M5 started Fri Oct 19 16:59:11 2007
+M5 compiled Oct 21 2007 20:57:52
+M5 started Sun Oct 21 22:20:45 2007
 M5 executing on nacho
 command line: build/X86_SE/m5.fast -d build/X86_SE/tests/fast/long/60.bzip2/x86/linux/simple-atomic tests/run.py long/60.bzip2/x86/linux/simple-atomic
 Global frequency set at 1000000000000 ticks per second
-Exiting @ tick 2806436396000 because target called exit()
+Exiting @ tick 2806436542000 because target called exit()
index 3281720ceca8138281fb1769a9b6a74c09012468..db17fc7d716d35cea0b9711d5b22f6b8a5eb1d57 100644 (file)
@@ -1,17 +1,17 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1299831                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 183188                       # Number of bytes of host memory used
-host_seconds                                   167.72                       # Real time elapsed on the host
-host_tick_rate                              773401156                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1304954                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 183200                       # Number of bytes of host memory used
+host_seconds                                   167.36                       # Real time elapsed on the host
+host_tick_rate                              776224834                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                   218004208                       # Number of instructions simulated
-sim_seconds                                  0.129713                       # Number of seconds simulated
-sim_ticks                                129713077000                       # Number of ticks simulated
+sim_insts                                   218399764                       # Number of instructions simulated
+sim_seconds                                  0.129911                       # Number of seconds simulated
+sim_ticks                                129910855000                       # Number of ticks simulated
 system.cpu.idle_fraction                            0                       # Percentage of idle cycles
 system.cpu.not_idle_fraction                        1                       # Percentage of non-idle cycles
-system.cpu.numCycles                        259426155                       # number of cpu cycles simulated
-system.cpu.num_insts                        218004208                       # Number of instructions executed
+system.cpu.numCycles                        259821711                       # number of cpu cycles simulated
+system.cpu.num_insts                        218399764                       # Number of instructions executed
 system.cpu.num_refs                          77164404                       # Number of memory references
 system.cpu.workload.PROG:num_syscalls             395                       # Number of system calls
 
index 54ee912fee41fff1171c9a823f817abd8db0e3b4..4f9067256a8622527f834bc721bc1319d5600fd0 100644 (file)
@@ -18,9 +18,9 @@ The Regents of The University of Michigan
 All Rights Reserved
 
 
-M5 compiled Oct 19 2007 16:48:38
-M5 started Fri Oct 19 16:50:34 2007
+M5 compiled Oct 21 2007 20:57:52
+M5 started Sun Oct 21 23:31:23 2007
 M5 executing on nacho
 command line: build/X86_SE/m5.fast -d build/X86_SE/tests/fast/long/70.twolf/x86/linux/simple-atomic tests/run.py long/70.twolf/x86/linux/simple-atomic
 Global frequency set at 1000000000000 ticks per second
-Exiting @ tick 129713077000 because target called exit()
+Exiting @ tick 129910855000 because target called exit()