1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -o - %s | FileCheck -check-prefix=SI %s 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii -run-pass=legalizer -o - %s | FileCheck -check-prefix=CI %s 4 5--- 6name: test_frint_s16 7body: | 8 bb.0: 9 liveins: $vgpr0 10 11 ; SI-LABEL: name: test_frint_s16 12 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 13 ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 14 ; SI: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16) 15 ; SI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[FPEXT]] 16 ; SI: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FRINT]](s32) 17 ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16) 18 ; SI: $vgpr0 = COPY [[ANYEXT]](s32) 19 ; CI-LABEL: name: test_frint_s16 20 ; CI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 21 ; CI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 22 ; CI: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16) 23 ; CI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[FPEXT]] 24 ; CI: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FRINT]](s32) 25 ; CI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16) 26 ; CI: $vgpr0 = COPY [[ANYEXT]](s32) 27 %0:_(s32) = COPY $vgpr0 28 %1:_(s16) = G_TRUNC %0 29 %2:_(s16) = G_FRINT %1 30 %3:_(s32) = G_ANYEXT %2 31 $vgpr0 = COPY %3 32... 33 34--- 35name: test_frint_s32 36body: | 37 bb.0: 38 liveins: $vgpr0 39 40 ; SI-LABEL: name: test_frint_s32 41 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 42 ; SI: $vgpr0 = COPY [[COPY]](s32) 43 ; CI-LABEL: name: test_frint_s32 44 ; CI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 45 ; CI: $vgpr0 = COPY [[COPY]](s32) 46 %0:_(s32) = COPY $vgpr0 47 %1:_(s32) = G_FRINT %0 48 $vgpr0 = COPY %0 49... 50 51--- 52name: test_frint_s64 53body: | 54 bb.0: 55 liveins: $vgpr0_vgpr1 56 57 ; SI-LABEL: name: test_frint_s64 58 ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 59 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 60 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4841369599423283200 61 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]] 62 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[C1]], [[AND]] 63 ; SI: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[COPY]], [[OR]] 64 ; SI: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[OR]] 65 ; SI: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FADD]], [[FNEG]] 66 ; SI: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x432FFFFFFFFFFFFF 67 ; SI: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY]] 68 ; SI: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS]](s64), [[C2]] 69 ; SI: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[COPY]], [[FADD1]] 70 ; SI: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 71 ; CI-LABEL: name: test_frint_s64 72 ; CI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 73 ; CI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]] 74 ; CI: $vgpr0_vgpr1 = COPY [[FRINT]](s64) 75 %0:_(s64) = COPY $vgpr0_vgpr1 76 %1:_(s64) = G_FRINT %0 77 $vgpr0_vgpr1 = COPY %1 78... 79 80--- 81name: test_frint_v2s16 82body: | 83 bb.0: 84 liveins: $vgpr0 85 86 ; SI-LABEL: name: test_frint_v2s16 87 ; SI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 88 ; SI: $vgpr0 = COPY [[COPY]](<2 x s16>) 89 ; CI-LABEL: name: test_frint_v2s16 90 ; CI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 91 ; CI: $vgpr0 = COPY [[COPY]](<2 x s16>) 92 %0:_(<2 x s16>) = COPY $vgpr0 93 %1:_(<2 x s16>) = G_FRINT %0 94 $vgpr0 = COPY %0 95... 96 97--- 98name: test_frint_v2s32 99body: | 100 bb.0: 101 liveins: $vgpr0_vgpr1 102 103 ; SI-LABEL: name: test_frint_v2s32 104 ; SI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 105 ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 106 ; SI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[UV]] 107 ; SI: [[FRINT1:%[0-9]+]]:_(s32) = G_FRINT [[UV1]] 108 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FRINT]](s32), [[FRINT1]](s32) 109 ; SI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 110 ; CI-LABEL: name: test_frint_v2s32 111 ; CI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 112 ; CI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 113 ; CI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[UV]] 114 ; CI: [[FRINT1:%[0-9]+]]:_(s32) = G_FRINT [[UV1]] 115 ; CI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FRINT]](s32), [[FRINT1]](s32) 116 ; CI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 117 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 118 %1:_(<2 x s32>) = G_FRINT %0 119 $vgpr0_vgpr1 = COPY %1 120... 121 122--- 123name: test_frint_v2s64 124body: | 125 bb.0: 126 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 127 128 ; SI-LABEL: name: test_frint_v2s64 129 ; SI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 130 ; SI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 131 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 132 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4841369599423283200 133 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C]] 134 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[C1]], [[AND]] 135 ; SI: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[UV]], [[OR]] 136 ; SI: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[OR]] 137 ; SI: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FADD]], [[FNEG]] 138 ; SI: [[C2:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x432FFFFFFFFFFFFF 139 ; SI: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[UV]] 140 ; SI: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS]](s64), [[C2]] 141 ; SI: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[UV]], [[FADD1]] 142 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C]] 143 ; SI: [[OR1:%[0-9]+]]:_(s64) = G_OR [[C1]], [[AND1]] 144 ; SI: [[FADD2:%[0-9]+]]:_(s64) = G_FADD [[UV1]], [[OR1]] 145 ; SI: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[OR1]] 146 ; SI: [[FADD3:%[0-9]+]]:_(s64) = G_FADD [[FADD2]], [[FNEG1]] 147 ; SI: [[FABS1:%[0-9]+]]:_(s64) = G_FABS [[UV1]] 148 ; SI: [[FCMP1:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS1]](s64), [[C2]] 149 ; SI: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[FCMP1]](s1), [[UV1]], [[FADD3]] 150 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SELECT]](s64), [[SELECT1]](s64) 151 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 152 ; CI-LABEL: name: test_frint_v2s64 153 ; CI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 154 ; CI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 155 ; CI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[UV]] 156 ; CI: [[FRINT1:%[0-9]+]]:_(s64) = G_FRINT [[UV1]] 157 ; CI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FRINT]](s64), [[FRINT1]](s64) 158 ; CI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 159 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 160 %1:_(<2 x s64>) = G_FRINT %0 161 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 162... 163