def METHOD_NAME(knl):
    knl = lp.tag_inames(knl, dict(i="l.0", j="l.1", e="g.0"))
    knl = lp.add_prefetch(knl, "D[:,:]", fetch_outer_inames="e",
            default_tag="l.auto")
    knl = lp.add_prefetch(knl, "u[e, :, :]", default_tag="l.auto")
    knl = lp.precompute(knl, "ur(m,j)", ["m", "j"], default_tag="l.auto")
    knl = lp.precompute(knl, "us(i,m)", ["i", "m"], default_tag="l.auto")
    # TODO this adds `a` and `b` to domains, which leads to unused inames
    knl = lp.precompute(knl, "Gux(m,j)", ["m", "j"], default_tag="l.auto")
    knl = lp.precompute(knl, "Guy(i,m)", ["i", "m"], default_tag="l.auto")
    knl = lp.add_prefetch(knl, "G$x[:,e,:,:]", default_tag="l.auto")
    knl = lp.add_prefetch(knl, "G$y[:,e,:,:]", default_tag="l.auto")
    knl = lp.tag_inames(knl, dict(o="unr"))
    knl = lp.tag_inames(knl, dict(m="unr"))
    knl = lp.set_instruction_priority(knl, "id:D_fetch", 5)
    print(knl)
    return knl