mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 04:22:57 +02:00
All store instructions really want 'rd' in the first field.
Special cases: STFSRx and STXFSRx - they operate on predefined rd=0 or rd=1, and expect %fsr as the parameter in assembly. They are disabled (since not used) until an encoding, both for code generation and output, is chosen. llvm-svn: 6619
This commit is contained in:
parent
93b1009318
commit
e8b6c4d380
@ -678,7 +678,8 @@ def SRAXi6 : F3_13<2, 0b100111, "srax">; // srax r, shcnt64, r
|
|||||||
// Section A.51: Store Barrier - p224
|
// Section A.51: Store Barrier - p224
|
||||||
// Not currently used in the Sparc backend
|
// Not currently used in the Sparc backend
|
||||||
|
|
||||||
// Section A.52: Store Floating-point -p225
|
// Section A.52: Store Floating-point - p225
|
||||||
|
// Store instructions all want their rd register first
|
||||||
def STFr : F3_1rd<3, 0b100100, "st">; // st r, [r+r]
|
def STFr : F3_1rd<3, 0b100100, "st">; // st r, [r+r]
|
||||||
def STFi : F3_2rd<3, 0b100100, "st">; // st r, [r+i]
|
def STFi : F3_2rd<3, 0b100100, "st">; // st r, [r+i]
|
||||||
def STDFr : F3_1rd<3, 0b100111, "std">; // std r, [r+r]
|
def STDFr : F3_1rd<3, 0b100111, "std">; // std r, [r+r]
|
||||||
@ -690,25 +691,31 @@ def STQFr : F3_1rd<3, 0b100110, "stq">; // stq r, [r+r]
|
|||||||
def STQFi : F3_2rd<3, 0b100110, "stq">; // stq r, [r+i]
|
def STQFi : F3_2rd<3, 0b100110, "stq">; // stq r, [r+i]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// FIXME: An encoding needs to be chosen here, because STFSRx expect rd=0,
|
||||||
|
// while STXFSRx expect rd=1, but assembly syntax dictates %fsr as first arg.
|
||||||
|
// These are being disabled because they aren't used in the Sparc backend.
|
||||||
|
#if 0
|
||||||
set isDeprecated = 1 in {
|
set isDeprecated = 1 in {
|
||||||
def STFSRr : F3_1<3, 0b100101, "st">; // st r, [r+r]
|
def STFSRr : F3_1<3, 0b100101, "st">; // st %fsr, [r+r]
|
||||||
def STFSRi : F3_2<3, 0b100101, "st">; // st r, [r+i]
|
def STFSRi : F3_2<3, 0b100101, "st">; // st %fsr, [r+i]
|
||||||
}
|
}
|
||||||
def STXFSRr : F3_1<3, 0b100101, "stq">; // stx r, [r+r]
|
def STXFSRr : F3_1<3, 0b100101, "stx">; // stx %fsr, [r+r]
|
||||||
def STXFSRi : F3_2<3, 0b100101, "stq">; // stx r, [r+i]
|
def STXFSRi : F3_2<3, 0b100101, "stx">; // stx %fsr, [r+i]
|
||||||
|
#endif
|
||||||
|
|
||||||
// Section A.53: Store Floating-Point into Alternate Space - p227
|
// Section A.53: Store Floating-Point into Alternate Space - p227
|
||||||
// Not currently used in the Sparc backend
|
// Not currently used in the Sparc backend
|
||||||
|
|
||||||
// Section A.54: Store Integer - p229
|
// Section A.54: Store Integer - p229
|
||||||
def STBr : F3_1<3, 0b000101, "stb">; // stb r, [r+r]
|
// Store instructions all want their rd register first
|
||||||
def STBi : F3_2<3, 0b000101, "stb">; // stb r, [r+i]
|
def STBr : F3_1rd<3, 0b000101, "stb">; // stb r, [r+r]
|
||||||
def STHr : F3_1<3, 0b000110, "stb">; // stb r, [r+r]
|
def STBi : F3_2rd<3, 0b000101, "stb">; // stb r, [r+i]
|
||||||
def STHi : F3_2<3, 0b000110, "stb">; // stb r, [r+i]
|
def STHr : F3_1rd<3, 0b000110, "sth">; // stb r, [r+r]
|
||||||
def STWr : F3_1<3, 0b000100, "stb">; // stb r, [r+r]
|
def STHi : F3_2rd<3, 0b000110, "sth">; // stb r, [r+i]
|
||||||
def STWi : F3_2<3, 0b000100, "stb">; // stb r, [r+i]
|
def STWr : F3_1rd<3, 0b000100, "stw">; // stb r, [r+r]
|
||||||
def STXr : F3_1<3, 0b001110, "stb">; // stb r, [r+r]
|
def STWi : F3_2rd<3, 0b000100, "stw">; // stb r, [r+i]
|
||||||
def STXi : F3_2<3, 0b001110, "stb">; // stb r, [r+i]
|
def STXr : F3_1rd<3, 0b001110, "stx">; // stb r, [r+r]
|
||||||
|
def STXi : F3_2rd<3, 0b001110, "stx">; // stb r, [r+i]
|
||||||
|
|
||||||
// Section A.55: Store Integer into Alternate Space - p231
|
// Section A.55: Store Integer into Alternate Space - p231
|
||||||
// Not currently used in the Sparc backend
|
// Not currently used in the Sparc backend
|
||||||
|
Loading…
Reference in New Issue
Block a user