[llvm] f5898f8 - [AArch64][GlobalISel] Make G_STORE <8 x s8> legal.
Amara Emerson via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 17 16:50:20 PDT 2020
Author: Amara Emerson
Date: 2020-09-17T16:42:18-07:00
New Revision: f5898f8c2def7a1897559a7454086243b7e9ebb6
URL: https://github.com/llvm/llvm-project/commit/f5898f8c2def7a1897559a7454086243b7e9ebb6
DIFF: https://github.com/llvm/llvm-project/commit/f5898f8c2def7a1897559a7454086243b7e9ebb6.diff
LOG: [AArch64][GlobalISel] Make G_STORE <8 x s8> legal.
Added:
Modified:
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
index 6e65e9250626..1dfae8d0ba7c 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
@@ -291,6 +291,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
{p0, p0, 64, 8},
{s128, p0, 128, 8},
{v16s8, p0, 128, 8},
+ {v8s8, p0, 64, 8},
{v4s16, p0, 64, 8},
{v8s16, p0, 128, 8},
{v2s32, p0, 64, 8},
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
index 504fb1a12b5d..61104c6e432e 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
@@ -1,59 +1,5 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
-# RUN: llc -O0 -march=aarch64 -run-pass=legalizer %s -o - | FileCheck %s
-
---- |
- target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
- target triple = "aarch64"
-
- define void @test_load() { ret void }
- define void @test_store() { ret void }
-
- define void @store_4xi16(<4 x i16> %v, <4 x i16>* %ptr) {
- store <4 x i16> %v, <4 x i16>* %ptr
- ret void
- }
-
- define void @store_4xi32(<4 x i32> %v, <4 x i32>* %ptr) {
- store <4 x i32> %v, <4 x i32>* %ptr
- ret void
- }
-
- define void @store_8xi16(<8 x i16> %v, <8 x i16>* %ptr) {
- store <8 x i16> %v, <8 x i16>* %ptr
- ret void
- }
-
- define void @store_16xi8(<16 x i8> %v, <16 x i8>* %ptr) {
- store <16 x i8> %v, <16 x i8>* %ptr
- ret void
- }
-
- define <4 x i16> @load_4xi16(<4 x i16>* %ptr) {
- %res = load <4 x i16>, <4 x i16>* %ptr
- ret <4 x i16> %res
- }
-
- define <4 x i32> @load_4xi32(<4 x i32>* %ptr) {
- %res = load <4 x i32>, <4 x i32>* %ptr
- ret <4 x i32> %res
- }
-
- define <8 x i16> @load_8xi16(<8 x i16>* %ptr) {
- %res = load <8 x i16>, <8 x i16>* %ptr
- ret <8 x i16> %res
- }
-
- define <16 x i8> @load_16xi8(<16 x i8>* %ptr) {
- %res = load <16 x i8>, <16 x i8>* %ptr
- ret <16 x i8> %res
- }
-
- define <8 x i8> @load_8xi8(<8 x i8>* %ptr) {
- %res = load <8 x i8>, <8 x i8>* %ptr
- ret <8 x i8> %res
- }
-
-...
+# RUN: llc -O0 -march=aarch64 -run-pass=legalizer -global-isel-abort=1 %s -o - | FileCheck %s
---
name: test_load
body: |
@@ -155,18 +101,18 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $d0, $x0
; CHECK-LABEL: name: store_4xi16
; CHECK: liveins: $d0, $x0
; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p0) :: (store 8 into %ir.ptr)
+ ; CHECK: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p0) :: (store 8)
; CHECK: RET_ReallyLR
%0:_(<4 x s16>) = COPY $d0
%1:_(p0) = COPY $x0
- G_STORE %0(<4 x s16>), %1(p0) :: (store 8 into %ir.ptr)
+ G_STORE %0(<4 x s16>), %1(p0) :: (store 8)
RET_ReallyLR
...
@@ -176,18 +122,18 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $q0, $x0
; CHECK-LABEL: name: store_4xi32
; CHECK: liveins: $q0, $x0
; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: G_STORE [[COPY]](<4 x s32>), [[COPY1]](p0) :: (store 16 into %ir.ptr)
+ ; CHECK: G_STORE [[COPY]](<4 x s32>), [[COPY1]](p0) :: (store 16)
; CHECK: RET_ReallyLR
%0:_(<4 x s32>) = COPY $q0
%1:_(p0) = COPY $x0
- G_STORE %0(<4 x s32>), %1(p0) :: (store 16 into %ir.ptr)
+ G_STORE %0(<4 x s32>), %1(p0) :: (store 16)
RET_ReallyLR
...
@@ -197,18 +143,18 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $q0, $x0
; CHECK-LABEL: name: store_8xi16
; CHECK: liveins: $q0, $x0
; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: G_STORE [[COPY]](<8 x s16>), [[COPY1]](p0) :: (store 16 into %ir.ptr)
+ ; CHECK: G_STORE [[COPY]](<8 x s16>), [[COPY1]](p0) :: (store 16)
; CHECK: RET_ReallyLR
%0:_(<8 x s16>) = COPY $q0
%1:_(p0) = COPY $x0
- G_STORE %0(<8 x s16>), %1(p0) :: (store 16 into %ir.ptr)
+ G_STORE %0(<8 x s16>), %1(p0) :: (store 16)
RET_ReallyLR
...
@@ -218,18 +164,18 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $q0, $x0
; CHECK-LABEL: name: store_16xi8
; CHECK: liveins: $q0, $x0
; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: G_STORE [[COPY]](<16 x s8>), [[COPY1]](p0) :: (store 16 into %ir.ptr)
+ ; CHECK: G_STORE [[COPY]](<16 x s8>), [[COPY1]](p0) :: (store 16)
; CHECK: RET_ReallyLR
%0:_(<16 x s8>) = COPY $q0
%1:_(p0) = COPY $x0
- G_STORE %0(<16 x s8>), %1(p0) :: (store 16 into %ir.ptr)
+ G_STORE %0(<16 x s8>), %1(p0) :: (store 16)
RET_ReallyLR
...
@@ -239,17 +185,17 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $x0
; CHECK-LABEL: name: load_4xi16
; CHECK: liveins: $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: [[LOAD:%[0-9]+]]:_(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load 8 from %ir.ptr)
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load 8)
; CHECK: $d0 = COPY [[LOAD]](<4 x s16>)
; CHECK: RET_ReallyLR implicit $d0
%0:_(p0) = COPY $x0
- %1:_(<4 x s16>) = G_LOAD %0(p0) :: (load 8 from %ir.ptr)
+ %1:_(<4 x s16>) = G_LOAD %0(p0) :: (load 8)
$d0 = COPY %1(<4 x s16>)
RET_ReallyLR implicit $d0
@@ -260,17 +206,17 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $x0
; CHECK-LABEL: name: load_4xi32
; CHECK: liveins: $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.ptr)
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load 16)
; CHECK: $q0 = COPY [[LOAD]](<4 x s32>)
; CHECK: RET_ReallyLR implicit $q0
%0:_(p0) = COPY $x0
- %1:_(<4 x s32>) = G_LOAD %0(p0) :: (load 16 from %ir.ptr)
+ %1:_(<4 x s32>) = G_LOAD %0(p0) :: (load 16)
$q0 = COPY %1(<4 x s32>)
RET_ReallyLR implicit $q0
@@ -281,17 +227,17 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $x0
; CHECK-LABEL: name: load_8xi16
; CHECK: liveins: $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.ptr)
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load 16)
; CHECK: $q0 = COPY [[LOAD]](<8 x s16>)
; CHECK: RET_ReallyLR implicit $q0
%0:_(p0) = COPY $x0
- %1:_(<8 x s16>) = G_LOAD %0(p0) :: (load 16 from %ir.ptr)
+ %1:_(<8 x s16>) = G_LOAD %0(p0) :: (load 16)
$q0 = COPY %1(<8 x s16>)
RET_ReallyLR implicit $q0
@@ -302,17 +248,17 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $x0
; CHECK-LABEL: name: load_16xi8
; CHECK: liveins: $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.ptr)
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load 16)
; CHECK: $q0 = COPY [[LOAD]](<16 x s8>)
; CHECK: RET_ReallyLR implicit $q0
%0:_(p0) = COPY $x0
- %1:_(<16 x s8>) = G_LOAD %0(p0) :: (load 16 from %ir.ptr)
+ %1:_(<16 x s8>) = G_LOAD %0(p0) :: (load 16)
$q0 = COPY %1(<16 x s8>)
RET_ReallyLR implicit $q0
@@ -323,17 +269,36 @@ alignment: 4
tracksRegLiveness: true
machineFunctionInfo: {}
body: |
- bb.1 (%ir-block.0):
+ bb.1:
liveins: $x0
; CHECK-LABEL: name: load_8xi8
; CHECK: liveins: $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
- ; CHECK: [[LOAD:%[0-9]+]]:_(<8 x s8>) = G_LOAD [[COPY]](p0) :: (load 8 from %ir.ptr)
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<8 x s8>) = G_LOAD [[COPY]](p0) :: (load 8)
; CHECK: $d0 = COPY [[LOAD]](<8 x s8>)
; CHECK: RET_ReallyLR implicit $d0
%0:_(p0) = COPY $x0
- %1:_(<8 x s8>) = G_LOAD %0(p0) :: (load 8 from %ir.ptr)
+ %1:_(<8 x s8>) = G_LOAD %0(p0) :: (load 8)
$d0 = COPY %1(<8 x s8>)
RET_ReallyLR implicit $d0
...
+---
+name: store_8xi8
+alignment: 4
+tracksRegLiveness: true
+machineFunctionInfo: {}
+body: |
+ bb.1:
+ liveins: $x0, $d0
+ ; CHECK-LABEL: name: store_8xi8
+ ; CHECK: liveins: $x0, $d0
+ ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d0
+ ; CHECK: G_STORE [[COPY1]](<8 x s8>), [[COPY]](p0) :: (store 8)
+ ; CHECK: RET_ReallyLR
+ %0:_(p0) = COPY $x0
+ %1:_(<8 x s8>) = COPY $d0
+ G_STORE %1(<8 x s8>), %0(p0) :: (store 8)
+ RET_ReallyLR
+...
More information about the llvm-commits
mailing list