[PATCH] D18032: Power 9 Atomic instructions, load monitored and move XER to CR
Chuang-Yu Cheng via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 10 23:13:55 PST 2016
cycheng added inline comments.
================
Comment at: lib/Target/PowerPC/PPCInstr64Bit.td:248
@@ +247,3 @@
+
+let hasExtraSrcRegAllocReq = 1 in
+def LDAT : X_RD5_RS5_IM5<31, 614, (outs g8rc:$rD), (ins g8rc:$rA, u5imm:$FC),
----------------
Depending on FC value, input might be $(rD+1), $(rD+2)
I believe that's why we need "hasExtraSrcRegAllocReq".
I am curious about the effect of "hasExtraSrcRegAllocReq", looks like it disallows register changing in AggressiveAntiDepBreaker::ScanInstruction, because it is dangerous to do that for this instruction.
================
Comment at: lib/Target/PowerPC/PPCInstr64Bit.td:249
@@ +248,3 @@
+let hasExtraSrcRegAllocReq = 1 in
+def LDAT : X_RD5_RS5_IM5<31, 614, (outs g8rc:$rD), (ins g8rc:$rA, u5imm:$FC),
+ "ldat $rD, $rA, $FC", IIC_LdStLoad>,
----------------
Do we need to check $FC value? Or it's user's responsibility?
Even though it looks like user's responsibility:
> an Invalid function code will cause the system data storage error handler to be invoked.
================
Comment at: lib/Target/PowerPC/PPCInstr64Bit.td:920
@@ +919,3 @@
+def LDMX : XForm_1<31, 309, (outs g8rc:$rD), (ins memrr:$src),
+ "ldmx $rD, $src", IIC_LdStLD, []>, isPPC64,
+ Requires<[IsISA3_0]>;
----------------
I don't know when we need to add "isPPC64", Does LDAT and STDAT also require this attribute?
Repository:
rL LLVM
http://reviews.llvm.org/D18032
More information about the llvm-commits
mailing list