- Replace identity softmax with online softmax (row_max, exp2 scaling, P store) - Add row_sum accumulation from P values - After softmax loop, normalize O in TMEM by 1/row_sum using TMEM load/modify/store - Then epilogue writes normalized O from TMEM to GMEM - Reference test uses softmax(Q@K^T/sqrt(d))@V