summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AArch64
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/AArch64')
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-default.mir540
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir601
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir141
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-bswap.mir31
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-fma.mir23
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-fp-casts.mir309
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-imm.mir21
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-implicit-def.mir16
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir153
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir85
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-sdiv.mir19
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir293
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-muladd.mir29
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vcvtfxu2fp.mir18
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir244
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-trunc.mir40
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/select-xor.mir90
17 files changed, 1335 insertions, 1318 deletions
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-default.mir b/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-default.mir
index fe22db27087..a99104f9cbc 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-default.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-default.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple arm64-- -run-pass=regbankselect -global-isel %s -o - | FileCheck %s
# Check the default mappings for various instructions.
@@ -72,458 +73,454 @@
...
---
-# CHECK-LABEL: name: test_add_s32
name: test_add_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_ADD %0, %0
+ ; CHECK-LABEL: name: test_add_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[ADD:%[0-9]+]](s32) = G_ADD [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_ADD %0, %0
...
---
-# CHECK-LABEL: name: test_add_v4s32
name: test_add_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_ADD %0, %0
+ ; CHECK-LABEL: name: test_add_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[ADD:%[0-9]+]](<4 x s32>) = G_ADD [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_ADD %0, %0
...
---
-# CHECK-LABEL: name: test_sub_s32
name: test_sub_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_SUB %0, %0
+ ; CHECK-LABEL: name: test_sub_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[SUB:%[0-9]+]](s32) = G_SUB [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_SUB %0, %0
...
---
-# CHECK-LABEL: name: test_sub_v4s32
name: test_sub_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_SUB %0, %0
+ ; CHECK-LABEL: name: test_sub_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[SUB:%[0-9]+]](<4 x s32>) = G_SUB [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_SUB %0, %0
...
---
-# CHECK-LABEL: name: test_mul_s32
name: test_mul_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_MUL %0, %0
+ ; CHECK-LABEL: name: test_mul_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[MUL:%[0-9]+]](s32) = G_MUL [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_MUL %0, %0
...
---
-# CHECK-LABEL: name: test_mul_v4s32
name: test_mul_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_MUL %0, %0
+ ; CHECK-LABEL: name: test_mul_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[MUL:%[0-9]+]](<4 x s32>) = G_MUL [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_MUL %0, %0
...
---
-# CHECK-LABEL: name: test_and_s32
name: test_and_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_AND %0, %0
+ ; CHECK-LABEL: name: test_and_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[AND:%[0-9]+]](s32) = G_AND [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_AND %0, %0
...
---
-# CHECK-LABEL: name: test_and_v4s32
name: test_and_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_AND %0, %0
+ ; CHECK-LABEL: name: test_and_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[AND:%[0-9]+]](<4 x s32>) = G_AND [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_AND %0, %0
...
---
-# CHECK-LABEL: name: test_or_s32
name: test_or_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_OR %0, %0
+ ; CHECK-LABEL: name: test_or_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[OR:%[0-9]+]](s32) = G_OR [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_OR %0, %0
...
---
-# CHECK-LABEL: name: test_or_v4s32
name: test_or_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_OR %0, %0
+ ; CHECK-LABEL: name: test_or_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[OR:%[0-9]+]](<4 x s32>) = G_OR [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_OR %0, %0
...
---
-# CHECK-LABEL: name: test_xor_s32
name: test_xor_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_XOR %0, %0
+ ; CHECK-LABEL: name: test_xor_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[XOR:%[0-9]+]](s32) = G_XOR [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_XOR %0, %0
...
---
-# CHECK-LABEL: name: test_xor_v4s32
name: test_xor_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_XOR %0, %0
+ ; CHECK-LABEL: name: test_xor_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[XOR:%[0-9]+]](<4 x s32>) = G_XOR [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_XOR %0, %0
...
---
-# CHECK-LABEL: name: test_shl_s32
name: test_shl_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_SHL %0, %0
+ ; CHECK-LABEL: name: test_shl_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[SHL:%[0-9]+]](s32) = G_SHL [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_SHL %0, %0
...
---
-# CHECK-LABEL: name: test_shl_v4s32
name: test_shl_v4s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %q0
- ; CHECK: %0(<4 x s32>) = COPY %q0
- ; CHECK: %1(<4 x s32>) = G_SHL %0, %0
+ ; CHECK-LABEL: name: test_shl_v4s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](<4 x s32>) = COPY %q0
+ ; CHECK: [[SHL:%[0-9]+]](<4 x s32>) = G_SHL [[COPY]], [[COPY]]
%0(<4 x s32>) = COPY %q0
%1(<4 x s32>) = G_SHL %0, %0
...
---
-# CHECK-LABEL: name: test_lshr_s32
name: test_lshr_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_LSHR %0, %0
+ ; CHECK-LABEL: name: test_lshr_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[LSHR:%[0-9]+]](s32) = G_LSHR [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_LSHR %0, %0
...
---
-# CHECK-LABEL: name: test_ashr_s32
name: test_ashr_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_ASHR %0, %0
+ ; CHECK-LABEL: name: test_ashr_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[ASHR:%[0-9]+]](s32) = G_ASHR [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_ASHR %0, %0
...
---
-# CHECK-LABEL: name: test_sdiv_s32
name: test_sdiv_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_SDIV %0, %0
+ ; CHECK-LABEL: name: test_sdiv_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[SDIV:%[0-9]+]](s32) = G_SDIV [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_SDIV %0, %0
...
---
-# CHECK-LABEL: name: test_udiv_s32
name: test_udiv_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_UDIV %0, %0
+ ; CHECK-LABEL: name: test_udiv_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[UDIV:%[0-9]+]](s32) = G_UDIV [[COPY]], [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_UDIV %0, %0
...
---
-# CHECK-LABEL: name: test_anyext_s64_s32
name: test_anyext_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s64) = G_ANYEXT %0
+ ; CHECK-LABEL: name: test_anyext_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[ANYEXT:%[0-9]+]](s64) = G_ANYEXT [[COPY]](s32)
%0(s32) = COPY %w0
%1(s64) = G_ANYEXT %0
...
---
-# CHECK-LABEL: name: test_sext_s64_s32
name: test_sext_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s64) = G_SEXT %0
+ ; CHECK-LABEL: name: test_sext_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[SEXT:%[0-9]+]](s64) = G_SEXT [[COPY]](s32)
%0(s32) = COPY %w0
%1(s64) = G_SEXT %0
...
---
-# CHECK-LABEL: name: test_zext_s64_s32
name: test_zext_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s64) = G_ZEXT %0
+ ; CHECK-LABEL: name: test_zext_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[ZEXT:%[0-9]+]](s64) = G_ZEXT [[COPY]](s32)
%0(s32) = COPY %w0
%1(s64) = G_ZEXT %0
...
---
-# CHECK-LABEL: name: test_trunc_s32_s64
name: test_trunc_s32_s64
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(s64) = COPY %x0
- ; CHECK: %1(s32) = G_TRUNC %0
+ ; CHECK-LABEL: name: test_trunc_s32_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
+ ; CHECK: [[TRUNC:%[0-9]+]](s32) = G_TRUNC [[COPY]](s64)
%0(s64) = COPY %x0
%1(s32) = G_TRUNC %0
...
---
-# CHECK-LABEL: name: test_constant_s32
name: test_constant_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
- ; CHECK: %0(s32) = G_CONSTANT 123
+ ; CHECK-LABEL: name: test_constant_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK: [[C:%[0-9]+]](s32) = G_CONSTANT 123
%0(s32) = G_CONSTANT 123
...
---
-# CHECK-LABEL: name: test_constant_p0
name: test_constant_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
- ; CHECK: %0(p0) = G_CONSTANT 0
+ ; CHECK-LABEL: name: test_constant_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK: [[C:%[0-9]+]](p0) = G_CONSTANT 0
%0(p0) = G_CONSTANT 0
...
---
-# CHECK-LABEL: name: test_icmp_s32
name: test_icmp_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
@@ -531,21 +528,22 @@ registers:
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s32) = G_ICMP intpred(ne), %0(s32), %0
- ; CHECK: %2(s1) = G_TRUNC %1(s32)
+ ; CHECK-LABEL: name: test_icmp_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[ICMP:%[0-9]+]](s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY]]
+ ; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[ICMP]](s32)
%0(s32) = COPY %w0
%1(s32) = G_ICMP intpred(ne), %0, %0
%2(s1) = G_TRUNC %1(s32)
...
---
-# CHECK-LABEL: name: test_icmp_p0
name: test_icmp_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
@@ -553,243 +551,244 @@ registers:
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(p0) = COPY %x0
- ; CHECK: %1(s32) = G_ICMP intpred(ne), %0(p0), %0
- ; CHECK: %2(s1) = G_TRUNC %1(s32)
+ ; CHECK-LABEL: name: test_icmp_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
+ ; CHECK: [[ICMP:%[0-9]+]](s32) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY]]
+ ; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[ICMP]](s32)
%0(p0) = COPY %x0
%1(s32) = G_ICMP intpred(ne), %0, %0
%2(s1) = G_TRUNC %1(s32)
...
---
-# CHECK-LABEL: name: test_frame_index_p0
name: test_frame_index_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
stack:
- { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
body: |
bb.0:
- ; CHECK: %0(p0) = G_FRAME_INDEX %stack.0.ptr0
+ ; CHECK-LABEL: name: test_frame_index_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK: [[FRAME_INDEX:%[0-9]+]](p0) = G_FRAME_INDEX %stack.0.ptr0
%0(p0) = G_FRAME_INDEX %stack.0.ptr0
...
---
-# CHECK-LABEL: name: test_ptrtoint_s64_p0
name: test_ptrtoint_s64_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(p0) = COPY %x0
- ; CHECK: %1(s64) = G_PTRTOINT %0
+ ; CHECK-LABEL: name: test_ptrtoint_s64_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
+ ; CHECK: [[PTRTOINT:%[0-9]+]](s64) = G_PTRTOINT [[COPY]](p0)
%0(p0) = COPY %x0
%1(s64) = G_PTRTOINT %0
...
---
-# CHECK-LABEL: name: test_inttoptr_p0_s64
name: test_inttoptr_p0_s64
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(s64) = COPY %x0
- ; CHECK: %1(p0) = G_INTTOPTR %0
+ ; CHECK-LABEL: name: test_inttoptr_p0_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
+ ; CHECK: [[INTTOPTR:%[0-9]+]](p0) = G_INTTOPTR [[COPY]](s64)
%0(s64) = COPY %x0
%1(p0) = G_INTTOPTR %0
...
---
-# CHECK-LABEL: name: test_load_s32_p0
name: test_load_s32_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(p0) = COPY %x0
- ; CHECK: %1(s32) = G_LOAD %0
+ ; CHECK-LABEL: name: test_load_s32_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
+ ; CHECK: [[LOAD:%[0-9]+]](s32) = G_LOAD [[COPY]](p0) :: (load 4)
%0(p0) = COPY %x0
%1(s32) = G_LOAD %0 :: (load 4)
...
---
-# CHECK-LABEL: name: test_store_s32_p0
name: test_store_s32_p0
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0, %w1
- ; CHECK: %0(p0) = COPY %x0
- ; CHECK: %1(s32) = COPY %w1
- ; CHECK: G_STORE %1(s32), %0(p0)
+ ; CHECK-LABEL: name: test_store_s32_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]](s32) = COPY %w1
+ ; CHECK: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store 4)
%0(p0) = COPY %x0
%1(s32) = COPY %w1
G_STORE %1, %0 :: (store 4)
...
---
-# CHECK-LABEL: name: test_fadd_s32
name: test_fadd_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s32) = G_FADD %0, %0
+ ; CHECK-LABEL: name: test_fadd_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FADD:%[0-9]+]](s32) = G_FADD [[COPY]], [[COPY]]
%0(s32) = COPY %s0
%1(s32) = G_FADD %0, %0
...
---
-# CHECK-LABEL: name: test_fsub_s32
name: test_fsub_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s32) = G_FSUB %0, %0
+ ; CHECK-LABEL: name: test_fsub_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FSUB:%[0-9]+]](s32) = G_FSUB [[COPY]], [[COPY]]
%0(s32) = COPY %s0
%1(s32) = G_FSUB %0, %0
...
---
-# CHECK-LABEL: name: test_fmul_s32
name: test_fmul_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s32) = G_FMUL %0, %0
+ ; CHECK-LABEL: name: test_fmul_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FMUL:%[0-9]+]](s32) = G_FMUL [[COPY]], [[COPY]]
%0(s32) = COPY %s0
%1(s32) = G_FMUL %0, %0
...
---
-# CHECK-LABEL: name: test_fdiv_s32
name: test_fdiv_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s32) = G_FDIV %0, %0
+ ; CHECK-LABEL: name: test_fdiv_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FDIV:%[0-9]+]](s32) = G_FDIV [[COPY]], [[COPY]]
%0(s32) = COPY %s0
%1(s32) = G_FDIV %0, %0
...
---
-# CHECK-LABEL: name: test_fpext_s64_s32
name: test_fpext_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s64) = G_FPEXT %0
+ ; CHECK-LABEL: name: test_fpext_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FPEXT:%[0-9]+]](s64) = G_FPEXT [[COPY]](s32)
%0(s32) = COPY %s0
%1(s64) = G_FPEXT %0
...
---
-# CHECK-LABEL: name: test_fptrunc_s32_s64
name: test_fptrunc_s32_s64
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %d0
- ; CHECK: %0(s64) = COPY %d0
- ; CHECK: %1(s32) = G_FPTRUNC %0
+ ; CHECK-LABEL: name: test_fptrunc_s32_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s64) = COPY %d0
+ ; CHECK: [[FPTRUNC:%[0-9]+]](s32) = G_FPTRUNC [[COPY]](s64)
%0(s64) = COPY %d0
%1(s32) = G_FPTRUNC %0
...
---
-# CHECK-LABEL: name: test_fconstant_s32
name: test_fconstant_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
- ; CHECK: %0(s32) = G_FCONSTANT float 1.0
+ ; CHECK-LABEL: name: test_fconstant_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK: [[C:%[0-9]+]](s32) = G_FCONSTANT float 1.000000e+00
%0(s32) = G_FCONSTANT float 1.0
...
---
-# CHECK-LABEL: name: test_fcmp_s32
name: test_fcmp_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
@@ -797,100 +796,99 @@ registers:
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: [[FCMP:%[0-9]+]](s32) = G_FCMP floatpred(olt), %0(s32), %0
- ; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[FCMP]]
+ ; CHECK-LABEL: name: test_fcmp_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FCMP:%[0-9]+]](s32) = G_FCMP floatpred(olt), [[COPY]](s32), [[COPY]]
+ ; CHECK: [[TRUNC:%[0-9]+]](s1) = G_TRUNC [[FCMP]](s32)
%0(s32) = COPY %s0
%1(s32) = G_FCMP floatpred(olt), %0, %0
%2(s1) = G_TRUNC %1(s32)
...
---
-# CHECK-LABEL: name: test_sitofp_s64_s32
name: test_sitofp_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %w0
- ; CHECK: %0(s32) = COPY %w0
- ; CHECK: %1(s64) = G_SITOFP %0
+ ; CHECK-LABEL: name: test_sitofp_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %w0
+ ; CHECK: [[SITOFP:%[0-9]+]](s64) = G_SITOFP [[COPY]](s32)
%0(s32) = COPY %w0
%1(s64) = G_SITOFP %0
...
---
-# CHECK-LABEL: name: test_uitofp_s32_s64
name: test_uitofp_s32_s64
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %x0
- ; CHECK: %0(s64) = COPY %x0
- ; CHECK: %1(s32) = G_UITOFP %0
+ ; CHECK-LABEL: name: test_uitofp_s32_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: fpr
+ ; CHECK: [[COPY:%[0-9]+]](s64) = COPY %x0
+ ; CHECK: [[UITOFP:%[0-9]+]](s32) = G_UITOFP [[COPY]](s64)
%0(s64) = COPY %x0
%1(s32) = G_UITOFP %0
...
---
-# CHECK-LABEL: name: test_fptosi_s64_s32
name: test_fptosi_s64_s32
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %s0
- ; CHECK: %0(s32) = COPY %s0
- ; CHECK: %1(s64) = G_FPTOSI %0
+ ; CHECK-LABEL: name: test_fptosi_s64_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s32) = COPY %s0
+ ; CHECK: [[FPTOSI:%[0-9]+]](s64) = G_FPTOSI [[COPY]](s32)
%0(s32) = COPY %s0
%1(s64) = G_FPTOSI %0
...
---
-# CHECK-LABEL: name: test_fptoui_s32_s64
name: test_fptoui_s32_s64
legalized: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: %d0
- ; CHECK: %0(s64) = COPY %d0
- ; CHECK: %1(s32) = G_FPTOUI %0
+ ; CHECK-LABEL: name: test_fptoui_s32_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]](s64) = COPY %d0
+ ; CHECK: [[FPTOUI:%[0-9]+]](s32) = G_FPTOUI [[COPY]](s64)
%0(s64) = COPY %d0
%1(s32) = G_FPTOUI %0
...
---
-# CHECK-LABEL: name: test_gphi_ptr
name: test_gphi_ptr
legalized: true
tracksRegLiveness: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: _, preferred-register: '' }
- { id: 1, class: _, preferred-register: '' }
@@ -899,6 +897,28 @@ registers:
- { id: 4, class: _, preferred-register: '' }
- { id: 5, class: _, preferred-register: '' }
body: |
+ ; CHECK-LABEL: name: test_gphi_ptr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK-NEXT: id: 4, class: _
+ ; CHECK-NEXT: id: 5, class: _
+ ; CHECK: bb.0:
+ ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
+ ; CHECK: liveins: %w2, %x0, %x1
+ ; CHECK: [[COPY:%[0-9]+]](p0) = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]](p0) = COPY %x1
+ ; CHECK: [[COPY2:%[0-9]+]](s1) = COPY %w2
+ ; CHECK: G_BRCOND [[COPY2]](s1), %bb.1
+ ; CHECK: G_BR %bb.2
+ ; CHECK: bb.1:
+ ; CHECK: successors: %bb.2(0x80000000)
+ ; CHECK: bb.2:
+ ; CHECK: [[PHI:%[0-9]+]](p0) = G_PHI [[COPY]](p0), %bb.0, [[COPY1]](p0), %bb.1
+ ; CHECK: %x0 = COPY [[PHI]](p0)
+ ; CHECK: RET_ReallyLR implicit %x0
bb.0:
successors: %bb.1, %bb.2
liveins: %w2, %x0, %x1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir
index 70cda516d5f..78d34bf5655 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -58,28 +59,28 @@
---
# Check that we select a 32-bit GPR G_ADD into ADDWrr on GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
-# CHECK-LABEL: name: add_s32_gpr
name: add_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = ADDWrr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: add_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[ADDWrr:%[0-9]+]] = ADDWrr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[ADDWrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_ADD %0, %1
@@ -88,28 +89,28 @@ body: |
---
# Same as add_s32_gpr, for 64-bit operations.
-# CHECK-LABEL: name: add_s64_gpr
name: add_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = ADDXrr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: add_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[ADDXrr:%[0-9]+]] = ADDXrr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[ADDXrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_ADD %0, %1
@@ -117,27 +118,27 @@ body: |
...
---
-# CHECK-LABEL: name: add_imm_s32_gpr
name: add_imm_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32sp, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = ADDWri %0, 1, 0
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: add_imm_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr32sp
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[ADDWri:%[0-9]+]] = ADDWri [[COPY]], 1, 0
+ ; CHECK: %w0 = COPY [[ADDWri]]
%0(s32) = COPY %w0
%1(s32) = G_CONSTANT i32 1
%2(s32) = G_ADD %0, %1
@@ -145,27 +146,27 @@ body: |
...
---
-# CHECK-LABEL: name: add_imm_s64_gpr
name: add_imm_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64sp, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %2 = ADDXri %0, 1, 0
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: add_imm_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr64sp
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[ADDXri:%[0-9]+]] = ADDXri [[COPY]], 1, 0
+ ; CHECK: %x0 = COPY [[ADDXri]]
%0(s64) = COPY %x0
%1(s64) = G_CONSTANT i32 1
%2(s64) = G_ADD %0, %1
@@ -173,25 +174,28 @@ body: |
...
---
-# CHECK-LABEL: name: add_imm_s32_gpr_bb
name: add_imm_s32_gpr_bb
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32sp, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: bb.1:
-# CHECK: %2 = ADDWri %0, 1, 0
body: |
+ ; CHECK-LABEL: name: add_imm_s32_gpr_bb
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr32sp
+ ; CHECK: bb.0:
+ ; CHECK: successors: %bb.1(0x80000000)
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: B %bb.1
+ ; CHECK: bb.1:
+ ; CHECK: [[ADDWri:%[0-9]+]] = ADDWri [[COPY]], 1, 0
+ ; CHECK: %w0 = COPY [[ADDWri]]
bb.0:
liveins: %w0, %w1
successors: %bb.1
@@ -207,28 +211,28 @@ body: |
---
# Same as add_s32_gpr, for G_SUB operations.
-# CHECK-LABEL: name: sub_s32_gpr
name: sub_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = SUBSWrr %0, %1, implicit-def %nzcv
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: sub_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[SUBSWrr:%[0-9]+]] = SUBSWrr [[COPY]], [[COPY1]], implicit-def %nzcv
+ ; CHECK: %w0 = COPY [[SUBSWrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_SUB %0, %1
@@ -237,28 +241,28 @@ body: |
---
# Same as add_s64_gpr, for G_SUB operations.
-# CHECK-LABEL: name: sub_s64_gpr
name: sub_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = SUBSXrr %0, %1, implicit-def %nzcv
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: sub_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[SUBSXrr:%[0-9]+]] = SUBSXrr [[COPY]], [[COPY1]], implicit-def %nzcv
+ ; CHECK: %x0 = COPY [[SUBSXrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_SUB %0, %1
@@ -267,28 +271,28 @@ body: |
---
# Same as add_s32_gpr, for G_OR operations.
-# CHECK-LABEL: name: or_s32_gpr
name: or_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = ORRWrr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: or_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[ORRWrr:%[0-9]+]] = ORRWrr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[ORRWrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_OR %0, %1
@@ -297,28 +301,28 @@ body: |
---
# Same as add_s64_gpr, for G_OR operations.
-# CHECK-LABEL: name: or_s64_gpr
name: or_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = ORRXrr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: or_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[ORRXrr:%[0-9]+]] = ORRXrr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[ORRXrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_OR %0, %1
@@ -327,30 +331,30 @@ body: |
---
# 64-bit G_OR on vector registers.
-# CHECK-LABEL: name: or_v2s32_fpr
name: or_v2s32_fpr
legalized: true
regBankSelected: true
#
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %d1
# The actual OR does not matter as long as it is operating
# on 64-bit width vector.
-# CHECK: %2 = ORRv8i8 %0, %1
body: |
bb.0:
liveins: %d0, %d1
+ ; CHECK-LABEL: name: or_v2s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: [[ORRv8i8_:%[0-9]+]] = ORRv8i8 [[COPY]], [[COPY1]]
+ ; CHECK: %d0 = COPY [[ORRv8i8_]]
%0(<2 x s32>) = COPY %d0
%1(<2 x s32>) = COPY %d1
%2(<2 x s32>) = G_OR %0, %1
@@ -359,28 +363,28 @@ body: |
---
# Same as add_s32_gpr, for G_AND operations.
-# CHECK-LABEL: name: and_s32_gpr
name: and_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = ANDWrr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: and_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[ANDWrr:%[0-9]+]] = ANDWrr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[ANDWrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_AND %0, %1
@@ -389,28 +393,28 @@ body: |
---
# Same as add_s64_gpr, for G_AND operations.
-# CHECK-LABEL: name: and_s64_gpr
name: and_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = ANDXrr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: and_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[ANDXrr:%[0-9]+]] = ANDXrr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[ANDXrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_AND %0, %1
@@ -419,28 +423,28 @@ body: |
---
# Same as add_s32_gpr, for G_SHL operations.
-# CHECK-LABEL: name: shl_s32_gpr
name: shl_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = LSLVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: shl_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[LSLVWr:%[0-9]+]] = LSLVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[LSLVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_SHL %0, %1
@@ -449,28 +453,28 @@ body: |
---
# Same as add_s64_gpr, for G_SHL operations.
-# CHECK-LABEL: name: shl_s64_gpr
name: shl_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = LSLVXr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: shl_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[LSLVXr:%[0-9]+]] = LSLVXr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[LSLVXr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_SHL %0, %1
@@ -479,28 +483,28 @@ body: |
---
# Same as add_s32_gpr, for G_LSHR operations.
-# CHECK-LABEL: name: lshr_s32_gpr
name: lshr_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = LSRVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: lshr_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[LSRVWr:%[0-9]+]] = LSRVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[LSRVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_LSHR %0, %1
@@ -509,28 +513,28 @@ body: |
---
# Same as add_s64_gpr, for G_LSHR operations.
-# CHECK-LABEL: name: lshr_s64_gpr
name: lshr_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = LSRVXr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: lshr_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[LSRVXr:%[0-9]+]] = LSRVXr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[LSRVXr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_LSHR %0, %1
@@ -539,28 +543,28 @@ body: |
---
# Same as add_s32_gpr, for G_ASHR operations.
-# CHECK-LABEL: name: ashr_s32_gpr
name: ashr_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = ASRVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: ashr_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[ASRVWr:%[0-9]+]] = ASRVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[ASRVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_ASHR %0, %1
@@ -569,28 +573,28 @@ body: |
---
# Same as add_s64_gpr, for G_ASHR operations.
-# CHECK-LABEL: name: ashr_s64_gpr
name: ashr_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = ASRVXr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: ashr_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[ASRVXr:%[0-9]+]] = ASRVXr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[ASRVXr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_ASHR %0, %1
@@ -600,28 +604,28 @@ body: |
---
# Check that we select s32 GPR G_MUL. This is trickier than other binops because
# there is only MADDWrrr, and we have to use the WZR physreg.
-# CHECK-LABEL: name: mul_s32_gpr
name: mul_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = MADDWrrr %0, %1, %wzr
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: mul_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[MADDWrrr:%[0-9]+]] = MADDWrrr [[COPY]], [[COPY1]], %wzr
+ ; CHECK: %w0 = COPY [[MADDWrrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_MUL %0, %1
@@ -630,28 +634,28 @@ body: |
---
# Same as mul_s32_gpr for the s64 type.
-# CHECK-LABEL: name: mul_s64_gpr
name: mul_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = MADDXrrr %0, %1, %xzr
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: mul_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[MADDXrrr:%[0-9]+]] = MADDXrrr [[COPY]], [[COPY1]], %xzr
+ ; CHECK: %x0 = COPY [[MADDXrrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_MUL %0, %1
@@ -660,26 +664,27 @@ body: |
---
# Same as mul_s32_gpr for the s64 type.
-# CHECK-LABEL: name: mulh_s64_gpr
name: mulh_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr64, preferred-register: '' }
-
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = SMULHrr %0, %1
-# CHECK: %3 = UMULHrr %0, %1
+
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: mulh_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK-NEXT: id: 3, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[SMULHrr:%[0-9]+]] = SMULHrr [[COPY]], [[COPY1]]
+ ; CHECK: [[UMULHrr:%[0-9]+]] = UMULHrr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[SMULHrr]]
+ ; CHECK: %x0 = COPY [[UMULHrr]]
%0:gpr(s64) = COPY %x0
%1:gpr(s64) = COPY %x1
%2:gpr(s64) = G_SMULH %0, %1
@@ -690,28 +695,28 @@ body: |
---
# Same as add_s32_gpr, for G_SDIV operations.
-# CHECK-LABEL: name: sdiv_s32_gpr
name: sdiv_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = SDIVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: sdiv_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[SDIVWr:%[0-9]+]] = SDIVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[SDIVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_SDIV %0, %1
@@ -720,28 +725,28 @@ body: |
---
# Same as add_s64_gpr, for G_SDIV operations.
-# CHECK-LABEL: name: sdiv_s64_gpr
name: sdiv_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = SDIVXr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: sdiv_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[SDIVXr:%[0-9]+]] = SDIVXr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[SDIVXr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_SDIV %0, %1
@@ -750,28 +755,28 @@ body: |
---
# Same as add_s32_gpr, for G_UDIV operations.
-# CHECK-LABEL: name: udiv_s32_gpr
name: udiv_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = UDIVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: udiv_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[UDIVWr:%[0-9]+]] = UDIVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[UDIVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_UDIV %0, %1
@@ -780,28 +785,28 @@ body: |
---
# Same as add_s64_gpr, for G_UDIV operations.
-# CHECK-LABEL: name: udiv_s64_gpr
name: udiv_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = UDIVXr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: udiv_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[UDIVXr:%[0-9]+]] = UDIVXr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[UDIVXr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_UDIV %0, %1
@@ -810,28 +815,28 @@ body: |
---
# Check that we select a s32 FPR G_FADD into FADDSrr.
-# CHECK-LABEL: name: fadd_s32_fpr
name: fadd_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %s1
-# CHECK: %2 = FADDSrr %0, %1
body: |
bb.0:
liveins: %s0, %s1
+ ; CHECK-LABEL: name: fadd_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: [[FADDSrr:%[0-9]+]] = FADDSrr [[COPY]], [[COPY1]]
+ ; CHECK: %s0 = COPY [[FADDSrr]]
%0(s32) = COPY %s0
%1(s32) = COPY %s1
%2(s32) = G_FADD %0, %1
@@ -839,28 +844,28 @@ body: |
...
---
-# CHECK-LABEL: name: fadd_s64_fpr
name: fadd_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %d1
-# CHECK: %2 = FADDDrr %0, %1
body: |
bb.0:
liveins: %d0, %d1
+ ; CHECK-LABEL: name: fadd_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: [[FADDDrr:%[0-9]+]] = FADDDrr [[COPY]], [[COPY1]]
+ ; CHECK: %d0 = COPY [[FADDDrr]]
%0(s64) = COPY %d0
%1(s64) = COPY %d1
%2(s64) = G_FADD %0, %1
@@ -868,28 +873,28 @@ body: |
...
---
-# CHECK-LABEL: name: fsub_s32_fpr
name: fsub_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %s1
-# CHECK: %2 = FSUBSrr %0, %1
body: |
bb.0:
liveins: %s0, %s1
+ ; CHECK-LABEL: name: fsub_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: [[FSUBSrr:%[0-9]+]] = FSUBSrr [[COPY]], [[COPY1]]
+ ; CHECK: %s0 = COPY [[FSUBSrr]]
%0(s32) = COPY %s0
%1(s32) = COPY %s1
%2(s32) = G_FSUB %0, %1
@@ -897,28 +902,28 @@ body: |
...
---
-# CHECK-LABEL: name: fsub_s64_fpr
name: fsub_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %d1
-# CHECK: %2 = FSUBDrr %0, %1
body: |
bb.0:
liveins: %d0, %d1
+ ; CHECK-LABEL: name: fsub_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: [[FSUBDrr:%[0-9]+]] = FSUBDrr [[COPY]], [[COPY1]]
+ ; CHECK: %d0 = COPY [[FSUBDrr]]
%0(s64) = COPY %d0
%1(s64) = COPY %d1
%2(s64) = G_FSUB %0, %1
@@ -926,28 +931,28 @@ body: |
...
---
-# CHECK-LABEL: name: fmul_s32_fpr
name: fmul_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %s1
-# CHECK: %2 = FMULSrr %0, %1
body: |
bb.0:
liveins: %s0, %s1
+ ; CHECK-LABEL: name: fmul_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: [[FMULSrr:%[0-9]+]] = FMULSrr [[COPY]], [[COPY1]]
+ ; CHECK: %s0 = COPY [[FMULSrr]]
%0(s32) = COPY %s0
%1(s32) = COPY %s1
%2(s32) = G_FMUL %0, %1
@@ -955,28 +960,28 @@ body: |
...
---
-# CHECK-LABEL: name: fmul_s64_fpr
name: fmul_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %d1
-# CHECK: %2 = FMULDrr %0, %1
body: |
bb.0:
liveins: %d0, %d1
+ ; CHECK-LABEL: name: fmul_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: [[FMULDrr:%[0-9]+]] = FMULDrr [[COPY]], [[COPY1]]
+ ; CHECK: %d0 = COPY [[FMULDrr]]
%0(s64) = COPY %d0
%1(s64) = COPY %d1
%2(s64) = G_FMUL %0, %1
@@ -984,28 +989,28 @@ body: |
...
---
-# CHECK-LABEL: name: fdiv_s32_fpr
name: fdiv_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %s1
-# CHECK: %2 = FDIVSrr %0, %1
body: |
bb.0:
liveins: %s0, %s1
+ ; CHECK-LABEL: name: fdiv_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: [[FDIVSrr:%[0-9]+]] = FDIVSrr [[COPY]], [[COPY1]]
+ ; CHECK: %s0 = COPY [[FDIVSrr]]
%0(s32) = COPY %s0
%1(s32) = COPY %s1
%2(s32) = G_FDIV %0, %1
@@ -1013,28 +1018,28 @@ body: |
...
---
-# CHECK-LABEL: name: fdiv_s64_fpr
name: fdiv_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %d1
-# CHECK: %2 = FDIVDrr %0, %1
body: |
bb.0:
liveins: %d0, %d1
+ ; CHECK-LABEL: name: fdiv_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: [[FDIVDrr:%[0-9]+]] = FDIVDrr [[COPY]], [[COPY1]]
+ ; CHECK: %d0 = COPY [[FDIVDrr]]
%0(s64) = COPY %d0
%1(s64) = COPY %d1
%2(s64) = G_FDIV %0, %1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
index fe077a25f7c..c19d0d4b187 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -16,248 +17,248 @@
...
---
-# CHECK-LABEL: name: bitcast_s32_gpr
name: bitcast_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32all, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: bitcast_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32all
+ ; CHECK-NEXT: id: 1, class: gpr32all
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s32) = COPY %w0
%1(s32) = G_BITCAST %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: bitcast_s32_fpr
name: bitcast_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: bitcast_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %s0 = COPY [[COPY1]]
%0(s32) = COPY %s0
%1(s32) = G_BITCAST %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: bitcast_s32_gpr_fpr
name: bitcast_s32_gpr_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: bitcast_s32_gpr_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32all
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %s0 = COPY [[COPY1]]
%0(s32) = COPY %w0
%1(s32) = G_BITCAST %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: bitcast_s32_fpr_gpr
name: bitcast_s32_fpr_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: bitcast_s32_fpr_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s32) = COPY %s0
%1(s32) = G_BITCAST %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: bitcast_s64_gpr
name: bitcast_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64all, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: bitcast_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64all
+ ; CHECK-NEXT: id: 1, class: gpr64all
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s64) = COPY %x0
%1(s64) = G_BITCAST %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: bitcast_s64_fpr
name: bitcast_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: bitcast_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %d0 = COPY [[COPY1]]
%0(s64) = COPY %d0
%1(s64) = G_BITCAST %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: bitcast_s64_gpr_fpr
name: bitcast_s64_gpr_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: bitcast_s64_gpr_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64all
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %d0 = COPY [[COPY1]]
%0(s64) = COPY %x0
%1(s64) = G_BITCAST %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: bitcast_s64_fpr_gpr
name: bitcast_s64_fpr_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: bitcast_s64_fpr_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s64) = COPY %d0
%1(s64) = G_BITCAST %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: bitcast_s64_v2f32_fpr
name: bitcast_s64_v2f32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: bitcast_s64_v2f32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s64) = COPY %d0
%1(<2 x s32>) = G_BITCAST %0
%x0 = COPY %1(<2 x s32>)
...
---
-# CHECK-LABEL: name: bitcast_s64_v8i8_fpr
name: bitcast_s64_v8i8_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: bitcast_s64_v8i8_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s64) = COPY %d0
%1(<8 x s8>) = G_BITCAST %0
%x0 = COPY %1(<8 x s8>)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-bswap.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-bswap.mir
index 56a964f106c..d1118b64c52 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-bswap.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-bswap.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -8,52 +9,50 @@
...
---
-# CHECK-LABEL: name: bswap_s32
name: bswap_s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = REVWr %0
-# CHECK: %w0 = COPY %1
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: bswap_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[REVWr:%[0-9]+]] = REVWr [[COPY]]
+ ; CHECK: %w0 = COPY [[REVWr]]
%0(s32) = COPY %w0
%1(s32) = G_BSWAP %0
%w0 = COPY %1
...
---
-# CHECK-LABEL: name: bswap_s64
name: bswap_s64
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = REVXr %0
-# CHECK: %x0 = COPY %1
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: bswap_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[REVXr:%[0-9]+]] = REVXr [[COPY]]
+ ; CHECK: %x0 = COPY [[REVXr]]
%0(s64) = COPY %x0
%1(s64) = G_BSWAP %0
%x0 = COPY %1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-fma.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-fma.mir
index 3b2f3746b58..1d38f4f759c 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-fma.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-fma.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -7,31 +8,31 @@
...
---
-# CHECK-LABEL: name: FMADDSrrr_fpr
name: FMADDSrrr_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = COPY %w2
-# CHECK: %3 = FMADDSrrr %0, %1, %2
body: |
bb.0:
liveins: %w0, %w1, %w2
+ ; CHECK-LABEL: name: FMADDSrrr_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: fpr32
+ ; CHECK-NEXT: id: 3, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[COPY2:%[0-9]+]] = COPY %w2
+ ; CHECK: [[FMADDSrrr:%[0-9]+]] = FMADDSrrr [[COPY]], [[COPY1]], [[COPY2]]
+ ; CHECK: %x0 = COPY [[FMADDSrrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = COPY %w2
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-casts.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-casts.mir
index 3c343193557..f3c81e7d9c1 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-casts.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-casts.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -33,550 +34,550 @@
...
---
-# CHECK-LABEL: name: fptrunc_s16_s32_fpr
name: fptrunc_s16_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr16, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTHSr %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: fptrunc_s16_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr16
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTHSr:%[0-9]+]] = FCVTHSr [[COPY]]
+ ; CHECK: %h0 = COPY [[FCVTHSr]]
%0(s32) = COPY %s0
%1(s16) = G_FPTRUNC %0
%h0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: fptrunc_s16_s64_fpr
name: fptrunc_s16_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr16, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTHDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptrunc_s16_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr16
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTHDr:%[0-9]+]] = FCVTHDr [[COPY]]
+ ; CHECK: %h0 = COPY [[FCVTHDr]]
%0(s64) = COPY %d0
%1(s16) = G_FPTRUNC %0
%h0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: fptrunc_s32_s64_fpr
name: fptrunc_s32_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTSDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptrunc_s32_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTSDr:%[0-9]+]] = FCVTSDr [[COPY]]
+ ; CHECK: %s0 = COPY [[FCVTSDr]]
%0(s64) = COPY %d0
%1(s32) = G_FPTRUNC %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fpext_s32_s16_fpr
name: fpext_s32_s16_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr16, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %h0
-# CHECK: %1 = FCVTSHr %0
body: |
bb.0:
liveins: %h0
+ ; CHECK-LABEL: name: fpext_s32_s16_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr16
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %h0
+ ; CHECK: [[FCVTSHr:%[0-9]+]] = FCVTSHr [[COPY]]
+ ; CHECK: %s0 = COPY [[FCVTSHr]]
%0(s16) = COPY %h0
%1(s32) = G_FPEXT %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fpext_s64_s16_fpr
name: fpext_s64_s16_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr16, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %h0
-# CHECK: %1 = FCVTDHr %0
body: |
bb.0:
liveins: %h0
+ ; CHECK-LABEL: name: fpext_s64_s16_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr16
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %h0
+ ; CHECK: [[FCVTDHr:%[0-9]+]] = FCVTDHr [[COPY]]
+ ; CHECK: %d0 = COPY [[FCVTDHr]]
%0(s16) = COPY %h0
%1(s64) = G_FPEXT %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: fpext_s64_s32_fpr
name: fpext_s64_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTDSr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fpext_s64_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTDSr:%[0-9]+]] = FCVTDSr [[COPY]]
+ ; CHECK: %d0 = COPY [[FCVTDSr]]
%0(s32) = COPY %s0
%1(s64) = G_FPEXT %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: sitofp_s32_s32_fpr
name: sitofp_s32_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = SCVTFUWSri %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sitofp_s32_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SCVTFUWSri:%[0-9]+]] = SCVTFUWSri [[COPY]]
+ ; CHECK: %s0 = COPY [[SCVTFUWSri]]
%0(s32) = COPY %w0
%1(s32) = G_SITOFP %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: sitofp_s32_s64_fpr
name: sitofp_s32_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = SCVTFUXSri %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: sitofp_s32_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[SCVTFUXSri:%[0-9]+]] = SCVTFUXSri [[COPY]]
+ ; CHECK: %s0 = COPY [[SCVTFUXSri]]
%0(s64) = COPY %x0
%1(s32) = G_SITOFP %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: sitofp_s64_s32_fpr
name: sitofp_s64_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = SCVTFUWDri %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sitofp_s64_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SCVTFUWDri:%[0-9]+]] = SCVTFUWDri [[COPY]]
+ ; CHECK: %d0 = COPY [[SCVTFUWDri]]
%0(s32) = COPY %w0
%1(s64) = G_SITOFP %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: sitofp_s64_s64_fpr
name: sitofp_s64_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = SCVTFUXDri %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: sitofp_s64_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[SCVTFUXDri:%[0-9]+]] = SCVTFUXDri [[COPY]]
+ ; CHECK: %d0 = COPY [[SCVTFUXDri]]
%0(s64) = COPY %x0
%1(s64) = G_SITOFP %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: uitofp_s32_s32_fpr
name: uitofp_s32_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = UCVTFUWSri %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: uitofp_s32_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[UCVTFUWSri:%[0-9]+]] = UCVTFUWSri [[COPY]]
+ ; CHECK: %s0 = COPY [[UCVTFUWSri]]
%0(s32) = COPY %w0
%1(s32) = G_UITOFP %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: uitofp_s32_s64_fpr
name: uitofp_s32_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = UCVTFUXSri %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: uitofp_s32_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[UCVTFUXSri:%[0-9]+]] = UCVTFUXSri [[COPY]]
+ ; CHECK: %s0 = COPY [[UCVTFUXSri]]
%0(s64) = COPY %x0
%1(s32) = G_UITOFP %0
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: uitofp_s64_s32_fpr
name: uitofp_s64_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = UCVTFUWDri %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: uitofp_s64_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[UCVTFUWDri:%[0-9]+]] = UCVTFUWDri [[COPY]]
+ ; CHECK: %d0 = COPY [[UCVTFUWDri]]
%0(s32) = COPY %w0
%1(s64) = G_UITOFP %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: uitofp_s64_s64_fpr
name: uitofp_s64_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = UCVTFUXDri %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: uitofp_s64_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[UCVTFUXDri:%[0-9]+]] = UCVTFUXDri [[COPY]]
+ ; CHECK: %d0 = COPY [[UCVTFUXDri]]
%0(s64) = COPY %x0
%1(s64) = G_UITOFP %0
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: fptosi_s32_s32_gpr
name: fptosi_s32_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTZSUWSr %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: fptosi_s32_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTZSUWSr:%[0-9]+]] = FCVTZSUWSr [[COPY]]
+ ; CHECK: %w0 = COPY [[FCVTZSUWSr]]
%0(s32) = COPY %s0
%1(s32) = G_FPTOSI %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fptosi_s32_s64_gpr
name: fptosi_s32_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTZSUWDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptosi_s32_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTZSUWDr:%[0-9]+]] = FCVTZSUWDr [[COPY]]
+ ; CHECK: %w0 = COPY [[FCVTZSUWDr]]
%0(s64) = COPY %d0
%1(s32) = G_FPTOSI %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fptosi_s64_s32_gpr
name: fptosi_s64_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTZSUXSr %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: fptosi_s64_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTZSUXSr:%[0-9]+]] = FCVTZSUXSr [[COPY]]
+ ; CHECK: %x0 = COPY [[FCVTZSUXSr]]
%0(s32) = COPY %s0
%1(s64) = G_FPTOSI %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: fptosi_s64_s64_gpr
name: fptosi_s64_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTZSUXDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptosi_s64_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTZSUXDr:%[0-9]+]] = FCVTZSUXDr [[COPY]]
+ ; CHECK: %x0 = COPY [[FCVTZSUXDr]]
%0(s64) = COPY %d0
%1(s64) = G_FPTOSI %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: fptoui_s32_s32_gpr
name: fptoui_s32_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTZUUWSr %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: fptoui_s32_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTZUUWSr:%[0-9]+]] = FCVTZUUWSr [[COPY]]
+ ; CHECK: %w0 = COPY [[FCVTZUUWSr]]
%0(s32) = COPY %s0
%1(s32) = G_FPTOUI %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fptoui_s32_s64_gpr
name: fptoui_s32_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTZUUWDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptoui_s32_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTZUUWDr:%[0-9]+]] = FCVTZUUWDr [[COPY]]
+ ; CHECK: %w0 = COPY [[FCVTZUUWDr]]
%0(s64) = COPY %d0
%1(s32) = G_FPTOUI %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: fptoui_s64_s32_gpr
name: fptoui_s64_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %s0
-# CHECK: %1 = FCVTZUUXSr %0
body: |
bb.0:
liveins: %s0
+ ; CHECK-LABEL: name: fptoui_s64_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr32
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %s0
+ ; CHECK: [[FCVTZUUXSr:%[0-9]+]] = FCVTZUUXSr [[COPY]]
+ ; CHECK: %x0 = COPY [[FCVTZUUXSr]]
%0(s32) = COPY %s0
%1(s64) = G_FPTOUI %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: fptoui_s64_s64_gpr
name: fptoui_s64_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %1 = FCVTZUUXDr %0
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: fptoui_s64_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[FCVTZUUXDr:%[0-9]+]] = FCVTZUUXDr [[COPY]]
+ ; CHECK: %x0 = COPY [[FCVTZUUXDr]]
%0(s64) = COPY %d0
%1(s64) = G_FPTOUI %0
%x0 = COPY %1(s64)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-imm.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-imm.mir
index 1fc20ff98f7..a89adc27971 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-imm.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-imm.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -10,44 +11,44 @@
---
# Check that we select a 32-bit immediate into a MOVi32imm.
-# CHECK-LABEL: name: imm_s32_gpr
name: imm_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
-# CHECK: body:
-# CHECK: %0 = MOVi32imm -1234
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: imm_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK: [[MOVi32imm:%[0-9]+]] = MOVi32imm -1234
+ ; CHECK: %w0 = COPY [[MOVi32imm]]
%0(s32) = G_CONSTANT i32 -1234
%w0 = COPY %0(s32)
...
---
# Check that we select a 64-bit immediate into a MOVi64imm.
-# CHECK-LABEL: name: imm_s64_gpr
name: imm_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
-# CHECK: body:
-# CHECK: %0 = MOVi64imm 1234
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: imm_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK: [[MOVi64imm:%[0-9]+]] = MOVi64imm 1234
+ ; CHECK: %w0 = COPY [[MOVi64imm]]
%0(s64) = G_CONSTANT i64 1234
%w0 = COPY %0(s64)
...
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-implicit-def.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-implicit-def.mir
index 8604b2769ba..e2744e99d15 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-implicit-def.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-implicit-def.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -7,23 +8,22 @@
...
---
-# CHECK-LABEL: name: implicit_def
name: implicit_def
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: [[DEF:%[0-9]+]] = IMPLICIT_DEF
-# CHECK: [[ADD:%[0-9]+]] = ADDWrr [[DEF]], [[DEF]]
-# CHECK: %w0 = COPY [[ADD]]
body: |
bb.0:
+ ; CHECK-LABEL: name: implicit_def
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[DEF:%[0-9]+]] = IMPLICIT_DEF
+ ; CHECK: [[ADDWrr:%[0-9]+]] = ADDWrr [[DEF]], [[DEF]]
+ ; CHECK: %w0 = COPY [[ADDWrr]]
%0(s32) = G_IMPLICIT_DEF
%1(s32) = G_ADD %0, %0
%w0 = COPY %1(s32)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
index 5f29f8b62fa..b7b7de4ae61 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -18,256 +19,256 @@
...
---
-# CHECK-LABEL: name: anyext_s64_from_s32
name: anyext_s64_from_s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64all, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64all, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = SUBREG_TO_REG 0, %0, 15
-# CHECK: %1 = COPY %2
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: anyext_s64_from_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32all
+ ; CHECK-NEXT: id: 1, class: gpr64all
+ ; CHECK-NEXT: id: 2, class: gpr64all
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SUBREG_TO_REG:%[0-9]+]] = SUBREG_TO_REG 0, [[COPY]], 15
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[SUBREG_TO_REG]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s32) = COPY %w0
%1(s64) = G_ANYEXT %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: anyext_s32_from_s8
name: anyext_s32_from_s8
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32all, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: anyext_s32_from_s8
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32all
+ ; CHECK-NEXT: id: 1, class: gpr32all
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s8) = COPY %w0
%1(s32) = G_ANYEXT %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: zext_s64_from_s32
name: zext_s64_from_s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = SUBREG_TO_REG 0, %0, 15
-# CHECK: %1 = UBFMXri %2, 0, 31
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: zext_s64_from_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SUBREG_TO_REG:%[0-9]+]] = SUBREG_TO_REG 0, [[COPY]], 15
+ ; CHECK: [[UBFMXri:%[0-9]+]] = UBFMXri [[SUBREG_TO_REG]], 0, 31
+ ; CHECK: %x0 = COPY [[UBFMXri]]
%0(s32) = COPY %w0
%1(s64) = G_ZEXT %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: zext_s32_from_s16
name: zext_s32_from_s16
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = UBFMWri %0, 0, 15
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: zext_s32_from_s16
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[UBFMWri:%[0-9]+]] = UBFMWri [[COPY]], 0, 15
+ ; CHECK: %w0 = COPY [[UBFMWri]]
%0(s16) = COPY %w0
%1(s32) = G_ZEXT %0
%w0 = COPY %1
...
---
-# CHECK-LABEL: name: zext_s32_from_s8
name: zext_s32_from_s8
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = UBFMWri %0, 0, 7
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: zext_s32_from_s8
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[UBFMWri:%[0-9]+]] = UBFMWri [[COPY]], 0, 7
+ ; CHECK: %w0 = COPY [[UBFMWri]]
%0(s8) = COPY %w0
%1(s32) = G_ZEXT %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: zext_s16_from_s8
name: zext_s16_from_s8
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = UBFMWri %0, 0, 7
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: zext_s16_from_s8
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[UBFMWri:%[0-9]+]] = UBFMWri [[COPY]], 0, 7
+ ; CHECK: %w0 = COPY [[UBFMWri]]
%0(s8) = COPY %w0
%1(s16) = G_ZEXT %0
%w0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: sext_s64_from_s32
name: sext_s64_from_s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = SUBREG_TO_REG 0, %0, 15
-# CHECK: %1 = SBFMXri %2, 0, 31
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sext_s64_from_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SUBREG_TO_REG:%[0-9]+]] = SUBREG_TO_REG 0, [[COPY]], 15
+ ; CHECK: [[SBFMXri:%[0-9]+]] = SBFMXri [[SUBREG_TO_REG]], 0, 31
+ ; CHECK: %x0 = COPY [[SBFMXri]]
%0(s32) = COPY %w0
%1(s64) = G_SEXT %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: sext_s32_from_s16
name: sext_s32_from_s16
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = SBFMWri %0, 0, 15
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sext_s32_from_s16
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SBFMWri:%[0-9]+]] = SBFMWri [[COPY]], 0, 15
+ ; CHECK: %w0 = COPY [[SBFMWri]]
%0(s16) = COPY %w0
%1(s32) = G_SEXT %0
%w0 = COPY %1
...
---
-# CHECK-LABEL: name: sext_s32_from_s8
name: sext_s32_from_s8
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = SBFMWri %0, 0, 7
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sext_s32_from_s8
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SBFMWri:%[0-9]+]] = SBFMWri [[COPY]], 0, 7
+ ; CHECK: %w0 = COPY [[SBFMWri]]
%0(s8) = COPY %w0
%1(s32) = G_SEXT %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: sext_s16_from_s8
name: sext_s16_from_s8
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = SBFMWri %0, 0, 7
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: sext_s16_from_s8
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[SBFMWri:%[0-9]+]] = SBFMWri [[COPY]], 0, 7
+ ; CHECK: %w0 = COPY [[SBFMWri]]
%0(s8) = COPY %w0
%1(s16) = G_SEXT %0
%w0 = COPY %1(s16)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir
index b71a9a3d731..585664649d8 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -12,138 +13,138 @@
...
---
-# CHECK-LABEL: name: inttoptr_p0_s64
name: inttoptr_p0_s64
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64all, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64all, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: inttoptr_p0_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64all
+ ; CHECK-NEXT: id: 1, class: gpr64all
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(s64) = COPY %x0
%1(p0) = G_INTTOPTR %0
%x0 = COPY %1(p0)
...
---
-# CHECK-LABEL: name: ptrtoint_s64_p0
name: ptrtoint_s64_p0
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: ptrtoint_s64_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %x0 = COPY [[COPY1]]
%0(p0) = COPY %x0
%1(s64) = G_PTRTOINT %0
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: ptrtoint_s32_p0
name: ptrtoint_s32_p0
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: ptrtoint_s32_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(p0) = COPY %x0
%1(s32) = G_PTRTOINT %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: ptrtoint_s16_p0
name: ptrtoint_s16_p0
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: ptrtoint_s16_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(p0) = COPY %x0
%1(s16) = G_PTRTOINT %0
%w0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: ptrtoint_s8_p0
name: ptrtoint_s8_p0
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: ptrtoint_s8_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(p0) = COPY %x0
%1(s8) = G_PTRTOINT %0
%w0 = COPY %1(s8)
...
---
-# CHECK-LABEL: name: ptrtoint_s1_p0
name: ptrtoint_s1_p0
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: ptrtoint_s1_p0
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(p0) = COPY %x0
%1(s1) = G_PTRTOINT %0
%w0 = COPY %1(s1)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-sdiv.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-sdiv.mir
index 43e682c6b6c..7f0fc2cad6f 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-sdiv.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-aarch64-sdiv.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -9,28 +10,28 @@
---
# Check that we select a 32-bit GPR sdiv intrinsic into SDIVWrr for GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
-# CHECK-LABEL: name: sdiv_s32_gpr
name: sdiv_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = SDIVWr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: sdiv_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[SDIVWr:%[0-9]+]] = SDIVWr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[SDIVWr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.sdiv.i32), %0, %1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir
index 2955788a71e..801ba35bd4c 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -32,114 +33,110 @@
...
---
-# CHECK-LABEL: name: load_s64_gpr
name: load_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRXui %0, 0 :: (load 8 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRXui:%[0-9]+]] = LDRXui [[COPY]], 0 :: (load 8 from %ir.addr)
+ ; CHECK: %x0 = COPY [[LDRXui]]
%0(p0) = COPY %x0
%1(s64) = G_LOAD %0 :: (load 8 from %ir.addr)
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: load_s32_gpr
name: load_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRWui %0, 0 :: (load 4 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRWui:%[0-9]+]] = LDRWui [[COPY]], 0 :: (load 4 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRWui]]
%0(p0) = COPY %x0
%1(s32) = G_LOAD %0 :: (load 4 from %ir.addr)
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: load_s16_gpr
name: load_s16_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRHHui %0, 0 :: (load 2 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s16_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRHHui:%[0-9]+]] = LDRHHui [[COPY]], 0 :: (load 2 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRHHui]]
%0(p0) = COPY %x0
%1(s16) = G_LOAD %0 :: (load 2 from %ir.addr)
%w0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: load_s8_gpr
name: load_s8_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRBBui %0, 0 :: (load 1 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s8_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRBBui:%[0-9]+]] = LDRBBui [[COPY]], 0 :: (load 1 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRBBui]]
%0(p0) = COPY %x0
%1(s8) = G_LOAD %0 :: (load 1 from %ir.addr)
%w0 = COPY %1(s8)
...
---
-# CHECK-LABEL: name: load_fi_s64_gpr
name: load_fi_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
@@ -147,43 +144,45 @@ registers:
stack:
- { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
-# CHECK: body:
-# CHECK: %1 = LDRXui %stack.0.ptr0, 0 :: (load 8)
-# CHECK: %x0 = COPY %1
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_fi_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[LDRXui:%[0-9]+]] = LDRXui %stack.0.ptr0, 0 :: (load 8)
+ ; CHECK: %x0 = COPY [[LDRXui]]
%0(p0) = G_FRAME_INDEX %stack.0.ptr0
%1(s64) = G_LOAD %0 :: (load 8)
%x0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: load_gep_128_s64_gpr
name: load_gep_128_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRXui %0, 16 :: (load 8 from %ir.addr)
-# CHECK: %x0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_128_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRXui:%[0-9]+]] = LDRXui [[COPY]], 16 :: (load 8 from %ir.addr)
+ ; CHECK: %x0 = COPY [[LDRXui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 128
%2(p0) = G_GEP %0, %1
@@ -192,30 +191,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_512_s32_gpr
name: load_gep_512_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRWui %0, 128 :: (load 4 from %ir.addr)
-# CHECK: %w0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_512_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRWui:%[0-9]+]] = LDRWui [[COPY]], 128 :: (load 4 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRWui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 512
%2(p0) = G_GEP %0, %1
@@ -224,30 +222,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_64_s16_gpr
name: load_gep_64_s16_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRHHui %0, 32 :: (load 2 from %ir.addr)
-# CHECK: %w0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_64_s16_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRHHui:%[0-9]+]] = LDRHHui [[COPY]], 32 :: (load 2 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRHHui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 64
%2(p0) = G_GEP %0, %1
@@ -256,30 +253,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_1_s8_gpr
name: load_gep_1_s8_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRBBui %0, 1 :: (load 1 from %ir.addr)
-# CHECK: %w0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_1_s8_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRBBui:%[0-9]+]] = LDRBBui [[COPY]], 1 :: (load 1 from %ir.addr)
+ ; CHECK: %w0 = COPY [[LDRBBui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 1
%2(p0) = G_GEP %0, %1
@@ -288,130 +284,129 @@ body: |
...
---
-# CHECK-LABEL: name: load_s64_fpr
name: load_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRDui %0, 0 :: (load 8 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRDui:%[0-9]+]] = LDRDui [[COPY]], 0 :: (load 8 from %ir.addr)
+ ; CHECK: %d0 = COPY [[LDRDui]]
%0(p0) = COPY %x0
%1(s64) = G_LOAD %0 :: (load 8 from %ir.addr)
%d0 = COPY %1(s64)
...
---
-# CHECK-LABEL: name: load_s32_fpr
name: load_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRSui %0, 0 :: (load 4 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRSui:%[0-9]+]] = LDRSui [[COPY]], 0 :: (load 4 from %ir.addr)
+ ; CHECK: %s0 = COPY [[LDRSui]]
%0(p0) = COPY %x0
%1(s32) = G_LOAD %0 :: (load 4 from %ir.addr)
%s0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: load_s16_fpr
name: load_s16_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr16, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRHui %0, 0 :: (load 2 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s16_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr16
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRHui:%[0-9]+]] = LDRHui [[COPY]], 0 :: (load 2 from %ir.addr)
+ ; CHECK: %h0 = COPY [[LDRHui]]
%0(p0) = COPY %x0
%1(s16) = G_LOAD %0 :: (load 2 from %ir.addr)
%h0 = COPY %1(s16)
...
---
-# CHECK-LABEL: name: load_s8_fpr
name: load_s8_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr8, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRBui %0, 0 :: (load 1 from %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_s8_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr8
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRBui:%[0-9]+]] = LDRBui [[COPY]], 0 :: (load 1 from %ir.addr)
+ ; CHECK: %b0 = COPY [[LDRBui]]
%0(p0) = COPY %x0
%1(s8) = G_LOAD %0 :: (load 1 from %ir.addr)
%b0 = COPY %1(s8)
...
---
-# CHECK-LABEL: name: load_gep_8_s64_fpr
name: load_gep_8_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRDui %0, 1 :: (load 8 from %ir.addr)
-# CHECK: %d0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_8_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRDui:%[0-9]+]] = LDRDui [[COPY]], 1 :: (load 8 from %ir.addr)
+ ; CHECK: %d0 = COPY [[LDRDui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 8
%2(p0) = G_GEP %0, %1
@@ -420,30 +415,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_16_s32_fpr
name: load_gep_16_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRSui %0, 4 :: (load 4 from %ir.addr)
-# CHECK: %s0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_16_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRSui:%[0-9]+]] = LDRSui [[COPY]], 4 :: (load 4 from %ir.addr)
+ ; CHECK: %s0 = COPY [[LDRSui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 16
%2(p0) = G_GEP %0, %1
@@ -452,30 +446,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_64_s16_fpr
name: load_gep_64_s16_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: fpr16, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRHui %0, 32 :: (load 2 from %ir.addr)
-# CHECK: %h0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_64_s16_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: fpr16
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRHui:%[0-9]+]] = LDRHui [[COPY]], 32 :: (load 2 from %ir.addr)
+ ; CHECK: %h0 = COPY [[LDRHui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 64
%2(p0) = G_GEP %0, %1
@@ -484,30 +477,29 @@ body: |
...
---
-# CHECK-LABEL: name: load_gep_32_s8_fpr
name: load_gep_32_s8_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: fpr8, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %3 = LDRBui %0, 32 :: (load 1 from %ir.addr)
-# CHECK: %b0 = COPY %3
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_gep_32_s8_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: fpr8
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRBui:%[0-9]+]] = LDRBui [[COPY]], 32 :: (load 1 from %ir.addr)
+ ; CHECK: %b0 = COPY [[LDRBui]]
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 32
%2(p0) = G_GEP %0, %1
@@ -515,26 +507,25 @@ body: |
%b0 = COPY %3
...
---
-# CHECK-LABEL: name: load_v2s32
name: load_v2s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = LDRDui %0, 0 :: (load 8 from %ir.addr)
-# CHECK: %d0 = COPY %1
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: load_v2s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[LDRDui:%[0-9]+]] = LDRDui [[COPY]], 0 :: (load 8 from %ir.addr)
+ ; CHECK: %d0 = COPY [[LDRDui]]
%0(p0) = COPY %x0
%1(<2 x s32>) = G_LOAD %0 :: (load 8 from %ir.addr)
%d0 = COPY %1(<2 x s32>)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-muladd.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-muladd.mir
index cd7a79f17d9..119812575c5 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-muladd.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-muladd.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -7,19 +8,10 @@
...
---
-# CHECK-LABEL: name: SMADDLrrr_gpr
name: SMADDLrrr_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 4, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 5, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 6, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
@@ -29,15 +21,24 @@ registers:
- { id: 5, class: gpr }
- { id: 6, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = COPY %w2
-# CHECK: %6 = SMADDLrrr %1, %2, %0
body: |
bb.0:
liveins: %x0, %w1, %w2
+ ; CHECK-LABEL: name: SMADDLrrr_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK-NEXT: id: 4, class: gpr
+ ; CHECK-NEXT: id: 5, class: gpr
+ ; CHECK-NEXT: id: 6, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[COPY2:%[0-9]+]] = COPY %w2
+ ; CHECK: [[SMADDLrrr:%[0-9]+]] = SMADDLrrr [[COPY1]], [[COPY2]], [[COPY]]
+ ; CHECK: %x0 = COPY [[SMADDLrrr]]
%0(s64) = COPY %x0
%1(s32) = COPY %w1
%2(s32) = COPY %w2
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vcvtfxu2fp.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vcvtfxu2fp.mir
index a7a33acab25..4c3b069e88a 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vcvtfxu2fp.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vcvtfxu2fp.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -mattr=+neon,+fullfp16 -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -8,28 +9,27 @@
---
# Check that we select a 64-bit FPR vcvtfxu2fp intrinsic into UCVTFd for FPR64.
-# CHECK-LABEL: name: vcvtfxu2fp_s64_fpr
name: vcvtfxu2fp_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: fpr }
- { id: 1, class: gpr }
- { id: 2, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %d0
-# CHECK: %2 = UCVTFd %0, 12
-# CHECK: %d1 = COPY %2
body: |
bb.0:
liveins: %d0
+ ; CHECK-LABEL: name: vcvtfxu2fp_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: fpr64
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %d0
+ ; CHECK: [[UCVTFd:%[0-9]+]] = UCVTFd [[COPY]], 12
+ ; CHECK: %d1 = COPY [[UCVTFd]]
%0(s64) = COPY %d0
%1(s32) = G_CONSTANT i32 12
%2(s64) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.vcvtfxu2fp.f64), %0, %1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
index 536e236c273..38eeb7f8060 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -29,26 +30,25 @@
...
---
-# CHECK-LABEL: name: store_s64_gpr
name: store_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: STRXui %1, %0, 0 :: (store 8 into %ir.addr)
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: store_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: STRXui [[COPY1]], [[COPY]], 0 :: (store 8 into %ir.addr)
%0(p0) = COPY %x0
%1(s64) = COPY %x1
G_STORE %1, %0 :: (store 8 into %ir.addr)
@@ -56,26 +56,25 @@ body: |
...
---
-# CHECK-LABEL: name: store_s32_gpr
name: store_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRWui %1, %0, 0 :: (store 4 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRWui [[COPY1]], [[COPY]], 0 :: (store 4 into %ir.addr)
%0(p0) = COPY %x0
%1(s32) = COPY %w1
G_STORE %1, %0 :: (store 4 into %ir.addr)
@@ -83,26 +82,25 @@ body: |
...
---
-# CHECK-LABEL: name: store_s16_gpr
name: store_s16_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRHHui %1, %0, 0 :: (store 2 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_s16_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRHHui [[COPY1]], [[COPY]], 0 :: (store 2 into %ir.addr)
%0(p0) = COPY %x0
%1(s16) = COPY %w1
G_STORE %1, %0 :: (store 2 into %ir.addr)
@@ -110,26 +108,25 @@ body: |
...
---
-# CHECK-LABEL: name: store_s8_gpr
name: store_s8_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRBBui %1, %0, 0 :: (store 1 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_s8_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRBBui [[COPY1]], [[COPY]], 0 :: (store 1 into %ir.addr)
%0(p0) = COPY %x0
%1(s8) = COPY %w1
G_STORE %1, %0 :: (store 1 into %ir.addr)
@@ -137,25 +134,24 @@ body: |
...
---
-# CHECK-LABEL: name: store_zero_s64_gpr
name: store_zero_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: STRXui %xzr, %0, 0 :: (store 8 into %ir.addr)
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: store_zero_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: STRXui %xzr, [[COPY]], 0 :: (store 8 into %ir.addr)
%0(p0) = COPY %x0
%1(s64) = G_CONSTANT i64 0
G_STORE %1, %0 :: (store 8 into %ir.addr)
@@ -163,25 +159,24 @@ body: |
...
---
-# CHECK-LABEL: name: store_zero_s32_gpr
name: store_zero_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: STRWui %wzr, %0, 0 :: (store 4 into %ir.addr)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: store_zero_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: STRWui %wzr, [[COPY]], 0 :: (store 4 into %ir.addr)
%0(p0) = COPY %x0
%1(s32) = G_CONSTANT i32 0
G_STORE %1, %0 :: (store 4 into %ir.addr)
@@ -189,14 +184,10 @@ body: |
...
---
-# CHECK-LABEL: name: store_fi_s64_gpr
name: store_fi_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
@@ -204,43 +195,45 @@ registers:
stack:
- { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: STRXui %0, %stack.0.ptr0, 0 :: (store 8)
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: store_fi_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: STRXui [[COPY]], %stack.0.ptr0, 0 :: (store 8)
%0(p0) = COPY %x0
%1(p0) = G_FRAME_INDEX %stack.0.ptr0
G_STORE %0, %1 :: (store 8)
...
---
-# CHECK-LABEL: name: store_gep_128_s64_gpr
name: store_gep_128_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: STRXui %1, %0, 16 :: (store 8 into %ir.addr)
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: store_gep_128_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: STRXui [[COPY1]], [[COPY]], 16 :: (store 8 into %ir.addr)
%0(p0) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_CONSTANT i64 128
@@ -249,30 +242,29 @@ body: |
...
---
-# CHECK-LABEL: name: store_gep_512_s32_gpr
name: store_gep_512_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRWui %1, %0, 128 :: (store 4 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_gep_512_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRWui [[COPY1]], [[COPY]], 128 :: (store 4 into %ir.addr)
%0(p0) = COPY %x0
%1(s32) = COPY %w1
%2(s64) = G_CONSTANT i64 512
@@ -281,30 +273,29 @@ body: |
...
---
-# CHECK-LABEL: name: store_gep_64_s16_gpr
name: store_gep_64_s16_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRHHui %1, %0, 32 :: (store 2 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_gep_64_s16_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRHHui [[COPY1]], [[COPY]], 32 :: (store 2 into %ir.addr)
%0(p0) = COPY %x0
%1(s16) = COPY %w1
%2(s64) = G_CONSTANT i64 64
@@ -313,30 +304,29 @@ body: |
...
---
-# CHECK-LABEL: name: store_gep_1_s8_gpr
name: store_gep_1_s8_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %w1
-# CHECK: STRBBui %1, %0, 1 :: (store 1 into %ir.addr)
body: |
bb.0:
liveins: %x0, %w1
+ ; CHECK-LABEL: name: store_gep_1_s8_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: STRBBui [[COPY1]], [[COPY]], 1 :: (store 1 into %ir.addr)
%0(p0) = COPY %x0
%1(s8) = COPY %w1
%2(s64) = G_CONSTANT i64 1
@@ -345,26 +335,25 @@ body: |
...
---
-# CHECK-LABEL: name: store_s64_fpr
name: store_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %d1
-# CHECK: STRDui %1, %0, 0 :: (store 8 into %ir.addr)
body: |
bb.0:
liveins: %x0, %d1
+ ; CHECK-LABEL: name: store_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: STRDui [[COPY1]], [[COPY]], 0 :: (store 8 into %ir.addr)
%0(p0) = COPY %x0
%1(s64) = COPY %d1
G_STORE %1, %0 :: (store 8 into %ir.addr)
@@ -372,26 +361,25 @@ body: |
...
---
-# CHECK-LABEL: name: store_s32_fpr
name: store_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %s1
-# CHECK: STRSui %1, %0, 0 :: (store 4 into %ir.addr)
body: |
bb.0:
liveins: %x0, %s1
+ ; CHECK-LABEL: name: store_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: STRSui [[COPY1]], [[COPY]], 0 :: (store 4 into %ir.addr)
%0(p0) = COPY %x0
%1(s32) = COPY %s1
G_STORE %1, %0 :: (store 4 into %ir.addr)
@@ -399,30 +387,29 @@ body: |
...
---
-# CHECK-LABEL: name: store_gep_8_s64_fpr
name: store_gep_8_s64_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %d1
-# CHECK: STRDui %1, %0, 1 :: (store 8 into %ir.addr)
body: |
bb.0:
liveins: %x0, %d1
+ ; CHECK-LABEL: name: store_gep_8_s64_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr64
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %d1
+ ; CHECK: STRDui [[COPY1]], [[COPY]], 1 :: (store 8 into %ir.addr)
%0(p0) = COPY %x0
%1(s64) = COPY %d1
%2(s64) = G_CONSTANT i64 8
@@ -431,30 +418,29 @@ body: |
...
---
-# CHECK-LABEL: name: store_gep_8_s32_fpr
name: store_gep_8_s32_fpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: fpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 3, class: gpr, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: fpr }
- { id: 2, class: gpr }
- { id: 3, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %s1
-# CHECK: STRSui %1, %0, 2 :: (store 4 into %ir.addr)
body: |
bb.0:
liveins: %x0, %s1
+ ; CHECK-LABEL: name: store_gep_8_s32_fpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: fpr32
+ ; CHECK-NEXT: id: 2, class: gpr
+ ; CHECK-NEXT: id: 3, class: gpr
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %s1
+ ; CHECK: STRSui [[COPY1]], [[COPY]], 2 :: (store 4 into %ir.addr)
%0(p0) = COPY %x0
%1(s32) = COPY %s1
%2(s64) = G_CONSTANT i64 8
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-trunc.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-trunc.mir
index f43a9ab34ff..1d6664402e8 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-trunc.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-trunc.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -9,72 +10,75 @@
...
---
-# CHECK-LABEL: name: trunc_s32_s64
name: trunc_s32_s64
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64sp, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32sp, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: trunc_s32_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64sp
+ ; CHECK-NEXT: id: 1, class: gpr32sp
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s64) = COPY %x0
%1(s32) = G_TRUNC %0
%w0 = COPY %1(s32)
...
---
-# CHECK-LABEL: name: trunc_s8_s64
name: trunc_s8_s64
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %1 = COPY %0.sub_32
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: trunc_s8_s64
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]].sub_32
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s64) = COPY %x0
%1(s8) = G_TRUNC %0
%w0 = COPY %1(s8)
...
---
-# CHECK-LABEL: name: trunc_s1_s32
name: trunc_s1_s32
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
-# CHECK: body:
-# CHECK: %1 = COPY %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: trunc_s1_s32
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY [[COPY]]
+ ; CHECK: %w0 = COPY [[COPY1]]
%0(s32) = COPY %w0
%1(s1) = G_TRUNC %0
%w0 = COPY %1(s1)
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-xor.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-xor.mir
index 7190fda15b8..ec6b1e4c8c9 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-xor.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-xor.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
--- |
@@ -14,28 +15,28 @@
---
# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
-# CHECK-LABEL: name: xor_s32_gpr
name: xor_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %1 = COPY %w1
-# CHECK: %2 = EORWrr %0, %1
body: |
bb.0:
liveins: %w0, %w1
+ ; CHECK-LABEL: name: xor_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr32
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %w1
+ ; CHECK: [[EORWrr:%[0-9]+]] = EORWrr [[COPY]], [[COPY1]]
+ ; CHECK: %w0 = COPY [[EORWrr]]
%0(s32) = COPY %w0
%1(s32) = COPY %w1
%2(s32) = G_XOR %0, %1
@@ -44,28 +45,28 @@ body: |
---
# Same as xor_s64_gpr, for 64-bit operations.
-# CHECK-LABEL: name: xor_s64_gpr
name: xor_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %1 = COPY %x1
-# CHECK: %2 = EORXrr %0, %1
body: |
bb.0:
liveins: %x0, %x1
+ ; CHECK-LABEL: name: xor_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr64
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[COPY1:%[0-9]+]] = COPY %x1
+ ; CHECK: [[EORXrr:%[0-9]+]] = EORXrr [[COPY]], [[COPY1]]
+ ; CHECK: %x0 = COPY [[EORXrr]]
%0(s64) = COPY %x0
%1(s64) = COPY %x1
%2(s64) = G_XOR %0, %1
@@ -75,27 +76,27 @@ body: |
---
# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
-# CHECK-LABEL: name: xor_constant_n1_s32_gpr
name: xor_constant_n1_s32_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = ORNWrr %wzr, %0
body: |
bb.0:
liveins: %w0
+ ; CHECK-LABEL: name: xor_constant_n1_s32_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[ORNWrr:%[0-9]+]] = ORNWrr %wzr, [[COPY]]
+ ; CHECK: %w0 = COPY [[ORNWrr]]
%0(s32) = COPY %w0
%1(s32) = G_CONSTANT i32 -1
%2(s32) = G_XOR %0, %1
@@ -104,27 +105,27 @@ body: |
---
# Same as xor_constant_n1_s64_gpr, for 64-bit operations.
-# CHECK-LABEL: name: xor_constant_n1_s64_gpr
name: xor_constant_n1_s64_gpr
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr64, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: %0 = COPY %x0
-# CHECK: %2 = ORNXrr %xzr, %0
body: |
bb.0:
liveins: %x0
+ ; CHECK-LABEL: name: xor_constant_n1_s64_gpr
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr64
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr64
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %x0
+ ; CHECK: [[ORNXrr:%[0-9]+]] = ORNXrr %xzr, [[COPY]]
+ ; CHECK: %x0 = COPY [[ORNXrr]]
%0(s64) = COPY %x0
%1(s64) = G_CONSTANT i64 -1
%2(s64) = G_XOR %0, %1
@@ -133,26 +134,29 @@ body: |
---
# Check that we can obtain constants from other basic blocks.
-# CHECK-LABEL: name: xor_constant_n1_s32_gpr_2bb
name: xor_constant_n1_s32_gpr_2bb
legalized: true
regBankSelected: true
-# CHECK: registers:
-# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
-# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
-# CHECK-NEXT: - { id: 2, class: gpr32, preferred-register: '' }
registers:
- { id: 0, class: gpr }
- { id: 1, class: gpr }
- { id: 2, class: gpr }
-# CHECK: body:
-# CHECK: B %bb.1
-# CHECK: %0 = COPY %w0
-# CHECK: %2 = ORNWrr %wzr, %0
body: |
+ ; CHECK-LABEL: name: xor_constant_n1_s32_gpr_2bb
+ ; CHECK: registers:
+ ; CHECK-NEXT: id: 0, class: gpr32
+ ; CHECK-NEXT: id: 1, class: gpr
+ ; CHECK-NEXT: id: 2, class: gpr32
+ ; CHECK: bb.0:
+ ; CHECK: successors: %bb.1(0x80000000)
+ ; CHECK: B %bb.1
+ ; CHECK: bb.1:
+ ; CHECK: [[COPY:%[0-9]+]] = COPY %w0
+ ; CHECK: [[ORNWrr:%[0-9]+]] = ORNWrr %wzr, [[COPY]]
+ ; CHECK: %w0 = COPY [[ORNWrr]]
bb.0:
liveins: %w0, %w1
successors: %bb.1
OpenPOWER on IntegriCloud