Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Eglantine has lots of different ways that you can contribute to its efforts, even without knowing how to write code:

- Join our [Discord](https://discord.gg/jCCZ58VExk) community
- Join our [Discord](https://discord.gg/XkS5NVPTUY) community
- Submit [bug reports or feature requests](https://github.com/Djihads80/Eglantine/issues)
- Improve documentation or share reproducible testing results
- Contribute to our [translation efforts](./dist/languages/README.md)
Expand Down Expand Up @@ -47,4 +47,4 @@ Before opening a pull request, make sure your branch is up-to-date with Eglantin

Alongside the other contribution methods listed up top, you can also choose to contribute through documentation, organization, or community guides. These can be done either through the code contribution methods described above, or created externally and shared via our Discord community.

If you have an external tool/page that you believe would be handy to integrate/link into Eglantine, please discuss it with the developers on [Discord](https://discord.gg/jCCZ58VExk). **Do not submit vibe-coded or AI generated tools or applications**.
If you have an external tool/page that you believe would be handy to integrate/link into Eglantine, please discuss it with the developers on [Discord](https://discord.gg/XkS5NVPTUY). **Do not submit vibe-coded or AI generated tools or applications**.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ A list of supported games will be available in future. Please be patient.

## Development

For development discussions, please join us on [Discord](https://discord.gg/jCCZ58VExk)
For development discussions, please join us on [Discord](https://discord.gg/XkS5NVPTUY)

If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Stoat to learn more about the current state of the emulator.

Expand All @@ -67,7 +67,7 @@ You can download the latest releases from [here](https://github.com/Djihads80/Eg

We currently do not take in any donations for the time being

If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/jCCZ58VExk)
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/XkS5NVPTUY)

## Star History

Expand Down
16 changes: 12 additions & 4 deletions src/shader_recompiler/frontend/ampere/lower_to_maxwell.h
Original file line number Diff line number Diff line change
Expand Up @@ -2955,15 +2955,22 @@ inline LoweredProgram LowerToMaxwellWith(std::span<const Instruction> code, u32
(u64{insn.Bits(76, 4)} << 48) | (u64{1} << 52) | (u64{insn.Bits(80, 1)} << 55));
break;
}
case 0x234: case 0x434: { // HSETP2 with a register (B swizzle 60-61, abs 62, neg 63) or an
// immediate half pair: A swizzle 74-75 (neg 72, abs 73),
case 0x234: case 0x434: case 0x634: { // HSETP2 with a register (B swizzle 60-61, abs 62,
// neg 63), an immediate half pair or a constant buffer (same B fields):
// A swizzle 74-75 (neg 72, abs 73),
// combine 69-70, H_AND 71, compare 76-79, FTZ 80, P/Q 81-86, input 87-90.
u64 source = u64{250} << 20;
if (opcode == 0x234) {
if ((insn.words[1] & 0x0fffff00U) || insn.Bits(64, 5))
return fail(index, "native half comparison mode");
source = (u64{insn.Bits(32, 8)} << 20) | (u64{insn.Bits(60, 2)} << 28) |
(u64{insn.Bits(62, 1)} << 30) | (u64{insn.Bits(63, 1)} << 31);
} else if (opcode == 0x634) {
// Mario Kart World: HSETP2.GT.AND P1, PT, RZ.H0_H0, c[0x7][0xfc].H1_H1, !P1.
if (insn.Bits(64, 5)) return fail(index, "native half comparison mode");
if (materialize(2, 255, 250, false, false) == 255) break;
source |= (u64{insn.Bits(60, 2)} << 28) | (u64{insn.Bits(62, 1)} << 30) |
(u64{insn.Bits(63, 1)} << 31);
} else {
mov_imm(250, insn.words[1]);
}
Expand Down Expand Up @@ -3498,9 +3505,10 @@ inline LoweredProgram LowerToMaxwellWith(std::span<const Instruction> code, u32
// when its active threads are the mask in the uniform register at 24-31 (bit 91;
// URZ without it). The compiler puts warp-synchronous fast paths behind them (shuffles
// on a converged warp; the other path calls a WARPSYNC helper). Eden runs the warp's
// threads converged there: .CONV always branches and .DIV never does.
// threads converged there: .CONV always branches and .DIV never does. .U (1) only
// says the predicate is warp-uniform: a plain branch (Mario Kart World roads).
const u32 mode = insn.Bits(32, 2);
if (mode == 1 || (mode == 0 && insn.Bits(91, 1)))
if (mode == 0 && insn.Bits(91, 1))
return fail(index, "native branch convergence mode");
if (mode == 2) break;
u64 branch_predicate = predicate;
Expand Down
Loading