diff --git a/backends/instructions_appendix/all_instructions.golden.adoc b/backends/instructions_appendix/all_instructions.golden.adoc index d2678908b2..cddee7d88c 100644 --- a/backends/instructions_appendix/all_instructions.golden.adoc +++ b/backends/instructions_appendix/all_instructions.golden.adoc @@ -4853,6 +4853,138 @@ Included in:: |=== +[#udb:doc:inst:c_ntl_all] +== c.ntl.all + +Synopsis:: +Compressed non-temporal locality hint, all + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":16,"name": 0x9016,"type":2}]} +.... + +Description:: +The C.NTL.ALL instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of any level of cache in +the memory hierarchy. C.NTL.ALL is encoded as C.ADD x0, x5. + + +Decode Variables:: +c.ntl.all has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zca* | ~> 1.0.0 + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:c_ntl_p1] +== c.ntl.p1 + +Synopsis:: +Compressed non-temporal locality hint, innermost private + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":16,"name": 0x900a,"type":2}]} +.... + +Description:: +The C.NTL.P1 instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of the innermost level +of private cache in the memory hierarchy. C.NTL.P1 is encoded as C.ADD x0, x2. + + +Decode Variables:: +c.ntl.p1 has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zca* | ~> 1.0.0 + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:c_ntl_pall] +== c.ntl.pall + +Synopsis:: +Compressed non-temporal locality hint, all private + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":16,"name": 0x900e,"type":2}]} +.... + +Description:: +The C.NTL.PALL instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of any level of private +cache in the memory hierarchy. C.NTL.PALL is encoded as C.ADD x0, x3. + + +Decode Variables:: +c.ntl.pall has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zca* | ~> 1.0.0 + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:c_ntl_s1] +== c.ntl.s1 + +Synopsis:: +Compressed non-temporal locality hint, innermost shared + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":16,"name": 0x9012,"type":2}]} +.... + +Description:: +The C.NTL.S1 instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of the innermost level +of shared cache in the memory hierarchy. C.NTL.S1 is encoded as C.ADD x0, x4. + + +Decode Variables:: +c.ntl.s1 has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zca* | ~> 1.0.0 + +| *Zihintntl* | ~> 1.0.0 + +|=== + + [#udb:doc:inst:c_or] == c.or @@ -16272,6 +16404,130 @@ Included in:: |=== +[#udb:doc:inst:ntl_all] +== ntl.all + +Synopsis:: +Non-temporal locality hint, all + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":32,"name": 0x500033,"type":2}]} +.... + +Description:: +The NTL.ALL instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of any level of cache +in the memory hierarchy. NTL.ALL is encoded as ADD x0, x0, x5. + + +Decode Variables:: +ntl.all has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:ntl_p1] +== ntl.p1 + +Synopsis:: +Non-temporal locality hint, innermost private + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":32,"name": 0x200033,"type":2}]} +.... + +Description:: +The NTL.P1 instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of the innermost level +of private cache in the memory hierarchy. NTL.P1 is encoded as ADD x0, x0, x2. + + +Decode Variables:: +ntl.p1 has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:ntl_pall] +== ntl.pall + +Synopsis:: +Non-temporal locality hint, all private + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":32,"name": 0x300033,"type":2}]} +.... + +Description:: +The NTL.PALL instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of any level of private +cache in the memory hierarchy. NTL.PALL is encoded as ADD x0, x0, x3. + + +Decode Variables:: +ntl.pall has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zihintntl* | ~> 1.0.0 + +|=== + + +[#udb:doc:inst:ntl_s1] +== ntl.s1 + +Synopsis:: +Non-temporal locality hint, innermost shared + +Encoding:: +[wavedrom, ,svg,subs='attributes',width="100%"] +.... +{"reg":[{"bits":32,"name": 0x400033,"type":2}]} +.... + +Description:: +The NTL.S1 instruction indicates that the immediately subsequent instruction +does not exhibit temporal locality within the capacity of the innermost level +of shared cache in the memory hierarchy. NTL.S1 is encoded as ADD x0, x0, x4. + + +Decode Variables:: +ntl.s1 has no decode variables. + +Included in:: +[options="autowrap,autowidth"] +|=== +| Extension | Version + +| *Zihintntl* | ~> 1.0.0 + +|=== + + [#udb:doc:inst:or] == or diff --git a/spec/std/isa/ext/Zihintntl.yaml b/spec/std/isa/ext/Zihintntl.yaml index dd57172ed9..f350413a18 100644 --- a/spec/std/isa/ext/Zihintntl.yaml +++ b/spec/std/isa/ext/Zihintntl.yaml @@ -6,7 +6,7 @@ $schema: "ext_schema.json#" kind: extension name: Zihintntl -long_name: NTL (Non-Temporal Locality) Hint Instructions +long_name: NTL Non-Temporal Locality Hint Instructions description: | The NTL instructions are HINTs that indicate that the explicit memory accesses of the immediately subsequent instruction (henceforth "target diff --git a/spec/std/isa/inst/C/c.add.yaml b/spec/std/isa/inst/C/c.add.yaml index dc73eb6465..f2029e1a62 100644 --- a/spec/std/isa/inst/C/c.add.yaml +++ b/spec/std/isa/inst/C/c.add.yaml @@ -29,6 +29,11 @@ access: u: always vs: always vu: always +hints: + - { $ref: inst/Zihintntl/c.ntl.p1.yaml# } + - { $ref: inst/Zihintntl/c.ntl.pall.yaml# } + - { $ref: inst/Zihintntl/c.ntl.s1.yaml# } + - { $ref: inst/Zihintntl/c.ntl.all.yaml# } operation(): | XReg t0 = X[xd]; XReg t1 = X[xs2]; diff --git a/spec/std/isa/inst/I/add.yaml b/spec/std/isa/inst/I/add.yaml index 12bbd5ab91..6cb03d38cf 100644 --- a/spec/std/isa/inst/I/add.yaml +++ b/spec/std/isa/inst/I/add.yaml @@ -27,6 +27,11 @@ access: vs: always vu: always data_independent_timing: true +hints: + - { $ref: inst/Zihintntl/ntl.p1.yaml# } + - { $ref: inst/Zihintntl/ntl.pall.yaml# } + - { $ref: inst/Zihintntl/ntl.s1.yaml# } + - { $ref: inst/Zihintntl/ntl.all.yaml# } operation(): X[xd] = X[xs1] + X[xs2]; # SPDX-SnippetBegin diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml new file mode 100644 index 0000000000..521c394078 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: c.ntl.all +long_name: Compressed non-temporal locality hint, all +description: | + The C.NTL.ALL instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of any level of cache in + the memory hierarchy. C.NTL.ALL is encoded as C.ADD x0, x5. +definedBy: + allOf: + - Zca + - Zihintntl +assembly: "" +encoding: + match: "1001000000010110" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml new file mode 100644 index 0000000000..163c679313 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: c.ntl.p1 +long_name: Compressed non-temporal locality hint, innermost private +description: | + The C.NTL.P1 instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of the innermost level + of private cache in the memory hierarchy. C.NTL.P1 is encoded as C.ADD x0, x2. +definedBy: + allOf: + - Zca + - Zihintntl +assembly: "" +encoding: + match: "1001000000001010" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml new file mode 100644 index 0000000000..459daa4148 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: c.ntl.pall +long_name: Compressed non-temporal locality hint, all private +description: | + The C.NTL.PALL instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of any level of private + cache in the memory hierarchy. C.NTL.PALL is encoded as C.ADD x0, x3. +definedBy: + allOf: + - Zca + - Zihintntl +assembly: "" +encoding: + match: "1001000000001110" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml new file mode 100644 index 0000000000..ecff447acd --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: c.ntl.s1 +long_name: Compressed non-temporal locality hint, innermost shared +description: | + The C.NTL.S1 instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of the innermost level + of shared cache in the memory hierarchy. C.NTL.S1 is encoded as C.ADD x0, x4. +definedBy: + allOf: + - Zca + - Zihintntl +assembly: "" +encoding: + match: "1001000000010010" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/ntl.all.yaml b/spec/std/isa/inst/Zihintntl/ntl.all.yaml new file mode 100644 index 0000000000..56dc9ecb00 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/ntl.all.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: ntl.all +long_name: Non-temporal locality hint, all +description: | + The NTL.ALL instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of any level of cache + in the memory hierarchy. NTL.ALL is encoded as ADD x0, x0, x5. +definedBy: Zihintntl +assembly: "" +encoding: + match: "00000000010100000000000000110011" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/ntl.p1.yaml b/spec/std/isa/inst/Zihintntl/ntl.p1.yaml new file mode 100644 index 0000000000..d53b28fcc6 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/ntl.p1.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: ntl.p1 +long_name: Non-temporal locality hint, innermost private +description: | + The NTL.P1 instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of the innermost level + of private cache in the memory hierarchy. NTL.P1 is encoded as ADD x0, x0, x2. +definedBy: Zihintntl +assembly: "" +encoding: + match: "00000000001000000000000000110011" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/ntl.pall.yaml b/spec/std/isa/inst/Zihintntl/ntl.pall.yaml new file mode 100644 index 0000000000..d3c26c640d --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/ntl.pall.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: ntl.pall +long_name: Non-temporal locality hint, all private +description: | + The NTL.PALL instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of any level of private + cache in the memory hierarchy. NTL.PALL is encoded as ADD x0, x0, x3. +definedBy: Zihintntl +assembly: "" +encoding: + match: "00000000001100000000000000110011" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false diff --git a/spec/std/isa/inst/Zihintntl/ntl.s1.yaml b/spec/std/isa/inst/Zihintntl/ntl.s1.yaml new file mode 100644 index 0000000000..9eaca11104 --- /dev/null +++ b/spec/std/isa/inst/Zihintntl/ntl.s1.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Jordan Carlin +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/inst_schema.json + +$schema: inst_schema.json# +kind: instruction +name: ntl.s1 +long_name: Non-temporal locality hint, innermost shared +description: | + The NTL.S1 instruction indicates that the immediately subsequent instruction + does not exhibit temporal locality within the capacity of the innermost level + of shared cache in the memory hierarchy. NTL.S1 is encoded as ADD x0, x0, x4. +definedBy: Zihintntl +assembly: "" +encoding: + match: "00000000010000000000000000110011" +access: + s: always + u: always + vs: always + vu: always +data_independent_timing: false