1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=legalizer -O0 -global-isel %s -o - | FileCheck %s 3--- 4name: fptrunc_s16_s32 5body: | 6 bb.0: 7 liveins: $s0 8 9 ; CHECK-LABEL: name: fptrunc_s16_s32 10 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 11 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY]](s32) 12 ; CHECK: $h0 = COPY [[FPTRUNC]](s16) 13 ; CHECK: RET_ReallyLR implicit $h0 14 %0:_(s32) = COPY $s0 15 %1:_(s16) = G_FPTRUNC %0 16 $h0 = COPY %1(s16) 17 RET_ReallyLR implicit $h0 18... 19--- 20name: fptrunc_s16_s64 21body: | 22 bb.0: 23 liveins: $d0 24 25 ; CHECK-LABEL: name: fptrunc_s16_s64 26 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $d0 27 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY]](s64) 28 ; CHECK: $h0 = COPY [[FPTRUNC]](s16) 29 ; CHECK: RET_ReallyLR implicit $h0 30 %0:_(s64) = COPY $d0 31 %1:_(s16) = G_FPTRUNC %0 32 $h0 = COPY %1(s16) 33 RET_ReallyLR implicit $h0 34... 35--- 36name: fptrunc_s32_s64 37body: | 38 bb.0: 39 liveins: $d0 40 41 ; CHECK-LABEL: name: fptrunc_s32_s64 42 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $d0 43 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(s32) = G_FPTRUNC [[COPY]](s64) 44 ; CHECK: $s0 = COPY [[FPTRUNC]](s32) 45 ; CHECK: RET_ReallyLR implicit $s0 46 %0:_(s64) = COPY $d0 47 %1:_(s32) = G_FPTRUNC %0 48 $s0 = COPY %1(s32) 49 RET_ReallyLR implicit $s0 50... 51--- 52name: fptrunc_v4s16_v4s32 53body: | 54 bb.0: 55 liveins: $q0 56 57 ; CHECK-LABEL: name: fptrunc_v4s16_v4s32 58 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 59 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[COPY]](<4 x s32>) 60 ; CHECK: $d0 = COPY [[FPTRUNC]](<4 x s16>) 61 ; CHECK: RET_ReallyLR implicit $d0 62 %0:_(<4 x s32>) = COPY $q0 63 %1:_(<4 x s16>) = G_FPTRUNC %0 64 $d0 = COPY %1(<4 x s16>) 65 RET_ReallyLR implicit $d0 66... 67--- 68name: fptrunc_v2s16_v2s32 69body: | 70 bb.0: 71 liveins: $d0 72 73 ; CHECK-LABEL: name: fptrunc_v2s16_v2s32 74 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0 75 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(<2 x s16>) = G_FPTRUNC [[COPY]](<2 x s32>) 76 ; CHECK: $s0 = COPY [[FPTRUNC]](<2 x s16>) 77 ; CHECK: RET_ReallyLR implicit $s0 78 %0:_(<2 x s32>) = COPY $d0 79 %1:_(<2 x s16>) = G_FPTRUNC %0 80 $s0 = COPY %1(<2 x s16>) 81 RET_ReallyLR implicit $s0 82... 83--- 84name: fptrunc_v4s32_v4s64 85body: | 86 bb.0: 87 88 ; CHECK-LABEL: name: fptrunc_v4s32_v4s64 89 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF 90 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[DEF]](<2 x s64>) 91 ; CHECK: [[FPTRUNC1:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[DEF]](<2 x s64>) 92 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[FPTRUNC]](<2 x s32>), [[FPTRUNC1]](<2 x s32>) 93 ; CHECK: $q0 = COPY [[CONCAT_VECTORS]](<4 x s32>) 94 ; CHECK: RET_ReallyLR implicit $q0 95 %0:_(<4 x s64>) = G_IMPLICIT_DEF 96 %1:_(<4 x s32>) = G_FPTRUNC %0 97 $q0 = COPY %1(<4 x s32>) 98 RET_ReallyLR implicit $q0 99... 100--- 101name: fptrunc_v8s32_v8s64 102body: | 103 bb.0: 104 105 liveins: $x0, $q0, $q1, $q2, $q3, $x0 106 107 ; CHECK-LABEL: name: fptrunc_v8s32_v8s64 108 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0 109 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1 110 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $q2 111 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s64>) = COPY $q3 112 ; CHECK: [[COPY4:%[0-9]+]]:_(p0) = COPY $x0 113 ; CHECK: [[FPTRUNC:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[COPY]](<2 x s64>) 114 ; CHECK: [[FPTRUNC1:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[COPY1]](<2 x s64>) 115 ; CHECK: [[FPTRUNC2:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[COPY2]](<2 x s64>) 116 ; CHECK: [[FPTRUNC3:%[0-9]+]]:_(<2 x s32>) = G_FPTRUNC [[COPY3]](<2 x s64>) 117 ; CHECK: [[COPY5:%[0-9]+]]:_(p0) = COPY $x0 118 ; CHECK: G_STORE [[FPTRUNC]](<2 x s32>), [[COPY5]](p0) :: (store 8, align 32) 119 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 120 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY5]], [[C]](s64) 121 ; CHECK: G_STORE [[FPTRUNC1]](<2 x s32>), [[PTR_ADD]](p0) :: (store 8 + 8) 122 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 123 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY5]], [[C1]](s64) 124 ; CHECK: G_STORE [[FPTRUNC2]](<2 x s32>), [[PTR_ADD1]](p0) :: (store 8 + 16, align 16) 125 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 24 126 ; CHECK: [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY5]], [[C2]](s64) 127 ; CHECK: G_STORE [[FPTRUNC3]](<2 x s32>), [[PTR_ADD2]](p0) :: (store 8 + 24) 128 ; CHECK: RET_ReallyLR 129 %2:_(<2 x s64>) = COPY $q0 130 %3:_(<2 x s64>) = COPY $q1 131 %4:_(<2 x s64>) = COPY $q2 132 %5:_(<2 x s64>) = COPY $q3 133 %0:_(<8 x s64>) = G_CONCAT_VECTORS %2(<2 x s64>), %3(<2 x s64>), %4(<2 x s64>), %5(<2 x s64>) 134 %1:_(p0) = COPY $x0 135 %6:_(<8 x s32>) = G_FPTRUNC %0(<8 x s64>) 136 %7:_(p0) = COPY $x0 137 G_STORE %6(<8 x s32>), %7(p0) :: (store 32) 138 RET_ReallyLR 139... 140