diff options
| author | Tim Northover <tnorthover@apple.com> | 2016-08-04 21:39:49 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2016-08-04 21:39:49 +0000 |
| commit | 61c16142b4d52b0e62db1e39d21093a56cd5f886 (patch) | |
| tree | d0d724026b74e6bbbfd471eb469855271677025a /llvm/test | |
| parent | 1cfa919b3d796b99a8fe0c3dfeb9999b3f48fd81 (diff) | |
| download | bcm5719-llvm-61c16142b4d52b0e62db1e39d21093a56cd5f886.tar.gz bcm5719-llvm-61c16142b4d52b0e62db1e39d21093a56cd5f886.zip | |
GlobalISel: extend add widening to SUB, MUL, OR, AND and XOR.
These are the operations that are trivially identical. Division is omitted for
now because you need to use the correct sign/zero extension.
llvm-svn: 277775
Diffstat (limited to 'llvm/test')
5 files changed, 160 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-and.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-and.mir new file mode 100644 index 00000000000..2896401a949 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-and.mir @@ -0,0 +1,32 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_scalar_and_small() { + entry: + ret void + } +... + +--- +name: test_scalar_and_small +isSSA: true +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + ; CHECK-LABEL: name: test_scalar_and_small + ; CHECK-DAG: [[LHS:%.*]](32) = G_ANYEXTEND s32 %0 + ; CHECK-DAG: [[RHS:%.*]](32) = G_ANYEXTEND s32 %1 + ; CHECK: [[RES:%.*]](32) = G_AND s32 [[LHS]], [[RHS]] + ; CHECK: %2(8) = G_TRUNC s8 [[RES]] + + %0(8) = G_TRUNC s8 %x0 + %1(8) = G_TRUNC s8 %x1 + %2(8) = G_AND s8 %0, %1 + %x0 = G_ANYEXTEND s64 %2 +... diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-mul.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-mul.mir new file mode 100644 index 00000000000..d559353ce61 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-mul.mir @@ -0,0 +1,32 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_scalar_mul_small() { + entry: + ret void + } +... + +--- +name: test_scalar_mul_small +isSSA: true +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + ; CHECK-LABEL: name: test_scalar_mul_small + ; CHECK-DAG: [[LHS:%.*]](32) = G_ANYEXTEND s32 %0 + ; CHECK-DAG: [[RHS:%.*]](32) = G_ANYEXTEND s32 %1 + ; CHECK: [[RES:%.*]](32) = G_MUL s32 [[LHS]], [[RHS]] + ; CHECK: %2(8) = G_TRUNC s8 [[RES]] + + %0(8) = G_TRUNC s8 %x0 + %1(8) = G_TRUNC s8 %x1 + %2(8) = G_MUL s8 %0, %1 + %x0 = G_ANYEXTEND s64 %2 +... diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-or.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-or.mir new file mode 100644 index 00000000000..e777d449f20 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-or.mir @@ -0,0 +1,32 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_scalar_or_small() { + entry: + ret void + } +... + +--- +name: test_scalar_or_small +isSSA: true +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + ; CHECK-LABEL: name: test_scalar_or_small + ; CHECK-DAG: [[LHS:%.*]](32) = G_ANYEXTEND s32 %0 + ; CHECK-DAG: [[RHS:%.*]](32) = G_ANYEXTEND s32 %1 + ; CHECK: [[RES:%.*]](32) = G_OR s32 [[LHS]], [[RHS]] + ; CHECK: %2(8) = G_TRUNC s8 [[RES]] + + %0(8) = G_TRUNC s8 %x0 + %1(8) = G_TRUNC s8 %x1 + %2(8) = G_OR s8 %0, %1 + %x0 = G_ANYEXTEND s64 %2 +... diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-sub.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-sub.mir new file mode 100644 index 00000000000..b99b9f024fb --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-sub.mir @@ -0,0 +1,32 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_scalar_sub_small() { + entry: + ret void + } +... + +--- +name: test_scalar_sub_small +isSSA: true +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + ; CHECK-LABEL: name: test_scalar_sub_small + ; CHECK-DAG: [[LHS:%.*]](32) = G_ANYEXTEND s32 %0 + ; CHECK-DAG: [[RHS:%.*]](32) = G_ANYEXTEND s32 %1 + ; CHECK: [[RES:%.*]](32) = G_SUB s32 [[LHS]], [[RHS]] + ; CHECK: %2(8) = G_TRUNC s8 [[RES]] + + %0(8) = G_TRUNC s8 %x0 + %1(8) = G_TRUNC s8 %x1 + %2(8) = G_SUB s8 %0, %1 + %x0 = G_ANYEXTEND s64 %2 +... diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-xor.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-xor.mir new file mode 100644 index 00000000000..8c9c31a8764 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-xor.mir @@ -0,0 +1,32 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_scalar_xor_small() { + entry: + ret void + } +... + +--- +name: test_scalar_xor_small +isSSA: true +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + ; CHECK-LABEL: name: test_scalar_xor_small + ; CHECK-DAG: [[LHS:%.*]](32) = G_ANYEXTEND s32 %0 + ; CHECK-DAG: [[RHS:%.*]](32) = G_ANYEXTEND s32 %1 + ; CHECK: [[RES:%.*]](32) = G_XOR s32 [[LHS]], [[RHS]] + ; CHECK: %2(8) = G_TRUNC s8 [[RES]] + + %0(8) = G_TRUNC s8 %x0 + %1(8) = G_TRUNC s8 %x1 + %2(8) = G_XOR s8 %0, %1 + %x0 = G_ANYEXTEND s64 %2 +... |

