diff options
| author | Quentin Colombet <qcolombet@apple.com> | 2016-10-11 00:21:08 +0000 | 
|---|---|---|
| committer | Quentin Colombet <qcolombet@apple.com> | 2016-10-11 00:21:08 +0000 | 
| commit | d3126d5fb4f918cc738dac55f71768ad4523957d (patch) | |
| tree | cea74b0872fad768961396e54c53c226b7329694 | |
| parent | 8af4988f35e0e8fbd1096f785904af9a94116ef8 (diff) | |
| download | bcm5719-llvm-d3126d5fb4f918cc738dac55f71768ad4523957d.tar.gz bcm5719-llvm-d3126d5fb4f918cc738dac55f71768ad4523957d.zip  | |
[AArch64][MachineLegalizer] Mark v2s32 G_LOAD as legal.
Actually every 64-bit loads are legal, but right now the API does not
offer a simple way to express that.
llvm-svn: 283829
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir | 4 | 
2 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp index f35fd35b7bb..f59804d3853 100644 --- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp @@ -76,7 +76,7 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {    setAction({G_FREM, s64}, Libcall);    for (auto MemOp : {G_LOAD, G_STORE}) { -    for (auto Ty : {s8, s16, s32, s64, p0}) +    for (auto Ty : {s8, s16, s32, s64, p0, v2s32})        setAction({MemOp, Ty}, Legal);      setAction({MemOp, s1}, WidenScalar); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir index 9b343057c70..138435765e4 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir @@ -23,6 +23,7 @@ registers:    - { id: 4, class: _ }    - { id: 5, class: _ }    - { id: 6, class: _ } +  - { id: 7, class: _ }  body: |    bb.0.entry:      liveins: %x0, %x1, %x2, %x3 @@ -47,6 +48,9 @@ body: |      ; CHECK: %6(p0) = G_LOAD %0(p0) :: (load 8 from %ir.addr)      %6(p0) = G_LOAD %0(p0) :: (load 8 from %ir.addr) + +    ; CHECK: %7(<2 x s32>) = G_LOAD %0(p0) :: (load 8 from %ir.addr) +    %7(<2 x s32>) = G_LOAD %0(p0) :: (load 8 from %ir.addr)  ...  ---  | 

