forked from OSchip/llvm-project
[SystemZ] Add a definition of the IPM instruction
llvm-svn: 188161
This commit is contained in:
parent
f11f1e43de
commit
87326c73c6
|
@ -27,9 +27,9 @@ defm CondStoreF64 : CondStores<FP64, nonvolatile_store,
|
|||
|
||||
// Load zero.
|
||||
let neverHasSideEffects = 1, isAsCheapAsAMove = 1, isMoveImm = 1 in {
|
||||
def LZER : InherentRRE<"lze", 0xB374, FP32, (fpimm0)>;
|
||||
def LZDR : InherentRRE<"lzd", 0xB375, FP64, (fpimm0)>;
|
||||
def LZXR : InherentRRE<"lzx", 0xB376, FP128, (fpimm0)>;
|
||||
def LZER : InherentRRE<"lzer", 0xB374, FP32, (fpimm0)>;
|
||||
def LZDR : InherentRRE<"lzdr", 0xB375, FP64, (fpimm0)>;
|
||||
def LZXR : InherentRRE<"lzxr", 0xB376, FP128, (fpimm0)>;
|
||||
}
|
||||
|
||||
// Moves between two floating-point registers.
|
||||
|
|
|
@ -552,7 +552,7 @@ class InstSS<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
|
|||
class InherentRRE<string mnemonic, bits<16> opcode, RegisterOperand cls,
|
||||
dag src>
|
||||
: InstRRE<opcode, (outs cls:$R1), (ins),
|
||||
mnemonic#"r\t$R1",
|
||||
mnemonic#"\t$R1",
|
||||
[(set cls:$R1, src)]> {
|
||||
let R2 = 0;
|
||||
}
|
||||
|
|
|
@ -1119,6 +1119,10 @@ let Defs = [CC] in {
|
|||
// Miscellaneous Instructions.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Extract CC into bits 29 and 28 of a register.
|
||||
let Uses = [CC] in
|
||||
def IPM : InherentRRE<"ipm", 0xB222, GR32, (null_frag)>;
|
||||
|
||||
// Read a 32-bit access register into a GR32. As with all GR32 operations,
|
||||
// the upper 32 bits of the enclosing GR64 remain unchanged, which is useful
|
||||
// when a 64-bit address is stored in a pair of access registers.
|
||||
|
|
|
@ -2260,6 +2260,15 @@
|
|||
# CHECK: iill %r15, 0
|
||||
0xa5 0xf3 0x00 0x00
|
||||
|
||||
# CHECK: ipm %r0
|
||||
0xb2 0x22 0x00 0x00
|
||||
|
||||
# CHECK: ipm %r1
|
||||
0xb2 0x22 0x00 0x10
|
||||
|
||||
# CHECK: ipm %r15
|
||||
0xb2 0x22 0x00 0xf0
|
||||
|
||||
# CHECK: la %r0, 0
|
||||
0x41 0x00 0x00 0x00
|
||||
|
||||
|
|
|
@ -3593,6 +3593,14 @@
|
|||
iill %r0, 0xffff
|
||||
iill %r15, 0
|
||||
|
||||
#CHECK: ipm %r0 # encoding: [0xb2,0x22,0x00,0x00]
|
||||
#CHECK: ipm %r1 # encoding: [0xb2,0x22,0x00,0x10]
|
||||
#CHECK: ipm %r15 # encoding: [0xb2,0x22,0x00,0xf0]
|
||||
|
||||
ipm %r0
|
||||
ipm %r1
|
||||
ipm %r15
|
||||
|
||||
#CHECK: l %r0, 0 # encoding: [0x58,0x00,0x00,0x00]
|
||||
#CHECK: l %r0, 4095 # encoding: [0x58,0x00,0x0f,0xff]
|
||||
#CHECK: l %r0, 0(%r1) # encoding: [0x58,0x00,0x10,0x00]
|
||||
|
|
Loading…
Reference in New Issue