85 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-combiner --aarch64postlegalizercombiner-only-enable-rule="mutate_anyext_to_zext" -verify-machineinstrs %s -o - | FileCheck %s3# REQUIRES: asserts4 5...6---7name: scalar_icmp8legalized: true9tracksRegLiveness: true10body: |11 bb.0:12 liveins: $x013 ; Scalars have 0 or 1, so we want a ZExt.14 15 ; CHECK-LABEL: name: scalar_icmp16 ; CHECK: liveins: $x017 ; CHECK-NEXT: {{ $}}18 ; CHECK-NEXT: %copy:_(s64) = COPY $x019 ; CHECK-NEXT: %cst_1:_(s64) = G_CONSTANT i64 120 ; CHECK-NEXT: %icmp:_(s32) = G_ICMP intpred(eq), %copy(s64), %cst_121 ; CHECK-NEXT: %ext:_(s64) = G_ZEXT %icmp(s32)22 ; CHECK-NEXT: $x0 = COPY %ext(s64)23 ; CHECK-NEXT: RET_ReallyLR implicit $x024 %copy:_(s64) = COPY $x025 %cst_1:_(s64) = G_CONSTANT i64 126 %icmp:_(s32) = G_ICMP intpred(eq), %copy(s64), %cst_127 %ext:_(s64) = G_ANYEXT %icmp(s32)28 $x0 = COPY %ext(s64)29 RET_ReallyLR implicit $x030 31 32...33---34name: vector_icmp35legalized: true36tracksRegLiveness: true37body: |38 bb.0:39 liveins: $x0, $d040 ; Vectors have 0 or negative 1, so we don't produce a zext.41 42 ; CHECK-LABEL: name: vector_icmp43 ; CHECK: liveins: $x0, $d044 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: %copy:_(<2 x s32>) = COPY $d046 ; CHECK-NEXT: %cst_1:_(s32) = G_CONSTANT i32 147 ; CHECK-NEXT: %vec_cst_1:_(<2 x s32>) = G_BUILD_VECTOR %cst_1(s32), %cst_1(s32)48 ; CHECK-NEXT: %icmp:_(<2 x s32>) = G_ICMP intpred(eq), %copy(<2 x s32>), %vec_cst_149 ; CHECK-NEXT: %ext:_(<2 x s64>) = G_ANYEXT %icmp(<2 x s32>)50 ; CHECK-NEXT: $q0 = COPY %ext(<2 x s64>)51 ; CHECK-NEXT: RET_ReallyLR implicit $q052 %copy:_(<2 x s32>) = COPY $d053 %cst_1:_(s32) = G_CONSTANT i32 154 %vec_cst_1:_(<2 x s32>) = G_BUILD_VECTOR %cst_1, %cst_155 %icmp:_(<2 x s32>) = G_ICMP intpred(eq), %copy(<2 x s32>), %vec_cst_156 %ext:_(<2 x s64>) = G_ANYEXT %icmp(<2 x s32>)57 $q0 = COPY %ext(<2 x s64>)58 RET_ReallyLR implicit $q059 60...61---62name: scalar_fcmp63legalized: true64tracksRegLiveness: true65body: |66 bb.0:67 liveins: $x0, $d068 ; Scalars have 0 or 1, so we want a ZExt.69 70 ; CHECK-LABEL: name: scalar_fcmp71 ; CHECK: liveins: $x0, $d072 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: %copy:_(s64) = COPY $d074 ; CHECK-NEXT: %cst_1:_(s64) = G_FCONSTANT double 1.000000e+0075 ; CHECK-NEXT: %fcmp:_(s32) = G_FCMP intpred(eq), %copy(s64), %cst_176 ; CHECK-NEXT: %ext:_(s64) = G_ZEXT %fcmp(s32)77 ; CHECK-NEXT: $x0 = COPY %ext(s64)78 ; CHECK-NEXT: RET_ReallyLR implicit $x079 %copy:_(s64) = COPY $d080 %cst_1:_(s64) = G_FCONSTANT double 1.081 %fcmp:_(s32) = G_FCMP intpred(eq), %copy(s64), %cst_182 %ext:_(s64) = G_ANYEXT %fcmp(s32)83 $x0 = COPY %ext(s64)84 RET_ReallyLR implicit $x085