Were they emulating the x86 code in realtime, or pre-translating it to RISC-V in the way that Apple’s Rosetta 2 does for ARM? If the former, that is indeed impressive performance.
The original blog post (linked in the article) refers to this as a DynaRec, i.e. a dynamic recompiler. So it's not exactly emulating, but nor is it the ahead-of-time recompilation that Rosetta 2 can do.