Logs: liberachat/#haskell
| 2026-02-14 17:25:16 | → | Fijxu_ joins (~Fijxu@user/fijxu) |
| 2026-02-14 17:26:58 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 17:27:11 | × | Fijxu quits (~Fijxu@user/fijxu) (Ping timeout: 250 seconds) |
| 2026-02-14 17:27:37 | × | tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 250 seconds) |
| 2026-02-14 17:28:09 | → | tabaqui joins (~tabaqui@167.71.80.236) |
| 2026-02-14 17:31:42 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-14 17:33:41 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-02-14 17:41:05 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2026-02-14 17:41:22 | → | spew joins (~spew@user/spew) |
| 2026-02-14 17:43:12 | × | Pozyomka quits (~pyon@user/pyon) (Quit: bbl) |
| 2026-02-14 17:47:10 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 17:51:59 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-14 17:53:23 | <monochrom> | I want 3/2 to be rational, or polymorphic over fields. |
| 2026-02-14 17:54:21 | <monochrom> | Actually put it this way: polymorphic over fields, ideally. (Pun!) |
| 2026-02-14 17:56:56 | <fgarcia> | would import Data.Ratio work? then 3 % 2 |
| 2026-02-14 17:57:29 | <monochrom> | I am too lazy to import that. I use "3/2 :: Rational". :) |
| 2026-02-14 18:03:45 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 18:08:47 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-02-14 18:09:15 | × | caubert quits (~caubert@user/caubert) (Ping timeout: 265 seconds) |
| 2026-02-14 18:10:13 | × | mulk quits (~mulk@pd95140e6.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 2026-02-14 18:10:48 | → | mulk joins (~mulk@p5b2dcbcc.dip0.t-ipconnect.de) |
| 2026-02-14 18:20:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 18:22:37 | → | caubert joins (~caubert@user/caubert) |
| 2026-02-14 18:25:41 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-02-14 18:26:09 | × | tromp quits (~textual@2001:1c00:3487:1b00:701a:bd9c:28fd:d022) (Ping timeout: 245 seconds) |
| 2026-02-14 18:30:02 | → | tromp joins (~textual@2001:1c00:3487:1b00:49b4:8838:6b5e:2a21) |
| 2026-02-14 18:36:36 | → | Pozyomka joins (~pyon@user/pyon) |
| 2026-02-14 18:36:53 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 18:39:04 | → | qqq joins (~qqq@185.54.22.240) |
| 2026-02-14 18:39:39 | × | housemate quits (~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 2026-02-14 18:40:22 | → | prdak joins (~Thunderbi@user/prdak) |
| 2026-02-14 18:41:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-14 18:44:44 | × | prdak quits (~Thunderbi@user/prdak) (Ping timeout: 252 seconds) |
| 2026-02-14 18:45:39 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.8.1) |
| 2026-02-14 18:48:06 | × | tromp quits (~textual@2001:1c00:3487:1b00:49b4:8838:6b5e:2a21) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-14 18:48:25 | → | housemate joins (~housemate@202.7.248.67) |
| 2026-02-14 18:52:44 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 18:57:56 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-14 19:01:50 | → | tromp joins (~textual@2001:1c00:3487:1b00:49b4:8838:6b5e:2a21) |
| 2026-02-14 19:08:37 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 19:10:02 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 2026-02-14 19:10:19 | × | caubert quits (~caubert@user/caubert) (Ping timeout: 250 seconds) |
| 2026-02-14 19:15:01 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-14 19:18:24 | × | emmanuelux quits (~em@user/emmanuelux) (Ping timeout: 252 seconds) |
| 2026-02-14 19:22:28 | → | caubert joins (~caubert@user/caubert) |
| 2026-02-14 19:23:13 | → | emmanuelux joins (~em@user/emmanuelux) |
| 2026-02-14 19:27:27 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 2026-02-14 19:27:47 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 19:32:02 | × | target_i quits (~target_i@user/target-i/x-6023099) (Ping timeout: 252 seconds) |
| 2026-02-14 19:32:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-14 19:36:19 | × | traxex quits (traxex@user/traxex) (Ping timeout: 264 seconds) |
| 2026-02-14 19:38:06 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 2026-02-14 19:38:28 | <probie> | Dumb question: what's the correct way to do `x += y` with a mutable unboxed vector such that it'll generate SIMD instructions (when using the LLVM backend)? |
| 2026-02-14 19:43:55 | <probie> | If I just do something like `V.imapM_ (\ix a -> (a +) <$> V.read y ix) x` will it work? |
| 2026-02-14 19:43:56 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 2026-02-14 19:43:58 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 19:44:54 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds) |
| 2026-02-14 19:45:19 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 2026-02-14 19:45:55 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 264 seconds) |
| 2026-02-14 19:46:15 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 2026-02-14 19:46:15 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 2026-02-14 19:46:39 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 2026-02-14 19:48:09 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2026-02-14 19:49:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-14 19:49:35 | <tomsmeding> | probie: if you're talking about LLVM, then the only real answer is to try it :p |
| 2026-02-14 19:49:56 | <tomsmeding> | GHC will not generate SIMD instructions here, but if the work is suitably arranged, LLVM will do it |
| 2026-02-14 19:50:15 | <tomsmeding> | will the work be suitably arranged? That depends on the vagaries of the code generator, as well as the implementation of V.imapM_ |
| 2026-02-14 19:53:27 | <tomsmeding> | I wonder if the maintainer of the playground could be bribed to make -fllvm work there. |
| 2026-02-14 19:55:11 | <int-e> | subtle |
| 2026-02-14 19:56:56 | <tomsmeding> | seems LLVM 12 will do for 9.0 up to and including 9.8 |
| 2026-02-14 19:57:35 | <tomsmeding> | and 13-17 for 9.10 and higher |
| 2026-02-14 19:58:30 | <tomsmeding> | no that's not quite right |
| 2026-02-14 20:00:09 | <int-e> | Hmm, https://minoki.github.io/posts/2025-01-13-ghc-simd.html looks like a decent overview of the state of the SIMD primitives in GHC? |
| 2026-02-14 20:00:37 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-14 20:00:47 | <int-e> | `vector` makes at least one SIMD-unfriendly design choice though: `drop` is O(1) so there's no alignment guaranteee beyond the primitive data type for unboxed vectors. |
| 2026-02-14 20:04:33 | <probie> | now how do I tell GHC where my llvm is... |
| 2026-02-14 20:04:52 | <tomsmeding> | it seems it will just look for `opt` in $PATH |
| 2026-02-14 20:05:01 | <tomsmeding> | though perhaps it looks for llvm-config first |
| 2026-02-14 20:05:06 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 2026-02-14 20:05:16 | <tomsmeding> | generally one tells programs of LLVM by ensuring its llvm-config executable is in $PATH |
| 2026-02-14 20:05:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-14 20:05:45 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 2026-02-14 20:06:09 | → | infinity0 joins (~infinity0@pwned.gg) |
| 2026-02-14 20:06:21 | <probie> | the problem is that the `opt` there is the wrong version. I'm just going to brute force my way through and make symlinks to the right ones in a folder and the stick that folder on my path |
| 2026-02-14 20:06:54 | <tomsmeding> | probie: https://git.tomsmeding.com/pathenv/tree/pathenv ? |
| 2026-02-14 20:07:44 | <probie> | It's good to know I'm not the only one to have that idea |
| 2026-02-14 20:09:53 | <int-e> | There are half a dozen -pgm* flags for the various llvm tools ghc might use. -pgmlo is for `opt`. |
| 2026-02-14 20:10:26 | <int-e> | (And I see no indication that it can interrogate llvm-config) |
| 2026-02-14 20:11:04 | <tomsmeding> | int-e: https://play.haskell.org/saved/yNy86HlS this output suggest it does _something_ |
| 2026-02-14 20:11:14 | <tomsmeding> | apart from just calling `opt`, that is |
| 2026-02-14 20:12:11 | × | caubert quits (~caubert@user/caubert) (Ping timeout: 252 seconds) |
| 2026-02-14 20:13:04 | <tomsmeding> | this seems to be the compatibility matrix https://paste.tomsmeding.com/NJhIVIyh |
| 2026-02-14 20:14:11 | <int-e> | tomsmeding: AFAICS it tries llc -version (or whatever -pgmlc is) |
| 2026-02-14 20:14:18 | <tomsmeding> | lame |
| 2026-02-14 20:14:58 | <geekosaur> | I think you can specify a path in the settings file? |
| 2026-02-14 20:15:13 | → | caubert joins (~caubert@user/caubert) |
| 2026-02-14 20:15:14 | <geekosaur> | $(ghc --print-libdir)/settings |
| 2026-02-14 20:15:32 | <geekosaur> | "LLVM opt command" (and similar for llc) |
| 2026-02-14 20:16:26 | <int-e> | tomsmeding: https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/SysTools/Tasks.hs#L341-350 (and beyond) |
| 2026-02-14 20:16:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
All times are in UTC.