pan/bi: Fix spilling on Valhall
authorAlyssa Rosenzweig <alyssa@collabora.com>
Tue, 21 Dec 2021 22:06:05 +0000 (17:06 -0500)
committerMarge Bot <emma+marge@anholt.net>
Thu, 7 Apr 2022 14:20:45 +0000 (14:20 +0000)
We need a slightly different idiom on Valhall, since the segment modifiers no
longer exist but we now have an immediate offset.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15793>

src/panfrost/bifrost/bi_ra.c

index b5ba87ba5936a8fe0521187b546142cf12cc49c7..8b14c0ec79a9ddc08e8341fea465dbe0597eac2e 100644 (file)
@@ -479,12 +479,18 @@ bi_count_read_index(bi_instr *I, bi_index index)
  * for the target, so the spill/fill code becomes architecture-independent.
  */
 
+static bi_index
+bi_tls_ptr(bool hi)
+{
+        return bi_fau(BIR_FAU_TLS_PTR, hi);
+}
+
 static bi_instr *
 bi_load_tl(bi_builder *b, unsigned bits, bi_index src, unsigned offset)
 {
         if (b->shader->arch >= 9) {
-                return bi_load_to(b, bits, src, va_zero_lut(), va_zero_lut(),
-                                  BI_SEG_TL, offset);
+                return bi_load_to(b, bits, src, bi_tls_ptr(false),
+                                  bi_tls_ptr(true), BI_SEG_TL, offset);
         } else {
                 return bi_load_to(b, bits, src, bi_imm_u32(offset), bi_zero(),
                                   BI_SEG_TL, 0);
@@ -495,7 +501,7 @@ static void
 bi_store_tl(bi_builder *b, unsigned bits, bi_index src, unsigned offset)
 {
         if (b->shader->arch >= 9) {
-                bi_store(b, bits, src, va_zero_lut(), va_zero_lut(), BI_SEG_TL, offset);
+                bi_store(b, bits, src, bi_tls_ptr(false), bi_tls_ptr(true), BI_SEG_TL, offset);
         } else {
                 bi_store(b, bits, src, bi_imm_u32(offset), bi_zero(), BI_SEG_TL, 0);
         }