[PATCH] D96311: [SPARC] Recognize the prefetch instruction
Joerg Sonnenberger via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 8 19:39:50 PST 2021
joerg created this revision.
Herald added subscribers: fedor.sergeev, hiraditya, jyknight.
joerg requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
https://reviews.llvm.org/D96311
Files:
llvm/lib/Target/Sparc/SparcInstrAliases.td
llvm/lib/Target/Sparc/SparcInstrInfo.td
llvm/test/MC/Sparc/sparcv9-instructions.s
Index: llvm/test/MC/Sparc/sparcv9-instructions.s
===================================================================
--- llvm/test/MC/Sparc/sparcv9-instructions.s
+++ llvm/test/MC/Sparc/sparcv9-instructions.s
@@ -298,3 +298,16 @@
! V8-NEXT: rd %pc, %o7
! V9: rd %pc, %o7 ! encoding: [0x9f,0x41,0x40,0x00]
rd %pc, %o7
+
+ ! V9: st %o1, [%o0] ! encoding: [0xd2,0x22,0x00,0x00]
+ stw %o1, [%o0]
+
+ ! V8: error: instruction requires a CPU feature not currently enabled
+ ! V8-NEXT: prefetch [ %i1 + 0xf80 ], 1
+ ! V9: prefetch [%i1+3968], 1 ! encoding: [0xc3,0x6e,0x6f,0x80]
+ prefetch [ %i1 + 0xf80 ], 1
+
+ ! V8: error: instruction requires a CPU feature not currently enabled
+ ! V8-NEXT: prefetch [ %i1 + %i2 ], 1
+ ! V9: prefetch [%i1+%i2], 1 ! encoding: [0xc3,0x6e,0x40,0x1a]
+ prefetch [ %i1 + %i2 ], 1
Index: llvm/lib/Target/Sparc/SparcInstrInfo.td
===================================================================
--- llvm/lib/Target/Sparc/SparcInstrInfo.td
+++ llvm/lib/Target/Sparc/SparcInstrInfo.td
@@ -1623,6 +1623,17 @@
}
}
+// Section A.42 - Prefetch Data
+let Predicates = [HasV9] in {
+ def PREFETCHr : F3_1<3, 0b101101,
+ (outs), (ins MEMrr:$addr, shift_imm5:$rd),
+ "prefetch [$addr], $rd", []>;
+ def PREFETCHi : F3_2<3, 0b101101,
+ (outs), (ins MEMri:$addr, shift_imm5:$rd),
+ "prefetch [$addr], $rd", []>;
+}
+
+
// Section A.43 - Read Privileged Register Instructions
let Predicates = [HasV9] in {
Index: llvm/lib/Target/Sparc/SparcInstrAliases.td
===================================================================
--- llvm/lib/Target/Sparc/SparcInstrAliases.td
+++ llvm/lib/Target/Sparc/SparcInstrAliases.td
@@ -492,6 +492,7 @@
def : MnemonicAlias<"stuha", "stha">;
def : MnemonicAlias<"stsha", "stha">;
+def : MnemonicAlias<"stw", "st">, Requires<[HasV9]>;
def : MnemonicAlias<"lduw", "ld">, Requires<[HasV9]>;
def : MnemonicAlias<"lduwa", "lda">, Requires<[HasV9]>;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96311.322271.patch
Type: text/x-patch
Size: 2123 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210209/417816f9/attachment.bin>
More information about the llvm-commits
mailing list