185 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple aarch64 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s3 4name: test_constant5registers:6body: |7 bb.0:8 liveins: $x09 ; CHECK-LABEL: name: test_constant10 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 011 ; CHECK: $w0 = COPY [[C]](s32)12 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4213 ; CHECK: $w0 = COPY [[C1]](s32)14 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -115 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[C2]](s32)16 ; CHECK: $w0 = COPY [[COPY]](s32)17 ; CHECK: $w0 = COPY [[C2]](s32)18 ; CHECK: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 119 ; CHECK: $x0 = COPY [[C3]](s64)20 ; CHECK: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 021 ; CHECK: $x0 = COPY [[C4]](s64)22 %0:_(s1) = G_CONSTANT i1 023 %6:_(s32) = G_ANYEXT %024 $w0 = COPY %625 %1:_(s8) = G_CONSTANT i8 4226 %7:_(s32) = G_ANYEXT %127 $w0 = COPY %728 %2:_(s16) = G_CONSTANT i16 6553529 %8:_(s32) = G_ANYEXT %230 $w0 = COPY %831 %3:_(s32) = G_CONSTANT i32 -132 $w0 = COPY %333 %4:_(s64) = G_CONSTANT i64 134 $x0 = COPY %435 %5:_(s64) = G_CONSTANT i64 036 $x0 = COPY %537...38 39---40name: test_fconstant41body: |42 bb.0:43 liveins: $x044 ; CHECK-LABEL: name: test_fconstant45 ; CHECK: liveins: $x046 ; CHECK-NEXT: {{ $}}47 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.000000e+0048 ; CHECK-NEXT: $w0 = COPY [[C]](s32)49 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 2.000000e+0050 ; CHECK-NEXT: $x0 = COPY [[C1]](s64)51 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH000052 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[C2]](s16)53 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)54 %0:_(s32) = G_FCONSTANT float 1.055 $w0 = COPY %056 %1:_(s64) = G_FCONSTANT double 2.057 $x0 = COPY %158 %2:_(s16) = G_FCONSTANT half 0.059 %3:_(s32) = G_ANYEXT %260 $w0 = COPY %361...62 63---64name: s79265registers:66body: |67 bb.0:68 liveins: $x069 ; CHECK-LABEL: name: s79270 ; CHECK: liveins: $x071 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: %trunc:_(s32) = G_CONSTANT i32 073 ; CHECK-NEXT: $w0 = COPY %trunc(s32)74 ; CHECK-NEXT: RET_ReallyLR implicit $w075 %cst:_(s792) = G_CONSTANT i792 076 %trunc:_(s32) = G_TRUNC %cst(s792)77 $w0 = COPY %trunc(s32)78 RET_ReallyLR implicit $w079...80---81name: s31882registers:83body: |84 bb.0:85 liveins: $x086 ; CHECK-LABEL: name: s31887 ; CHECK: liveins: $x088 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 123490 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 091 ; CHECK-NEXT: %ptr:_(p0) = COPY $x092 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -193 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 461168601842738790394 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[C]], [[C2]]95 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C2]]96 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C2]]97 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C2]]98 ; CHECK-NEXT: [[AND4:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C3]]99 ; CHECK-NEXT: G_STORE [[AND]](s64), %ptr(p0) :: (store (s64), align 64)100 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 8101 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C4]](s64)102 ; CHECK-NEXT: G_STORE [[AND1]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)103 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 16104 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C5]](s64)105 ; CHECK-NEXT: G_STORE [[AND2]](s64), [[PTR_ADD1]](p0) :: (store (s64) into unknown-address + 16, align 16)106 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 24107 ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C6]](s64)108 ; CHECK-NEXT: G_STORE [[AND3]](s64), [[PTR_ADD2]](p0) :: (store (s64) into unknown-address + 24)109 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 32110 ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C7]](s64)111 ; CHECK-NEXT: G_STORE [[AND4]](s64), [[PTR_ADD3]](p0) :: (store (s64) into unknown-address + 32, align 32)112 ; CHECK-NEXT: RET_ReallyLR implicit $w0113 %cst:_(s318) = G_CONSTANT i318 1234114 %ptr:_(p0) = COPY $x0115 G_STORE %cst(s318), %ptr(p0) :: (store (s318))116 RET_ReallyLR implicit $w0117...118---119name: s158120registers:121body: |122 bb.0:123 liveins: $x0124 ; CHECK-LABEL: name: s158125 ; CHECK: liveins: $x0126 ; CHECK-NEXT: {{ $}}127 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1234128 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0129 ; CHECK-NEXT: %ptr:_(p0) = COPY $x0130 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1131 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 1073741823132 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[C]], [[C2]]133 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C2]]134 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C3]]135 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[AND]](s64)136 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY [[AND1]](s64)137 ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[AND2]](s64), 0138 ; CHECK-NEXT: G_STORE [[COPY]](s64), %ptr(p0) :: (store (s64), align 32)139 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 8140 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C4]](s64)141 ; CHECK-NEXT: G_STORE [[COPY1]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)142 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 16143 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C5]](s64)144 ; CHECK-NEXT: G_STORE [[EXTRACT]](s32), [[PTR_ADD1]](p0) :: (store (s32) into unknown-address + 16, align 16)145 ; CHECK-NEXT: RET_ReallyLR implicit $w0146 %cst:_(s158) = G_CONSTANT i158 1234147 %ptr:_(p0) = COPY $x0148 G_STORE %cst(s158), %ptr(p0) :: (store (s158))149 RET_ReallyLR implicit $w0150...151---152name: s142153registers:154body: |155 bb.0:156 liveins: $x0157 158 ; CHECK-LABEL: name: s142159 ; CHECK: liveins: $x0160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1234162 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0163 ; CHECK-NEXT: %ptr:_(p0) = COPY $x0164 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1165 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16383166 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[C]], [[C2]]167 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C2]]168 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[C1]], [[C3]]169 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[AND]](s64)170 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY [[AND1]](s64)171 ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[AND2]](s64), 0172 ; CHECK-NEXT: G_STORE [[COPY]](s64), %ptr(p0) :: (store (s64), align 32)173 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 8174 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C4]](s64)175 ; CHECK-NEXT: G_STORE [[COPY1]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)176 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 16177 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C5]](s64)178 ; CHECK-NEXT: G_STORE [[EXTRACT]](s16), [[PTR_ADD1]](p0) :: (store (s16) into unknown-address + 16, align 16)179 ; CHECK-NEXT: RET_ReallyLR implicit $w0180 %cst:_(s142) = G_CONSTANT i142 1234181 %ptr:_(p0) = COPY $x0182 G_STORE %cst(s142), %ptr(p0) :: (store (s142))183 RET_ReallyLR implicit $w0184...185