08:02fdobridge: <karolherbst🐧🦀> I need KHR_shader_float_controls in nvk now 😄
18:36benjaminl: alright I have a weird sm50 puzzle
18:38benjaminl: this works: `SHF.L.W R0, 0x2, RZ`, and this works: `MOV32I R1, 0x2; SHL.W R1, R2, R1`, but this does not: `MOV32I R1, 0x2; SHF.L.W R0, R0, R1, Rz`
18:39benjaminl: the last version writes 0 to R0, no matter what the initial contents are
18:40benjaminl: NAK always emits `SHF.L.W` with `RZ` in the last src, so I'm thinking of just sticking a translation to `SHL.W` in the SM50 legalization pass for now
19:02karolherbst: benjaminl: might be that it works a bit different on sm50
19:05benjaminl: yeah, I've validated the encoding I
19:05benjaminl: *I'm using with nvdisasm
19:06benjaminl: but haven't gotten ptxas to emit the instruction with register arguments
19:09fdobridge: <mhenning> nvdisasm sometimes disassembles things that the hardware ignores
19:09fdobridge: <mhenning> src/nouveau/codegen/nv50_ir_lowering_nvc0.cpp line 268 has the old compiler's lowering of 64-bit shifts, if that's useful
19:10fdobridge: <mhenning> that lowering is used for kepler through pascal. volta+ can't use the same lowering (I think because instruction semantics are different?)
19:11benjaminl: ooh, that's a good reference, thanks!
19:12benjaminl: also, just got ptxas to emit the instruction with the same encoding (the only difference is register assignments)
19:14benjaminl: does ptxas also sometimes emit non-working code?
19:21fdobridge: <karolherbst🐧🦀> yes
19:21fdobridge: <karolherbst🐧🦀> but only if you use deprecated features which might just not work anymore
19:31fdobridge: <mhenning> I just realized the old compiler is a little confusing here - what it calls OP_SHL is emitted as SHF.L if the source is 64-bits. See src/nouveau/codegen/nv50_ir_emit_gm107.cpp line 3559
19:34fdobridge: <mhenning> also if you want to just get things working for now, you could turn on the nir lowering, which uses normal shifts but will be a little less efficient