117 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64 -run-pass=legalizer -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s3---4name: test_scmp5body: |6 bb.0.entry:7 ; CHECK-LABEL: name: test_scmp8 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x09 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x010 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY]](s64), [[COPY1]]11 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]12 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 113 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 014 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[C]], [[C1]]15 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 316 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s32), [[C2]], [[SELECT]]17 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SELECT1]], 218 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)19 %0:_(s64) = COPY $x020 %1:_(s64) = COPY $x021 %4:_(s2) = G_SCMP %0(s64), %122 %14:_(s32) = G_SEXT %4(s2)23 $w0 = COPY %14(s32)24 25...26---27name: test_ucmp28body: |29 bb.0.entry:30 ; CHECK-LABEL: name: test_ucmp31 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x032 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x033 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s64), [[COPY1]]34 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]35 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 136 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 037 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s32), [[C]], [[C1]]38 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 339 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s32), [[C2]], [[SELECT]]40 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SELECT1]], 241 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)42 %0:_(s64) = COPY $x043 %1:_(s64) = COPY $x044 %4:_(s2) = G_UCMP %0(s64), %145 %14:_(s32) = G_SEXT %4(s2)46 $w0 = COPY %14(s32)47 48...49---50name: test_ucmp_vector51body: |52 bb.0.entry:53 ; CHECK-LABEL: name: test_ucmp_vector54 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w055 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w156 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w257 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w358 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)59 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w060 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w161 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $w262 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $w363 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)64 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(ugt), [[BUILD_VECTOR]](<4 x s32>), [[BUILD_VECTOR1]]65 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(ult), [[BUILD_VECTOR]](<4 x s32>), [[BUILD_VECTOR1]]66 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[ICMP1]](<4 x s32>)67 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[ICMP]](<4 x s32>)68 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(<4 x s16>) = G_SUB [[TRUNC]], [[TRUNC1]]69 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<4 x s32>) = G_ANYEXT [[SUB]](<4 x s16>)70 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<4 x s32>) = G_SEXT_INREG [[ANYEXT]], 271 ; CHECK-NEXT: $q0 = COPY [[SEXT_INREG]](<4 x s32>)72 %0:_(s32) = COPY $w073 %1:_(s32) = COPY $w174 %2:_(s32) = COPY $w275 %3:_(s32) = COPY $w376 %4:_(<4 x s32>) = G_BUILD_VECTOR %0(s32), %1(s32), %2(s32), %3(s32)77 %5:_(s32) = COPY $w078 %6:_(s32) = COPY $w179 %7:_(s32) = COPY $w280 %8:_(s32) = COPY $w381 %9:_(<4 x s32>) = G_BUILD_VECTOR %0(s32), %1(s32), %2(s32), %3(s32)82 %10:_(<4 x s2>) = G_UCMP %4(<4 x s32>), %983 %11:_(<4 x s32>) = G_SEXT %10(<4 x s2>)84 $q0 = COPY %11(<4 x s32>)85 86...87---88name: test_ucmp_i12889body: |90 bb.0.entry:91 ; CHECK-LABEL: name: test_ucmp_i12892 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x093 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x094 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF95 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s64), [[COPY1]]96 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[DEF]](s64), [[DEF]]97 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[DEF]](s64), [[DEF]]98 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s32), [[ICMP]], [[ICMP1]]99 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]100 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[DEF]](s64), [[DEF]]101 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[DEF]](s64), [[DEF]]102 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP5]](s32), [[ICMP3]], [[ICMP4]]103 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1104 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0105 ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[SELECT]](s32), [[C]], [[C1]]106 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3107 ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[SELECT1]](s32), [[C2]], [[SELECT2]]108 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SELECT3]], 2109 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)110 %0:_(s64) = COPY $x0111 %1:_(s64) = COPY $x0112 %l:_(s128) = G_ANYEXT %0113 %r:_(s128) = G_ANYEXT %1114 %4:_(s2) = G_UCMP %l(s128), %r115 %14:_(s32) = G_SEXT %4(s2)116 $w0 = COPY %14(s32)117