120 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s --check-prefixes=CHECK3 4---5name: test_fcmp_canon6body: |7 bb.1:8 ; CHECK-LABEL: name: test_fcmp_canon9 ; CHECK: %lhs:_(s64) = G_FCONSTANT double 1.000000e+0010 ; CHECK-NEXT: %rhs:_(s64) = COPY $x011 ; CHECK-NEXT: %res:_(s32) = afn G_FCMP floatpred(ole), %rhs(s64), %lhs12 ; CHECK-NEXT: $w0 = COPY %res(s32)13 %lhs:_(s64) = G_FCONSTANT double 1.014 %rhs:_(s64) = COPY $x015 %res:_(s32) = afn G_FCMP floatpred(oge), %lhs(s64), %rhs16 $w0 = COPY %res(s32)17...18---19name: test_fcmp_no_canon20body: |21 bb.1:22 ; CHECK-LABEL: name: test_fcmp_no_canon23 ; CHECK: %lhs:_(s64) = COPY $x024 ; CHECK-NEXT: %rhs:_(s64) = G_FCONSTANT double 1.000000e+0025 ; CHECK-NEXT: %res:_(s32) = afn G_FCMP floatpred(oge), %lhs(s64), %rhs26 ; CHECK-NEXT: $w0 = COPY %res(s32)27 %lhs:_(s64) = COPY $x028 %rhs:_(s64) = G_FCONSTANT double 1.029 %res:_(s32) = afn G_FCMP floatpred(oge), %lhs(s64), %rhs30 $w0 = COPY %res(s32)31...32---33name: test_fcmp_no_canon_bv34body: |35 bb.1:36 ; CHECK-LABEL: name: test_fcmp_no_canon_bv37 ; CHECK: %opaque1:_(s64) = COPY $x038 ; CHECK-NEXT: %opaque2:_(s64) = COPY $x039 ; CHECK-NEXT: %const1:_(s64) = G_FCONSTANT double 1.000000e+0040 ; CHECK-NEXT: %const2:_(s64) = G_FCONSTANT double 2.000000e+0041 ; CHECK-NEXT: %lhs:_(<2 x s64>) = G_BUILD_VECTOR %const1(s64), %opaque2(s64)42 ; CHECK-NEXT: %rhs:_(<2 x s64>) = G_BUILD_VECTOR %opaque1(s64), %const2(s64)43 ; CHECK-NEXT: %res:_(<2 x s32>) = afn G_FCMP floatpred(oge), %lhs(<2 x s64>), %rhs44 ; CHECK-NEXT: $x0 = COPY %res(<2 x s32>)45 %opaque1:_(s64) = COPY $x046 %opaque2:_(s64) = COPY $x047 %const1:_(s64) = G_FCONSTANT double 1.048 %const2:_(s64) = G_FCONSTANT double 2.049 %lhs:_(<2 x s64>) = G_BUILD_VECTOR %const1(s64), %opaque2(s64)50 %rhs:_(<2 x s64>) = G_BUILD_VECTOR %opaque1(s64), %const2(s64)51 %res:_(<2 x s32>) = afn G_FCMP floatpred(oge), %lhs(<2 x s64>), %rhs52 $x0 = COPY %res(<2 x s32>)53...54---55name: test_fcmp_canon_bv56body: |57 bb.1:58 ; CHECK-LABEL: name: test_fcmp_canon_bv59 ; CHECK: %opaque1:_(s64) = COPY $x060 ; CHECK-NEXT: %opaque2:_(s64) = COPY $x061 ; CHECK-NEXT: %const1:_(s64) = G_FCONSTANT double 1.000000e+0062 ; CHECK-NEXT: %const2:_(s64) = G_FCONSTANT double 2.000000e+0063 ; CHECK-NEXT: %lhs:_(<2 x s64>) = G_BUILD_VECTOR %const1(s64), %const2(s64)64 ; CHECK-NEXT: %rhs:_(<2 x s64>) = G_BUILD_VECTOR %opaque1(s64), %opaque2(s64)65 ; CHECK-NEXT: %res:_(<2 x s32>) = afn G_FCMP floatpred(ole), %rhs(<2 x s64>), %lhs66 ; CHECK-NEXT: $x0 = COPY %res(<2 x s32>)67 %opaque1:_(s64) = COPY $x068 %opaque2:_(s64) = COPY $x069 %const1:_(s64) = G_FCONSTANT double 1.070 %const2:_(s64) = G_FCONSTANT double 2.071 %lhs:_(<2 x s64>) = G_BUILD_VECTOR %const1(s64), %const2(s64)72 %rhs:_(<2 x s64>) = G_BUILD_VECTOR %opaque1(s64), %opaque2(s64)73 %res:_(<2 x s32>) = afn G_FCMP floatpred(oge), %lhs(<2 x s64>), %rhs74 $x0 = COPY %res(<2 x s32>)75...76---77name: test_fcmp_canon_splat78body: |79 bb.1:80 ; CHECK-LABEL: name: test_fcmp_canon_splat81 ; CHECK: %const:_(s64) = G_FCONSTANT double 1.000000e+0082 ; CHECK-NEXT: %lhs:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %const(s64)83 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x184 ; CHECK-NEXT: %rhs:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[COPY]](s64)85 ; CHECK-NEXT: %res:_(<vscale x 2 x s32>) = afn G_FCMP floatpred(ole), %rhs(<vscale x 2 x s64>), %lhs86 ; CHECK-NEXT: %z:_(<vscale x 2 x s64>) = G_ZEXT %res(<vscale x 2 x s32>)87 ; CHECK-NEXT: $z0 = COPY %z(<vscale x 2 x s64>)88 %const:_(s64) = G_FCONSTANT double 1.089 %lhs:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %const:_(s64)90 %1:_(s64) = COPY $x191 %rhs:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %1:_(s64)92 %res:_(<vscale x 2 x s32>) = afn G_FCMP floatpred(oge), %lhs(<vscale x 2 x s64>), %rhs93 %z:_(<vscale x 2 x s64>) = G_ZEXT %res94 $z0 = COPY %z(<vscale x 2 x s64>)95...96---97name: test_fcmp_const98body: |99 bb.1:100 ; CHECK-LABEL: name: test_fcmp_const101 ; CHECK: %res:_(s32) = G_CONSTANT i32 0102 ; CHECK-NEXT: $w0 = COPY %res(s32)103 %lhs:_(s64) = G_FCONSTANT double 1.0104 %rhs:_(s64) = G_FCONSTANT double 2.0105 %res:_(s32) = afn G_FCMP floatpred(oge), %lhs(s64), %rhs106 $w0 = COPY %res(s32)107...108---109name: test_fcmp_const_other110body: |111 bb.1:112 ; CHECK-LABEL: name: test_fcmp_const_other113 ; CHECK: %res:_(s32) = G_CONSTANT i32 1114 ; CHECK-NEXT: $w0 = COPY %res(s32)115 %lhs:_(s64) = G_FCONSTANT double 2.0116 %rhs:_(s64) = G_FCONSTANT double 1.0117 %res:_(s32) = afn G_FCMP floatpred(oge), %lhs(s64), %rhs118 $w0 = COPY %res(s32)119...120