|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: opt -p lower-matrix-intrinsics -S %s | FileCheck %s |
| 3 | + |
| 4 | +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" |
| 5 | + |
| 6 | +define <8 x float> @transpose_constant_fold_fadd_AT_BT() { |
| 7 | +; CHECK-LABEL: define <8 x float> @transpose_constant_fold_fadd_AT_BT() { |
| 8 | +; CHECK-NEXT: [[ENTRY:.*:]] |
| 9 | +; CHECK-NEXT: ret <8 x float> splat (float 2.000000e+00) |
| 10 | +; |
| 11 | +entry: |
| 12 | + %t = tail call <8 x float> @llvm.matrix.transpose.v8f32(<8 x float> splat (float 1.0), i32 8, i32 1) |
| 13 | + %f = fadd <8 x float> %t, %t |
| 14 | + ret <8 x float> %f |
| 15 | +} |
| 16 | + |
| 17 | +define <8 x float> @transpose_constant_fold_fmul_A_k() { |
| 18 | +; CHECK-LABEL: define <8 x float> @transpose_constant_fold_fmul_A_k() { |
| 19 | +; CHECK-NEXT: [[ENTRY:.*:]] |
| 20 | +; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector <8 x float> splat (float 3.000000e+00), <8 x float> poison, <8 x i32> zeroinitializer |
| 21 | +; CHECK-NEXT: [[SPLIT:%.*]] = shufflevector <8 x float> [[SPLAT]], <8 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
| 22 | +; CHECK-NEXT: [[SPLIT1:%.*]] = shufflevector <8 x float> [[SPLAT]], <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7> |
| 23 | +; CHECK-NEXT: [[TMP0:%.*]] = fmul <4 x float> splat (float 1.000000e+00), [[SPLIT]] |
| 24 | +; CHECK-NEXT: [[TMP1:%.*]] = fmul <4 x float> splat (float 1.000000e+00), [[SPLIT1]] |
| 25 | +; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x float> [[TMP0]], <4 x float> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> |
| 26 | +; CHECK-NEXT: ret <8 x float> [[TMP2]] |
| 27 | +; |
| 28 | +entry: |
| 29 | + %t.1 = tail call <8 x float> @llvm.matrix.transpose.v8f32(<8 x float> splat (float 1.0), i32 4, i32 2) |
| 30 | + %splat = shufflevector <8 x float> splat (float 3.0), <8 x float> poison, <8 x i32> zeroinitializer |
| 31 | + %m = fmul <8 x float> %t.1, %splat |
| 32 | + %t.2 = tail call <8 x float> @llvm.matrix.transpose.v8f32(<8 x float> %m, i32 2, i32 4) |
| 33 | + ret <8 x float> %t.2 |
| 34 | +} |
| 35 | + |
| 36 | +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) |
| 37 | +declare <8 x float> @llvm.matrix.transpose.v8f32(<8 x float>, i32 immarg, i32 immarg) #0 |
| 38 | + |
| 39 | +attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } |
0 commit comments