[llvm] [AMDGPU] Enable vectorization of i8 values. (PR #134934)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu May 1 09:37:08 PDT 2025
================
@@ -0,0 +1,377 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx90a < %s | FileCheck %s --check-prefixes=GFX90A
+
+
+define void @loads_i1(i32 %arg) {
+; GFX90A-LABEL: 'loads_i1'
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = load i1, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %2 = load <2 x i1>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %3 = load <4 x i1>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
+;
+ load i1, ptr poison
+ load <2 x i1>, ptr poison
+ load <4 x i1>, ptr poison
+
+ ret void
+}
+
+define void @loads_i8(i32 %arg) {
+; GFX90A-LABEL: 'loads_i8'
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = load i8, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %2 = load <2 x i8>, ptr poison, align 2
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %3 = load <4 x i8>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %4 = load i8, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %5 = load <2 x i8>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %6 = load <4 x i8>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %7 = load i8, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %8 = load <2 x i8>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %9 = load <4 x i8>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %10 = load i8, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %11 = load <2 x i8>, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %12 = load <4 x i8>, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
+;
+ load i8, ptr poison
+ load <2 x i8>, ptr poison
+ load <4 x i8>, ptr poison
+
+ load i8, ptr poison, align 1
+ load <2 x i8>, ptr poison, align 1
+ load <4 x i8>, ptr poison, align 1
+
+ load i8, ptr poison, align 4
+ load <2 x i8>, ptr poison, align 4
+ load <4 x i8>, ptr poison, align 4
+
+ load i8, ptr poison, align 8
+ load <2 x i8>, ptr poison, align 8
+ load <4 x i8>, ptr poison, align 8
+
+ ret void
+}
+
+define void @loads_i16(i32 %arg) {
+; GFX90A-LABEL: 'loads_i16'
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = load i16, ptr poison, align 2
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %2 = load <2 x i16>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %3 = load <4 x i16>, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %4 = load i16, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %5 = load <2 x i16>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %6 = load <4 x i16>, ptr poison, align 1
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %7 = load i16, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %8 = load <2 x i16>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %9 = load <4 x i16>, ptr poison, align 4
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %10 = load i16, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %11 = load <2 x i16>, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %12 = load <4 x i16>, ptr poison, align 8
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %13 = load i16, ptr poison, align 16
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %14 = load <2 x i16>, ptr poison, align 16
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %15 = load <4 x i16>, ptr poison, align 16
+; GFX90A-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
+;
+ load i16, ptr poison
+ load <2 x i16>, ptr poison
+ load <4 x i16>, ptr poison
+
+ load i16, ptr poison, align 1
+ load <2 x i16>, ptr poison, align 1
+ load <4 x i16>, ptr poison, align 1
+
+ load i16, ptr poison, align 4
+ load <2 x i16>, ptr poison, align 4
+ load <4 x i16>, ptr poison, align 4
+
+ load i16, ptr poison, align 8
+ load <2 x i16>, ptr poison, align 8
+ load <4 x i16>, ptr poison, align 8
+
+ load i16, ptr poison, align 16
----------------
arsenm wrote:
Not much reason to test a way over aligned scalar
https://github.com/llvm/llvm-project/pull/134934
More information about the llvm-commits
mailing list