]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
x86: Cast stride to __PTRDIFF_TYPE__ for AMX-MOVRS intrinsics. [PR122119]
authorHu, Lin1 <lin1.hu@intel.com>
Fri, 10 Oct 2025 06:30:19 +0000 (14:30 +0800)
committerHu, Lin1 <lin1.hu@intel.com>
Fri, 17 Oct 2025 03:29:59 +0000 (11:29 +0800)
On 64-bit windows, long can't be used, because it is 32 bits. Use
__PTRDIFF_TYPE__ instead of long.

gcc/ChangeLog:

PR target/122119
* config/i386/amxmovrsintrin.h
(_tile_loaddrs_internal): Use __PTRDIFF_TYPE__ instead of long.
(_tile_loaddrst1_internal): Ditto.
(_tile_2rpntlvwz0rs_internal): Ditto.
(_tile_2rpntlvwz0rst1_internal): Ditto.
(_tile_2rpntlvwz1rs_internal): Ditto.
(_tile_2rpntlvwz1rst1_internal): Ditto.

gcc/config/i386/amxmovrsintrin.h

index 97969f894ff44ecc039be6df48899a71bc6d7879..2bc9f127138df72a849f4bb9cbcd69d44c27407e 100644 (file)
 __asm__ volatile                                         \
   ("{tileloaddrs\t(%0,%1,1), %%tmm"#tdst                 \
      "|tileloaddrs\t%%tmm"#tdst", [%0+%1*1]}"            \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_loaddrst1_internal(tdst, base, stride)     \
 __asm__ volatile                                         \
   ("{tileloaddrst1\t(%0,%1,1), %%tmm"#tdst               \
      "|tileloaddrst1\t%%tmm"#tdst", [%0+%1*1]}"                  \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_loaddrs(tdst, base, stride)                \
   _tile_loaddrs_internal(tdst, base, stride)
@@ -69,25 +69,25 @@ __asm__ volatile                                      \
   __asm__ volatile                                       \
   ("{t2rpntlvwz0rs\t(%0,%1,1), %%tmm"#tdst               \
      "|t2rpntlvwz0rs\t%%tmm"#tdst", [%0+%1*1]}"          \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_2rpntlvwz0rst1_internal(tdst, base, stride) \
   __asm__ volatile                                       \
   ("{t2rpntlvwz0rst1\t(%0,%1,1), %%tmm"#tdst             \
      "|t2rpntlvwz0rst1\t%%tmm"#tdst", [%0+%1*1]}"        \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_2rpntlvwz1rs_internal(tdst, base, stride)          \
   __asm__ volatile                                       \
   ("{t2rpntlvwz1rs\t(%0,%1,1), %%tmm"#tdst               \
      "|t2rpntlvwz1rs\t%%tmm"#tdst", [%0+%1*1]}"                  \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_2rpntlvwz1rst1_internal(tdst, base, stride) \
   __asm__ volatile                                       \
   ("{t2rpntlvwz1rst1\t(%0,%1,1), %%tmm"#tdst             \
      "|t2rpntlvwz1rst1\t%%tmm"#tdst", [%0+%1*1]}"        \
-   :: "r" ((const void*) (base)), "r" ((long) (stride)))
+   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
 
 #define _tile_2rpntlvwz0rs(tdst, base, stride)           \
   _tile_2rpntlvwz0rs_internal(tdst, base, stride)