181 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s7 8---9name: uadde_s32_s1_sss10legalized: true11regBankSelected: true12 13body: |14 bb.0:15 liveins: $sgpr0, $sgpr1, $sgpr216 17 ; WAVE64-LABEL: name: uadde_s32_s1_sss18 ; WAVE64: liveins: $sgpr0, $sgpr1, $sgpr219 ; WAVE64-NEXT: {{ $}}20 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr021 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr122 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr223 ; WAVE64-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 024 ; WAVE64-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc25 ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc26 ; WAVE64-NEXT: $scc = COPY [[COPY3]]27 ; WAVE64-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $scc28 ; WAVE64-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc29 ; WAVE64-NEXT: $scc = COPY [[COPY4]]30 ; WAVE64-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY]], [[COPY1]], implicit $scc31 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_ADDC_U32_]], implicit [[S_CSELECT_B32_]]32 ;33 ; WAVE32-LABEL: name: uadde_s32_s1_sss34 ; WAVE32: liveins: $sgpr0, $sgpr1, $sgpr235 ; WAVE32-NEXT: {{ $}}36 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr037 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr138 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr239 ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 040 ; WAVE32-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc41 ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc42 ; WAVE32-NEXT: $scc = COPY [[COPY3]]43 ; WAVE32-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $scc44 ; WAVE32-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc45 ; WAVE32-NEXT: $scc = COPY [[COPY4]]46 ; WAVE32-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY]], [[COPY1]], implicit $scc47 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_ADDC_U32_]], implicit [[S_CSELECT_B32_]]48 %0:sgpr(s32) = COPY $sgpr049 %1:sgpr(s32) = COPY $sgpr150 %2:sgpr(s32) = COPY $sgpr251 %3:sgpr(s32) = G_CONSTANT i32 052 %4:sgpr(s32) = G_ICMP intpred(eq), %2, %353 %5:sgpr(s32), %6:sgpr(s32) = G_UADDE %0, %1, %454 %7:sgpr(s32) = G_SELECT %6, %0, %155 S_ENDPGM 0, implicit %5, implicit %756...57 58---59name: uadde_s32_s1_vvv60legalized: true61regBankSelected: true62 63body: |64 bb.0:65 liveins: $vgpr0, $vgpr1, $vgpr266 67 ; WAVE64-LABEL: name: uadde_s32_s1_vvv68 ; WAVE64: liveins: $vgpr0, $vgpr1, $vgpr269 ; WAVE64-NEXT: {{ $}}70 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr071 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr172 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr273 ; WAVE64-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec74 ; WAVE64-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[V_MOV_B32_e32_]], implicit $exec75 ; WAVE64-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY]], [[COPY1]], [[V_CMP_EQ_U32_e64_]], 0, implicit $exec76 ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], [[V_ADDC_U32_e64_1]], implicit $exec77 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_ADDC_U32_e64_]], implicit [[V_CNDMASK_B32_e64_]]78 ;79 ; WAVE32-LABEL: name: uadde_s32_s1_vvv80 ; WAVE32: liveins: $vgpr0, $vgpr1, $vgpr281 ; WAVE32-NEXT: {{ $}}82 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr083 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr184 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr285 ; WAVE32-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec86 ; WAVE32-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[V_MOV_B32_e32_]], implicit $exec87 ; WAVE32-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY]], [[COPY1]], [[V_CMP_EQ_U32_e64_]], 0, implicit $exec88 ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], [[V_ADDC_U32_e64_1]], implicit $exec89 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_ADDC_U32_e64_]], implicit [[V_CNDMASK_B32_e64_]]90 %0:vgpr(s32) = COPY $vgpr091 %1:vgpr(s32) = COPY $vgpr192 %2:vgpr(s32) = COPY $vgpr293 %3:vgpr(s32) = G_CONSTANT i32 094 %4:vcc(s1) = G_ICMP intpred(eq), %2, %395 %5:vgpr(s32), %6:vcc(s1) = G_UADDE %0, %1, %496 %7:vgpr(s32) = G_SELECT %6, %0, %197 S_ENDPGM 0, implicit %5, implicit %798...99 100---101name: uadde_s32_s1_sss_unused_co102legalized: true103regBankSelected: true104 105body: |106 bb.0:107 liveins: $sgpr0, $sgpr1, $sgpr2108 109 ; WAVE64-LABEL: name: uadde_s32_s1_sss_unused_co110 ; WAVE64: liveins: $sgpr0, $sgpr1, $sgpr2111 ; WAVE64-NEXT: {{ $}}112 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0113 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1114 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2115 ; WAVE64-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0116 ; WAVE64-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc117 ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc118 ; WAVE64-NEXT: $scc = COPY [[COPY3]]119 ; WAVE64-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY]], [[COPY1]], implicit-def dead $scc, implicit $scc120 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_ADDC_U32_]]121 ;122 ; WAVE32-LABEL: name: uadde_s32_s1_sss_unused_co123 ; WAVE32: liveins: $sgpr0, $sgpr1, $sgpr2124 ; WAVE32-NEXT: {{ $}}125 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0126 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1127 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2128 ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0129 ; WAVE32-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc130 ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc131 ; WAVE32-NEXT: $scc = COPY [[COPY3]]132 ; WAVE32-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY]], [[COPY1]], implicit-def dead $scc, implicit $scc133 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_ADDC_U32_]]134 %0:sgpr(s32) = COPY $sgpr0135 %1:sgpr(s32) = COPY $sgpr1136 %2:sgpr(s32) = COPY $sgpr2137 %3:sgpr(s32) = G_CONSTANT i32 0138 %4:sgpr(s32) = G_ICMP intpred(eq), %2, %3139 %5:sgpr(s32), %6:sgpr(s32) = G_UADDE %0, %1, %4140 S_ENDPGM 0, implicit %5141...142 143---144name: uadde_s32_s1_vvv_unused_co145legalized: true146regBankSelected: true147 148body: |149 bb.0:150 liveins: $vgpr0, $vgpr1, $vgpr2151 152 ; WAVE64-LABEL: name: uadde_s32_s1_vvv_unused_co153 ; WAVE64: liveins: $vgpr0, $vgpr1, $vgpr2154 ; WAVE64-NEXT: {{ $}}155 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0156 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1157 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2158 ; WAVE64-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec159 ; WAVE64-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[V_MOV_B32_e32_]], implicit $exec160 ; WAVE64-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY]], [[COPY1]], [[V_CMP_EQ_U32_e64_]], 0, implicit $exec161 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_ADDC_U32_e64_]]162 ;163 ; WAVE32-LABEL: name: uadde_s32_s1_vvv_unused_co164 ; WAVE32: liveins: $vgpr0, $vgpr1, $vgpr2165 ; WAVE32-NEXT: {{ $}}166 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0167 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1168 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2169 ; WAVE32-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec170 ; WAVE32-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[V_MOV_B32_e32_]], implicit $exec171 ; WAVE32-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY]], [[COPY1]], [[V_CMP_EQ_U32_e64_]], 0, implicit $exec172 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_ADDC_U32_e64_]]173 %0:vgpr(s32) = COPY $vgpr0174 %1:vgpr(s32) = COPY $vgpr1175 %2:vgpr(s32) = COPY $vgpr2176 %3:vgpr(s32) = G_CONSTANT i32 0177 %4:vcc(s1) = G_ICMP intpred(eq), %2, %3178 %5:vgpr(s32), %6:vcc(s1) = G_UADDE %0, %1, %4179 S_ENDPGM 0, implicit %5180...181