summaryrefslogtreecommitdiff
path: root/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/AArch64/GlobalISel/select-bitcast.mir')
-rw-r--r--test/CodeGen/AArch64/GlobalISel/select-bitcast.mir212
1 files changed, 212 insertions, 0 deletions
diff --git a/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir b/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
new file mode 100644
index 0000000000000..5ca63dbc214d5
--- /dev/null
+++ b/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
@@ -0,0 +1,212 @@
+# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s
+
+--- |
+ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+
+ define void @bitcast_s32_gpr() { ret void }
+ define void @bitcast_s32_fpr() { ret void }
+ define void @bitcast_s32_gpr_fpr() { ret void }
+ define void @bitcast_s32_fpr_gpr() { ret void }
+ define void @bitcast_s64_gpr() { ret void }
+ define void @bitcast_s64_fpr() { ret void }
+ define void @bitcast_s64_gpr_fpr() { ret void }
+ define void @bitcast_s64_fpr_gpr() { ret void }
+...
+
+---
+# CHECK-LABEL: name: bitcast_s32_gpr
+name: bitcast_s32_gpr
+legalized: true
+regBankSelected: true
+# CHECK: registers:
+# CHECK-NEXT: - { id: 0, class: gpr32all }
+# CHECK-NEXT: - { id: 1, class: gpr32all }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %w0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %w0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: fpr32 }
+registers:
+ - { id: 0, class: fpr }
+ - { id: 1, class: fpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %s0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %s0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: fpr32 }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: fpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %w0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %w0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: gpr32all }
+registers:
+ - { id: 0, class: fpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %s0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %s0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: gpr64all }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %x0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %x0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: fpr64 }
+registers:
+ - { id: 0, class: fpr }
+ - { id: 1, class: fpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %d0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %d0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: fpr64 }
+registers:
+ - { id: 0, class: gpr }
+ - { id: 1, class: fpr }
+# CHECK: body:
+# CHECK: %0 = COPY %x0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %x0
+
+ %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 }
+# CHECK-NEXT: - { id: 1, class: gpr64all }
+registers:
+ - { id: 0, class: fpr }
+ - { id: 1, class: gpr }
+
+# CHECK: body:
+# CHECK: %0 = COPY %d0
+# CHECK: %1 = COPY %0
+body: |
+ bb.0:
+ liveins: %d0
+
+ %0(s64) = COPY %d0
+ %1(s64) = G_BITCAST %0
+ %x0 = COPY %1(s64)
+...