00:32 gfxstrand[d]: 🤷🏻♀️
00:32 gfxstrand[d]: Compilers are hard and you'll fuss yourself silly if you spend too much time on those details.
00:37 karolherbst[d]: yo, but it's a cycle per instruction 😄
00:38 karolherbst[d]: but the problem with iadd3 is a bit more nuanced that that, because either src0 or src1 can be negated, but not both
00:40 karolherbst[d]: ehh wait..
00:40 karolherbst[d]: can the source on imad be negated?
00:45 karolherbst[d]: nevermind then
16:20 zmike[d]: sounds like umad
19:33 gfxstrand[d]: The only integer ALU that can take a negate modifier on Volta+ is `iadd3`
19:33 gfxstrand[d]: A bunch of them can on Maxwell/Pascal
19:35 karolherbst[d]: ahh..
19:45 gfxstrand[d]: it's kinda annoying
19:49 karolherbst[d]: yeah...
19:49 karolherbst[d]: I was kinda under the impression that they supported negation, but not absolute, but it looks like they pretty much removed it all
20:39 gfxstrand[d]: Yeah
20:39 gfxstrand[d]: Okay, I think I have buffer views EDB-ready
20:51 gfxstrand[d]: Once again plugging in a Maxwell just so I can get fault addresses. 🙄
20:55 airlied[d]: does turning off gsp not work?
20:55 airlied[d]: or do you only have the ampere that don't do so well
20:56 airlied[d]: once we get to move to a newer firmware we might get them back
21:09 gfxstrand[d]: I usually test on Ampere
21:09 gfxstrand[d]: I could swap in a Turing
21:10 gfxstrand[d]: gfxstrand[d]: Okay, this is really annoying. `suld` reads element 0 in the OOB case. It doesn't do anything with it but it does read it.
21:11 karolherbst[d]: you should be able to change that behavior
21:11 gfxstrand[d]: oh?
21:11 karolherbst[d]: there is a `.ign` flag to ignore an OOB access
21:12 karolherbst[d]: by default it uses the nearest value
21:12 karolherbst[d]: (there is also .trap so it traps, but...)
21:12 gfxstrand[d]: so `.ign` still does the bounds check but does nothing in the OOB case?
21:13 karolherbst[d]: it returns a null texel data just like TLD
21:13 gfxstrand[d]: Why isn't that the default?!?
21:13 karolherbst[d]: dunno 🙂
21:13 gfxstrand[d]: Looks like IGN is on sust, not suld
21:14 karolherbst[d]: but what does "default" mean with an instruction anyway
21:14 karolherbst[d]: mhh
21:14 gfxstrand[d]: There's ZERO, TRAP, and SDCL
21:14 karolherbst[d]: what ISA version?
21:15 gfxstrand[d]: Wait, no, I'm setting it
21:15 gfxstrand[d]: `suld.p.1d_buffer.cv.ign r4, [r3], r2 // delay=6 wr:0`
21:15 gfxstrand[d]: That's from the disassembler
21:15 karolherbst[d]: okay
21:15 gfxstrand[d]: And it still touches memory
21:15 gfxstrand[d]: Enough that it faults
21:16 karolherbst[d]: maybe you need to bind a null texel thing?
21:16 gfxstrand[d]: I can work around it with a null descriptor. It's just annoying
21:17 karolherbst[d]: yeah.. no idea how it behaves specifically
21:18 karolherbst[d]: mhh wait a sec.. I think I found a bit more
21:18 karolherbst[d]: mhhhh..
21:18 karolherbst[d]: it appears to depend on the operation even
21:18 karolherbst[d]: .d will return 0
21:18 karolherbst[d]: .p will return null texel data
21:57 gfxstrand[d]: .p is what I want. The problem is the fault
21:57 gfxstrand[d]: But I'm also not convinced I don't have a bug elsewhere