https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114098

            Bug ID: 114098
           Summary: _tile_loadconfig doesn't work
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: crazylht at gmail dot com
  Target Milestone: ---
            Target: x86-64

[hjl@gnu-cfl-3 amx-1]$ cat foo.c
#include <stdint.h>
#include <x86intrin.h>

#define MAX_ROWS 16
#define MAX_COLS 64
#define MAX 1024
#define STRIDE 64

typedef struct __tile_config
{
  uint8_t palette_id;
  uint8_t start_row;
  uint8_t reserved_0[14];
  uint16_t colsb[16];
  uint8_t rows[16];
} __tilecfg;


extern void bar (__tilecfg *tileinfo);

/* Initialize tile config */
static void
init_tile_config (__tilecfg *tileinfo)
{
  int i;
  tileinfo->palette_id = 1;
  tileinfo->start_row = 0;

  for (i = 0; i < 1; ++i)
  {
    tileinfo->colsb[i] = MAX_ROWS;
    tileinfo->rows[i] =  MAX_ROWS;
  }

  for (i = 1; i < 4; ++i)
  {
    tileinfo->colsb[i] = MAX_COLS;
    tileinfo->rows[i] =  MAX_ROWS;
  }

  _tile_loadconfig (tileinfo);
}

void
enable_amx (void)
{
  __tilecfg tile_data = {0};
  init_tile_config (&tile_data);
}
[hjl@gnu-cfl-3 amx-1]$ gcc -S -O2 -mamx-tile foo.c
[hjl@gnu-cfl-3 amx-1]$ cat foo.s
        .file   "foo.c"
        .text
        .p2align 4
        .globl  enable_amx
        .type   enable_amx, @function
enable_amx:
.LFB6615:
        .cfi_startproc
        movl    $1, %eax <<<<<<<<<<<<< tile_data isn't properly initialized.
        movw    %ax, -72(%rsp)
#APP
# 42 "/usr/lib/gcc/x86_64-redhat-linux/13/include/amxtileintrin.h" 1
        ldtilecfg       -72(%rsp)
# 0 "" 2
#NO_APP
        ret
        .cfi_endproc
.LFE6615:
        .size   enable_amx, .-enable_amx
        .ident  "GCC: (GNU) 13.2.1 20231205 (Red Hat 13.2.1-6)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-3 amx-1]$

Reply via email to