[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