mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-27 06:54:30 +00:00
[Sparc]: asm-only support for the ldstub instruction.
llvm-svn: 245485
This commit is contained in:
parent
784b814985
commit
e22dae3b05
@ -298,6 +298,17 @@ multiclass LoadA<string OpcStr, bits<6> Op3Val, bits<6> LoadAOp3Val,
|
||||
def Arr : LoadASI<OpcStr, LoadAOp3Val, OpNode, RC, Ty>;
|
||||
}
|
||||
|
||||
// The LDSTUB instruction is supported for asm only.
|
||||
// It is unlikely that general-purpose code could make use of it.
|
||||
// CAS is preferred for sparc v9.
|
||||
def LDSTUBrr : F3_1<3, 0b001101, (outs IntRegs:$dst), (ins MEMrr:$addr),
|
||||
"ldstub [$addr], $dst", []>;
|
||||
def LDSTUBri : F3_2<3, 0b001101, (outs IntRegs:$dst), (ins MEMri:$addr),
|
||||
"ldstub [$addr], $dst", []>;
|
||||
def LDSTUBArr : F3_1_asi<3, 0b011101, (outs IntRegs:$dst),
|
||||
(ins MEMrr:$addr, i8imm:$asi),
|
||||
"ldstuba [$addr] $asi, $dst", []>;
|
||||
|
||||
// Store multiclass - Define both Reg+Reg/Reg+Imm patterns in one shot.
|
||||
multiclass Store<string OpcStr, bits<6> Op3Val, SDPatternOperator OpNode,
|
||||
RegisterClass RC, ValueType Ty> {
|
||||
|
@ -12,3 +12,12 @@
|
||||
|
||||
! CHECK: swapa [%i0+%l6] 131, %o2 ! encoding: [0xd4,0xfe,0x10,0x76]
|
||||
swapa [%i0+%l6] 131, %o2
|
||||
|
||||
! CHECK: ldstub [%i0+40], %g1 ! encoding: [0xc2,0x6e,0x20,0x28]
|
||||
ldstub [%i0+40], %g1
|
||||
|
||||
! CHECK: ldstub [%i0+%i2], %g1 ! encoding: [0xc2,0x6e,0x00,0x1a]
|
||||
ldstub [%i0+%i2], %g1
|
||||
|
||||
! CHECK: ldstuba [%i0+%i2] 131, %g1 ! encoding: [0xc2,0xee,0x10,0x7a]
|
||||
ldstuba [%i0+%i2] 131, %g1
|
||||
|
Loading…
x
Reference in New Issue
Block a user