Files
clang-p2996/llvm/test/CodeGen/AArch64/GlobalISel/select-vector-icmp.mir
Amara Emerson fceadbcb33 [AArch64][GlobalISel] Improve codegen for some constant vectors by using constant pool loads.
There's more smarts in AArch64ISelLowering that we don't have yet, but this
change incrementally improves some of the more common patterns. I think future
iterations will want to use some combination of PostLegalizerCombiner and the
selector to catch the other cases.

Differential Revision: https://reviews.llvm.org/D82340
2020-06-23 19:23:47 -07:00

3291 lines
97 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
--- |
; ModuleID = 'icmp-autogen-tests-with-ne.ll'
source_filename = "icmp-autogen-tests-with-ne.ll"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64"
define <2 x i1> @test_v2i64_eq(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp eq <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_eq(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp eq <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_eq(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp eq <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_eq(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp eq <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_eq(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp eq <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_eq(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp eq <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_eq(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp eq <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_eq(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp eq <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_ne(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp ne <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_ne(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp ne <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_ne(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp ne <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_ne(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp ne <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_ne(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp ne <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_ne(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp ne <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_ne(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp ne <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_ne(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp ne <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_ugt(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp ugt <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_ugt(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp ugt <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_ugt(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp ugt <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_ugt(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp ugt <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_ugt(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp ugt <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_ugt(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp ugt <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_ugt(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp ugt <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_ugt(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp ugt <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_uge(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp uge <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_uge(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp uge <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_uge(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp uge <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_uge(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp uge <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_uge(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp uge <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_uge(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp uge <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_uge(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp uge <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_uge(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp uge <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_ult(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp ult <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_ult(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp ult <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_ult(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp ult <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_ult(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp ult <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_ult(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp ult <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_ult(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp ult <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_ult(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp ult <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_ult(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp ult <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_ule(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp ule <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_ule(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp ule <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_ule(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp ule <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_ule(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp ule <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_ule(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp ule <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_ule(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp ule <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_ule(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp ule <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_ule(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp ule <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_sgt(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp sgt <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_sgt(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp sgt <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_sgt(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp sgt <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_sgt(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp sgt <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_sgt(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp sgt <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_sgt(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp sgt <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_sgt(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp sgt <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_sgt(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp sgt <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_sge(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp sge <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_sge(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp sge <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_sge(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp sge <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_sge(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp sge <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_sge(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp sge <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_sge(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp sge <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_sge(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp sge <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_sge(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp sge <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_slt(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp slt <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_slt(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp slt <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_slt(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp slt <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_slt(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp slt <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_slt(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp slt <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_slt(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp slt <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_slt(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp slt <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_slt(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp slt <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
define <2 x i1> @test_v2i64_sle(<2 x i64> %v1, <2 x i64> %v2) {
%cmp = icmp sle <2 x i64> %v1, %v2
ret <2 x i1> %cmp
}
define <4 x i1> @test_v4i32_sle(<4 x i32> %v1, <4 x i32> %v2) {
%cmp = icmp sle <4 x i32> %v1, %v2
ret <4 x i1> %cmp
}
define <2 x i1> @test_v2i32_sle(<2 x i32> %v1, <2 x i32> %v2) {
%cmp = icmp sle <2 x i32> %v1, %v2
ret <2 x i1> %cmp
}
define <2 x i1> @test_v2i16_sle(<2 x i16> %v1, <2 x i16> %v2) {
%cmp = icmp sle <2 x i16> %v1, %v2
ret <2 x i1> %cmp
}
define <8 x i1> @test_v8i16_sle(<8 x i16> %v1, <8 x i16> %v2) {
%cmp = icmp sle <8 x i16> %v1, %v2
ret <8 x i1> %cmp
}
define <4 x i1> @test_v4i16_sle(<4 x i16> %v1, <4 x i16> %v2) {
%cmp = icmp sle <4 x i16> %v1, %v2
ret <4 x i1> %cmp
}
define <16 x i1> @test_v16i8_sle(<16 x i8> %v1, <16 x i8> %v2) {
%cmp = icmp sle <16 x i8> %v1, %v2
ret <16 x i1> %cmp
}
define <8 x i1> @test_v8i8_sle(<8 x i8> %v1, <8 x i8> %v2) {
%cmp = icmp sle <8 x i8> %v1, %v2
ret <8 x i1> %cmp
}
...
---
name: test_v2i64_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_eq
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMEQv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(eq), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_eq
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMEQv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(eq), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_eq
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMEQv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(eq), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_eq
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
; CHECK: $d0 = COPY [[CMEQv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_eq
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_eq
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMEQv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_eq
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
; CHECK: $q0 = COPY [[CMEQv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_eq
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_eq
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMEQv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_ne
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(ne), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_ne
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_ne
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
; CHECK: $d0 = COPY [[NOTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_ne
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
; CHECK: $d0 = COPY [[NOTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_ne
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_ne
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
; CHECK: $d0 = COPY [[NOTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_ne
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
; CHECK: $q0 = COPY [[NOTv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_ne
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_ne
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
; CHECK: $d0 = COPY [[NOTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_ugt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(ugt), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_ugt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_ugt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHIv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_ugt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
; CHECK: $d0 = COPY [[CMHIv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_ugt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_ugt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHIv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_ugt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
; CHECK: $q0 = COPY [[CMHIv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_ugt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_ugt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHIv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_uge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(uge), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_uge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_uge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHSv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_uge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
; CHECK: $d0 = COPY [[CMHSv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_uge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_uge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHSv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_uge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
; CHECK: $q0 = COPY [[CMHSv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_uge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_uge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMHSv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_ult
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(ult), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_ult
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_ult
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHIv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_ult
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
; CHECK: $d0 = COPY [[CMHIv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_ult
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_ult
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHIv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_ult
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
; CHECK: $q0 = COPY [[CMHIv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_ult
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_ult
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHIv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_ule
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(ule), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_ule
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_ule
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHSv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: gpr }
- { id: 14, class: fpr }
- { id: 15, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_ule
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
; CHECK: $d0 = COPY [[CMHSv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%13:gpr(s32) = G_CONSTANT i32 65535
%14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
%15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%7:fpr(<2 x s32>) = G_AND %15, %14
%10:gpr(s32) = G_CONSTANT i32 65535
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%8:fpr(<2 x s32>) = G_AND %12, %11
%9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_ule
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_ule
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHSv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_ule
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
; CHECK: $q0 = COPY [[CMHSv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_ule
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_ule
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMHSv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_sgt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(sgt), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_sgt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_sgt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGTv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: fpr }
- { id: 14, class: gpr }
- { id: 15, class: fpr }
- { id: 16, class: fpr }
- { id: 17, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_sgt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
; CHECK: $d0 = COPY [[CMGTv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%14:gpr(s32) = G_CONSTANT i32 16
%15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
%16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
%7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
%10:gpr(s32) = G_CONSTANT i32 16
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
%8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
%9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_sgt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_sgt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGTv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_sgt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
; CHECK: $q0 = COPY [[CMGTv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_sgt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_sgt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_sge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(sge), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_sge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_sge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGEv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: fpr }
- { id: 14, class: gpr }
- { id: 15, class: fpr }
- { id: 16, class: fpr }
- { id: 17, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_sge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
; CHECK: $d0 = COPY [[CMGEv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%14:gpr(s32) = G_CONSTANT i32 16
%15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
%16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
%7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
%10:gpr(s32) = G_CONSTANT i32 16
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
%8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
%9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_sge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_sge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGEv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_sge
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
; CHECK: $q0 = COPY [[CMGEv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_sge
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_sge
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
; CHECK: $d0 = COPY [[CMGEv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_slt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(slt), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_slt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_slt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGTv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: fpr }
- { id: 14, class: gpr }
- { id: 15, class: fpr }
- { id: 16, class: fpr }
- { id: 17, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_slt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
; CHECK: $d0 = COPY [[CMGTv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%14:gpr(s32) = G_CONSTANT i32 16
%15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
%16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
%7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
%10:gpr(s32) = G_CONSTANT i32 16
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
%8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
%9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_slt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_slt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGTv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_slt
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
; CHECK: $q0 = COPY [[CMGTv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_slt
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_slt
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGTv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i64_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v2i64_sle
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
; CHECK: $d0 = COPY [[XTNv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s64>) = COPY $q0
%1:fpr(<2 x s64>) = COPY $q1
%4:fpr(<2 x s64>) = G_ICMP intpred(sle), %0(<2 x s64>), %1
%3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i32_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v4i32_sle
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
; CHECK: $d0 = COPY [[XTNv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s32>) = COPY $q0
%1:fpr(<4 x s32>) = COPY $q1
%4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
%3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i32_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i32_sle
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGEv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<2 x s32>) = COPY $d0
%1:fpr(<2 x s32>) = COPY $d1
%4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
%3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
$d0 = COPY %3(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v2i16_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: fpr }
- { id: 3, class: fpr }
- { id: 4, class: _ }
- { id: 5, class: fpr }
- { id: 6, class: _ }
- { id: 7, class: fpr }
- { id: 8, class: fpr }
- { id: 9, class: fpr }
- { id: 10, class: gpr }
- { id: 11, class: fpr }
- { id: 12, class: fpr }
- { id: 13, class: fpr }
- { id: 14, class: gpr }
- { id: 15, class: fpr }
- { id: 16, class: fpr }
- { id: 17, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v2i16_sle
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
; CHECK: $d0 = COPY [[CMGEv2i32_]]
; CHECK: RET_ReallyLR implicit $d0
%2:fpr(<2 x s32>) = COPY $d0
%3:fpr(<2 x s32>) = COPY $d1
%14:gpr(s32) = G_CONSTANT i32 16
%15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
%16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
%17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
%7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
%10:gpr(s32) = G_CONSTANT i32 16
%11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
%12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
%13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
%8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
%9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
%5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
$d0 = COPY %5(<2 x s32>)
RET_ReallyLR implicit $d0
...
---
name: test_v8i16_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v8i16_sle
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
; CHECK: $d0 = COPY [[XTNv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s16>) = COPY $q0
%1:fpr(<8 x s16>) = COPY $q1
%4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
%3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...
---
name: test_v4i16_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v4i16_sle
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGEv4i16_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<4 x s16>) = COPY $d0
%1:fpr(<4 x s16>) = COPY $d1
%4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
%3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
$d0 = COPY %3(<4 x s16>)
RET_ReallyLR implicit $d0
...
---
name: test_v16i8_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $q0, $q1
; CHECK-LABEL: name: test_v16i8_sle
; CHECK: liveins: $q0, $q1
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
; CHECK: $q0 = COPY [[CMGEv16i8_]]
; CHECK: RET_ReallyLR implicit $q0
%0:fpr(<16 x s8>) = COPY $q0
%1:fpr(<16 x s8>) = COPY $q1
%4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
%3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
$q0 = COPY %3(<16 x s8>)
RET_ReallyLR implicit $q0
...
---
name: test_v8i8_sle
alignment: 4
legalized: true
regBankSelected: true
tracksRegLiveness: true
registers:
- { id: 0, class: fpr }
- { id: 1, class: fpr }
- { id: 2, class: _ }
- { id: 3, class: fpr }
- { id: 4, class: fpr }
machineFunctionInfo: {}
body: |
bb.1 (%ir-block.0):
liveins: $d0, $d1
; CHECK-LABEL: name: test_v8i8_sle
; CHECK: liveins: $d0, $d1
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
; CHECK: $d0 = COPY [[CMGEv8i8_]]
; CHECK: RET_ReallyLR implicit $d0
%0:fpr(<8 x s8>) = COPY $d0
%1:fpr(<8 x s8>) = COPY $d1
%4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
%3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
$d0 = COPY %3(<8 x s8>)
RET_ReallyLR implicit $d0
...