2026/02/14

Newest at the top

2026-02-14 22:04:25 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 255 seconds)
2026-02-14 22:04:08 +0100 <fgarcia> llvm goes to at least 23 now. it could be the SIMD changes haven't made it down
2026-02-14 22:03:56 +0100 <tomsmeding> but in theory, either should work here
2026-02-14 22:03:48 +0100 <tomsmeding> in general, Storable is more straightforward
2026-02-14 22:03:42 +0100 <int-e> Right. I should've known that.
2026-02-14 22:03:28 +0100 <probie> int-e: it's not I omitted the `import qualified Data.Vector.Unboxed.Mutable as V`. Weirdly, I get slightly better llvm if I use `Storable` instead of `Unboxed`
2026-02-14 22:03:10 +0100 <int-e> tomsmeding: gah
2026-02-14 22:02:59 +0100 <[exa]> int-e: afaik you can import the one from the .unboxed.mutable or .primitive.mutable module
2026-02-14 22:02:52 +0100 <tomsmeding> int-e: every mutable vector variant has its own definition of the "IOVector" type synonym
2026-02-14 22:02:35 +0100 <EvanR> oh, LLVM
2026-02-14 22:02:22 +0100 <EvanR> last I heard ghc didn't have SIMD support
2026-02-14 22:02:09 +0100 <tomsmeding> there are a bunch of loop-invariant loads here that I expect llvm to lift out
2026-02-14 22:02:03 +0100 <int-e> IOVector is boxed.
2026-02-14 22:01:42 +0100 <tomsmeding> probie: if it's easy to paste the optimised LLVM IR, that would make it easier to see what's going on, probably
2026-02-14 22:00:22 +0100 <[exa]> probie: you have unboxed or primitive vectors?
2026-02-14 22:00:09 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 260 seconds)
2026-02-14 21:59:26 +0100 <probie> https://paste.tomsmeding.com/NRYKh5Fj
2026-02-14 21:59:21 +0100 <[exa]> that looks like a lot of indirection
2026-02-14 21:58:23 +0100caubert(~caubert@user/caubert) (Ping timeout: 252 seconds)
2026-02-14 21:58:11 +0100 <tomsmeding> why are there so many loads for only two stores? I assume this is different code than you posted originally?
2026-02-14 21:57:03 +0100 <probie> I don't think it's LLVM's problem here; GHC is just not generating good code https://paste.tomsmeding.com/8ZYY5Pka
2026-02-14 21:57:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-14 21:56:55 +0100 <[exa]> probie: btw try to unroll the loop manually, that might give llvm enough decisive force
2026-02-14 21:56:50 +0100 <tomsmeding> very recently IIRC some of them started working on NCG too
2026-02-14 21:56:37 +0100 <tomsmeding> GHC has SIMD primops, but they only work with LLVM
2026-02-14 21:56:12 +0100 <[exa]> probie: I find it better than relying on the compiler accidentaly noticing that I want SIMD (but yeah it's still :( )
2026-02-14 21:54:32 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 252 seconds)
2026-02-14 21:53:21 +0100caubert(~caubert@user/caubert) caubert
2026-02-14 21:52:13 +0100 <probie> [exa]: Because I shouldn't need to
2026-02-14 21:49:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-14 21:45:43 +0100 <[exa]> ok not bad :)
2026-02-14 21:45:36 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-14 21:44:27 +0100 <tomsmeding> (never used it)
2026-02-14 21:44:08 +0100 <tomsmeding> [exa]: https://gitlab.com/Gusten_Isfeldt/futhask
2026-02-14 21:43:46 +0100Pixi(~Pixi@user/pixi) Pixi
2026-02-14 21:43:41 +0100 <[exa]> (man, can we FFI to futhark?)
2026-02-14 21:43:03 +0100 <[exa]> probie: btw why not make a small FFI to a relatively portable C?
2026-02-14 21:38:35 +0100Pixi(~Pixi@user/pixi) (Quit: Leaving)
2026-02-14 21:38:17 +0100caubert(~caubert@user/caubert) (Ping timeout: 250 seconds)
2026-02-14 21:37:41 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-14 21:34:44 +0100 <tomsmeding> possibly, yes
2026-02-14 21:33:37 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-14 21:32:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-14 21:29:31 +0100pavonia(~user@user/siracusa) siracusa
2026-02-14 21:29:02 +0100 <probie> I wonder if it's the use of `read` instead of `unsafeRead`?
2026-02-14 21:28:52 +0100 <probie> It's not giving me SIMD instruction :'(
2026-02-14 21:26:38 +0100ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-02-14 21:25:54 +0100 <geekosaur> also I mentioned the settings file bvecause I saw a claim in backscroll that the correct llvm version wasn't on their PATH, which means a settings file edit to point to the correct one
2026-02-14 21:23:31 +0100 <geekosaur> there was a point where `opt` parameters changed and ghc didn't know how tgo call newer versions correctly
2026-02-14 21:23:07 +0100 <geekosaur> they can be pretty critical but I don't think it's critical for recent versions