[PATCH] D138588: [AArch64][SME]: Scalarize masked gather/scatter in streaming mode
Sander de Smalen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 30 06:56:03 PST 2022
sdesmalen added inline comments.
================
Comment at: llvm/test/Transforms/ScalarizeMaskedMemIntrin/AArch64/expand-masked-gather.ll:1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -enable-new-pm=0 -S %s -scalarize-masked-mem-intrin -mtriple=aarch64-linux-gnu -mattr=+sve -force-streaming-compatible-sve | FileCheck %s
----------------
Is it worth moving both tests to a file called `streaming-compatible-expand-masked-gather-scatter.ll` ?
================
Comment at: llvm/test/Transforms/ScalarizeMaskedMemIntrin/AArch64/expand-masked-gather.ll:33-64
define <2 x i32> @scalarize_v2i32_ones_mask(<2 x i32*> %p, <2 x i32> %passthru) {
; CHECK-LABEL: @scalarize_v2i32_ones_mask(
-; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0i32(<2 x i32*> [[P:%.*]], i32 8, <2 x i1> <i1 true, i1 true>, <2 x i32> [[PASSTHRU:%.*]])
-; CHECK-NEXT: ret <2 x i32> [[RET]]
+; CHECK-NEXT: [[PTR0:%.*]] = extractelement <2 x i32*> [[P:%.*]], i64 0
+; CHECK-NEXT: [[LOAD0:%.*]] = load i32, i32* [[PTR0]], align 8
+; CHECK-NEXT: [[RES0:%.*]] = insertelement <2 x i32> [[PASSTHRU:%.*]], i32 [[LOAD0]], i64 0
+; CHECK-NEXT: [[PTR1:%.*]] = extractelement <2 x i32*> [[P]], i64 1
+; CHECK-NEXT: [[LOAD1:%.*]] = load i32, i32* [[PTR1]], align 8
----------------
These tests don't add much value in testing the expansion of the intrinsic with the code you've written, so can just as well be removed.
================
Comment at: llvm/test/Transforms/ScalarizeMaskedMemIntrin/AArch64/expand-masked-scatter.ll:4
define void @scalarize_v2i64(<2 x i64*> %p, <2 x i1> %mask, <2 x i64> %value) {
; CHECK-LABEL: @scalarize_v2i64(
----------------
can you use opaque pointers, so `<2 x ptr>` ?
================
Comment at: llvm/test/Transforms/ScalarizeMaskedMemIntrin/AArch64/expand-masked-scatter.ll:31-62
define void @scalarize_v2i64_ones_mask(<2 x i64*> %p, <2 x i64> %value) {
; CHECK-LABEL: @scalarize_v2i64_ones_mask(
-; CHECK-NEXT: call void @llvm.masked.scatter.v2i64.v2p0i64(<2 x i64> [[VALUE:%.*]], <2 x i64*> [[P:%.*]], i32 8, <2 x i1> <i1 true, i1 true>)
+; CHECK-NEXT: [[ELT0:%.*]] = extractelement <2 x i64> [[VALUE:%.*]], i64 0
+; CHECK-NEXT: [[PTR0:%.*]] = extractelement <2 x i64*> [[P:%.*]], i64 0
+; CHECK-NEXT: store i64 [[ELT0]], i64* [[PTR0]], align 8
+; CHECK-NEXT: [[ELT1:%.*]] = extractelement <2 x i64> [[VALUE]], i64 1
+; CHECK-NEXT: [[PTR1:%.*]] = extractelement <2 x i64*> [[P]], i64 1
----------------
These tests don't add much value in testing the expansion of the intrinsic with the code you've written, so can just as well be removed.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138588/new/
https://reviews.llvm.org/D138588
More information about the llvm-commits
mailing list