aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/AArch64/GlobalISel/select-sbfx.mir')
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-sbfx.mir70
1 files changed, 70 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-sbfx.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-sbfx.mir
new file mode 100644
index 000000000000..daae44e5fec5
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-sbfx.mir
@@ -0,0 +1,70 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# RUN: llc -mtriple=aarch64 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
+
+...
+---
+name: sbfx_s32
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $w0
+ ; CHECK-LABEL: name: sbfx_s32
+ ; CHECK: liveins: $w0
+ ; CHECK: %copy:gpr32 = COPY $w0
+ ; CHECK: %sbfx:gpr32 = SBFMWri %copy, 0, 10
+ ; CHECK: $w0 = COPY %sbfx
+ ; CHECK: RET_ReallyLR implicit $w0
+ %copy:gpr(s32) = COPY $w0
+ %cst1:gpr(s32) = G_CONSTANT i32 0
+ %cst2:gpr(s32) = G_CONSTANT i32 10
+ %sbfx:gpr(s32) = G_SBFX %copy, %cst1, %cst2
+ $w0 = COPY %sbfx
+ RET_ReallyLR implicit $w0
+
+...
+---
+name: sbfx_s64
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $x0
+ ; CHECK-LABEL: name: sbfx_s64
+ ; CHECK: liveins: $x0
+ ; CHECK: %copy:gpr64 = COPY $x0
+ ; CHECK: %sbfx:gpr64 = SBFMXri %copy, 0, 10
+ ; CHECK: $x0 = COPY %sbfx
+ ; CHECK: RET_ReallyLR implicit $x0
+ %copy:gpr(s64) = COPY $x0
+ %cst1:gpr(s64) = G_CONSTANT i64 0
+ %cst2:gpr(s64) = G_CONSTANT i64 10
+ %sbfx:gpr(s64) = G_SBFX %copy, %cst1, %cst2
+ $x0 = COPY %sbfx
+ RET_ReallyLR implicit $x0
+
+...
+---
+name: sbfx_s32_31_31
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $w0
+ ; This is just an asr, so it's okay.
+
+ ; CHECK-LABEL: name: sbfx_s32_31_31
+ ; CHECK: liveins: $w0
+ ; CHECK: %copy:gpr32 = COPY $w0
+ ; CHECK: %sbfx:gpr32 = SBFMWri %copy, 31, 31
+ ; CHECK: $w0 = COPY %sbfx
+ ; CHECK: RET_ReallyLR implicit $w0
+ %copy:gpr(s32) = COPY $w0
+ %cst1:gpr(s32) = G_CONSTANT i32 31
+ %cst2:gpr(s32) = G_CONSTANT i32 31
+ %sbfx:gpr(s32) = G_SBFX %copy, %cst1, %cst2
+ $w0 = COPY %sbfx
+ RET_ReallyLR implicit $w0