Caroline Tice
466327d604
Fix small bug in ThumbExpandImm_C; arguments to a call to 'bits' were
...
in the wrong order.
llvm-svn: 128237
2011-03-24 21:11:26 +00:00
Johnny Chen
d88d96cac9
Add emulation for "ADR" operations. Add a ThumbImm8Scaled() convenience function
...
and rename the original ThumbImmScaled() function to ThumbImm7Scaled().
llvm-svn: 126335
2011-02-23 21:24:25 +00:00
Johnny Chen
5f88bcc16a
Add two convenience functions: DecodeImmShiftThumb() and DecodeImmShiftARM() to ARMUtils.h.
...
Use them within EmulateInstructionARM.cpp to save repetitive typing.
llvm-svn: 126247
2011-02-22 21:17:52 +00:00
Johnny Chen
0f60574fd7
Move Align(val, alignment) utility function to ARMUtils.h.
...
llvm-svn: 125753
2011-02-17 17:31:08 +00:00
Johnny Chen
4890c85e0a
Add emulation methods for ROR (immediate), ROR (register), and RRX.
...
Turns out that they can be funneled through the helper methods
EmulateShiftImm()/ EmulateShiftReg() as well.
Modify EmulateShiftImm() to handle SRType_ROR and SRType_RRX.
And fix a typo in the impl of utility Shift_C() in ARMUtils.h.
llvm-svn: 125689
2011-02-16 22:14:44 +00:00
Johnny Chen
22deaa5a1a
Add emulation methods for LSL (immediate), LSL (register), LSR (immediate), and LSR (register).
...
Create two helper methods EmulateShiftImm() and EmulateShiftReg() and have ASR, LSL, and LSR
delegate to the helper methods which take an extra ARM_ShifterType parameter.
The opcodes tables have not been updated yet to reflect these new entries.
llvm-svn: 125633
2011-02-16 01:27:54 +00:00
Johnny Chen
f35024b087
Modify the various shift routines to handle cases where the shift amount comes
...
from the bottom byte of a register.
llvm-svn: 125606
2011-02-15 22:21:33 +00:00
Johnny Chen
a4afff97ad
A8.6.14 ASR (immediate)
...
Add EmulateASRImm() Encodings T1, T2, and A1 to the opcodes tables.
llvm-svn: 125592
2011-02-15 20:10:55 +00:00
Johnny Chen
7a03c852d0
Add a bunch of utilities and an enum (ARM_ShifterType) for shift and rotate operations pertaining to:
...
o A2.2.1 Pseudocode details of shift and rotate operations
o A8.4.3 Pseudocode details of instruction-specified shifts and rotates
llvm-svn: 125575
2011-02-15 17:52:22 +00:00
Johnny Chen
ac407594c2
Add comment.
...
llvm-svn: 125509
2011-02-14 19:09:36 +00:00
Johnny Chen
e2b86a3a83
Enhanced the existing ARMExpandImm() and ThumbExpandImm() functions which expand
...
an imm12 into imm32 for ARM or Thumb so that they now handle carry_in/carry_out.
Funnel ARMExpandImm()/ThumbExpandImm() to the enhanced ARMExpandImm_C()/ThumbExpandImm_C()
functions.
llvm-svn: 125508
2011-02-14 19:08:41 +00:00
Johnny Chen
832d3137df
Move #define's out of ARMUtils.h and into a newly created file ARMDefines.h.
...
llvm-svn: 124261
2011-01-26 01:18:52 +00:00
Johnny Chen
74889b29a8
Move the generic instruction bits manipulation routines into a newly created file
...
named InstructionUtils.h and modify some existing code to use them.
llvm-svn: 124259
2011-01-26 01:00:55 +00:00
Johnny Chen
3fde51b820
Add Encoding T1 entry of emulate_sub_sp_imm to the g_thumb_opcodes table.
...
Update emulate_sub_sp_imm to handle Encoding T1.
llvm-svn: 124253
2011-01-26 00:08:59 +00:00
Johnny Chen
d5cd645c74
Add Encoding T2 & T3 entries of emulate_sub_sp_imm to the g_thumb_opcodes table.
...
Update emulate_sub_sp_imm to handle Encoding T2 & T3.
llvm-svn: 124248
2011-01-25 23:49:39 +00:00
Johnny Chen
ccc9963e34
Add an entry to the g_arm_opcodes table named emulate_sub_sp_imm which corresponds
...
to an operation to adjust the stack pointer (allocate space for local storage).
llvm-svn: 124237
2011-01-25 22:45:28 +00:00
Johnny Chen
44a408424f
Move some #define's to the ARMUtils.h header file.
...
llvm-svn: 124141
2011-01-24 19:50:30 +00:00
Johnny Chen
d8c2a48298
Add Encoding T2 & T3 of the PUSH instructions to the g_arm_opcodes table.
...
Plus add an extra field ARMInstrSize to the table entry type 'ARMOpcode'.
llvm-svn: 124140
2011-01-24 19:46:32 +00:00
Johnny Chen
91027008f1
Add an ARMUtils.h file to house utility functions for the ARM/Thumb Instruction Set Architecture.
...
llvm-svn: 124131
2011-01-24 18:24:53 +00:00