|  | # 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 | 
|  |  | 
|  | --- | | 
|  | 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_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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMEQv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMEQv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMEQv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]] | 
|  | ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]] | 
|  | ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMEQv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMEQv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMEQv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMEQv8i8_]] | 
|  | ; CHECK-NEXT: 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_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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]] | 
|  | ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]] | 
|  | ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMHIv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]] | 
|  | ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]] | 
|  | ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMHSv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]] | 
|  | ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]] | 
|  | ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMHIv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHIv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]] | 
|  | ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51 | 
|  | ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]] | 
|  | ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMHSv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMHSv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]] | 
|  | ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]] | 
|  | ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMGTv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]] | 
|  | ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]] | 
|  | ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMGEv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]] | 
|  | ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]] | 
|  | ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMGTv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGTv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]] | 
|  | ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0 | 
|  | ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16 | 
|  | ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]] | 
|  | ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]] | 
|  | ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv4i16_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1 | 
|  | ; CHECK-NEXT: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $q0 = COPY [[CMGEv16i8_]] | 
|  | ; CHECK-NEXT: 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-NEXT: {{  $}} | 
|  | ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | 
|  | ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1 | 
|  | ; CHECK-NEXT: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]] | 
|  | ; CHECK-NEXT: $d0 = COPY [[CMGEv8i8_]] | 
|  | ; CHECK-NEXT: 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 | 
|  |  | 
|  | ... |