127 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s6 7# GFX6/7 selection should fail.8# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX6 %s9# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX6 %s10 11---12name: atomicrmw_fadd_s32_local13legalized: true14regBankSelected: true15tracksRegLiveness: true16body: |17 bb.0:18 liveins: $vgpr0, $vgpr119 20 ; GFX8-LABEL: name: atomicrmw_fadd_s32_local21 ; GFX8: liveins: $vgpr0, $vgpr122 ; GFX8-NEXT: {{ $}}23 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr024 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr125 ; GFX8-NEXT: $m0 = S_MOV_B32 -126 ; GFX8-NEXT: [[DS_ADD_RTN_F32_:%[0-9]+]]:vgpr_32 = DS_ADD_RTN_F32 [[COPY]], [[COPY1]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)27 ; GFX8-NEXT: $vgpr0 = COPY [[DS_ADD_RTN_F32_]]28 ; GFX9-LABEL: name: atomicrmw_fadd_s32_local29 ; GFX9: liveins: $vgpr0, $vgpr130 ; GFX9-NEXT: {{ $}}31 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr032 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr133 ; GFX9-NEXT: [[DS_ADD_RTN_F32_gfx9_:%[0-9]+]]:vgpr_32 = DS_ADD_RTN_F32_gfx9 [[COPY]], [[COPY1]], 0, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)34 ; GFX9-NEXT: $vgpr0 = COPY [[DS_ADD_RTN_F32_gfx9_]]35 ; GFX6-LABEL: name: atomicrmw_fadd_s32_local36 ; GFX6: liveins: $vgpr0, $vgpr137 ; GFX6-NEXT: {{ $}}38 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr039 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr140 ; GFX6-NEXT: $m0 = S_MOV_B32 -141 ; GFX6-NEXT: [[ATOMICRMW_FADD:%[0-9]+]]:vgpr_32(s32) = G_ATOMICRMW_FADD [[COPY]](p3), [[COPY1]] :: (load store seq_cst (s32), addrspace 3)42 ; GFX6-NEXT: $vgpr0 = COPY [[ATOMICRMW_FADD]](s32)43 %0:vgpr(p3) = COPY $vgpr044 %1:vgpr(s32) = COPY $vgpr145 %2:vgpr(s32) = G_ATOMICRMW_FADD %0(p3), %1 :: (load store seq_cst (s32), addrspace 3)46 $vgpr0 = COPY %247 48...49 50---51name: atomicrmw_fadd_s32_local_noret52legalized: true53regBankSelected: true54tracksRegLiveness: true55body: |56 bb.0:57 liveins: $vgpr0, $vgpr158 59 ; GFX8-LABEL: name: atomicrmw_fadd_s32_local_noret60 ; GFX8: liveins: $vgpr0, $vgpr161 ; GFX8-NEXT: {{ $}}62 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr063 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr164 ; GFX8-NEXT: $m0 = S_MOV_B32 -165 ; GFX8-NEXT: DS_ADD_F32 [[COPY]], [[COPY1]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)66 ; GFX9-LABEL: name: atomicrmw_fadd_s32_local_noret67 ; GFX9: liveins: $vgpr0, $vgpr168 ; GFX9-NEXT: {{ $}}69 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr070 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr171 ; GFX9-NEXT: DS_ADD_F32_gfx9 [[COPY]], [[COPY1]], 0, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)72 ; GFX6-LABEL: name: atomicrmw_fadd_s32_local_noret73 ; GFX6: liveins: $vgpr0, $vgpr174 ; GFX6-NEXT: {{ $}}75 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr076 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr177 ; GFX6-NEXT: $m0 = S_MOV_B32 -178 ; GFX6-NEXT: [[ATOMICRMW_FADD:%[0-9]+]]:vgpr(s32) = G_ATOMICRMW_FADD [[COPY]](p3), [[COPY1]] :: (load store seq_cst (s32), addrspace 3)79 %0:vgpr(p3) = COPY $vgpr080 %1:vgpr(s32) = COPY $vgpr181 %2:vgpr(s32) = G_ATOMICRMW_FADD %0(p3), %1 :: (load store seq_cst (s32), addrspace 3)82 83...84 85---86name: atomicrmw_fadd_s32_local_gep487legalized: true88regBankSelected: true89tracksRegLiveness: true90body: |91 bb.0:92 liveins: $vgpr0, $vgpr193 94 ; GFX8-LABEL: name: atomicrmw_fadd_s32_local_gep495 ; GFX8: liveins: $vgpr0, $vgpr196 ; GFX8-NEXT: {{ $}}97 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr098 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr199 ; GFX8-NEXT: $m0 = S_MOV_B32 -1100 ; GFX8-NEXT: [[DS_ADD_RTN_F32_:%[0-9]+]]:vgpr_32 = DS_ADD_RTN_F32 [[COPY]], [[COPY1]], 4, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)101 ; GFX8-NEXT: $vgpr0 = COPY [[DS_ADD_RTN_F32_]]102 ; GFX9-LABEL: name: atomicrmw_fadd_s32_local_gep4103 ; GFX9: liveins: $vgpr0, $vgpr1104 ; GFX9-NEXT: {{ $}}105 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0106 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1107 ; GFX9-NEXT: [[DS_ADD_RTN_F32_gfx9_:%[0-9]+]]:vgpr_32 = DS_ADD_RTN_F32_gfx9 [[COPY]], [[COPY1]], 4, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)108 ; GFX9-NEXT: $vgpr0 = COPY [[DS_ADD_RTN_F32_gfx9_]]109 ; GFX6-LABEL: name: atomicrmw_fadd_s32_local_gep4110 ; GFX6: liveins: $vgpr0, $vgpr1111 ; GFX6-NEXT: {{ $}}112 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0113 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1114 ; GFX6-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 4115 ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32)116 ; GFX6-NEXT: $m0 = S_MOV_B32 -1117 ; GFX6-NEXT: [[ATOMICRMW_FADD:%[0-9]+]]:vgpr_32(s32) = G_ATOMICRMW_FADD [[PTR_ADD]](p3), [[COPY1]] :: (load store seq_cst (s32), addrspace 3)118 ; GFX6-NEXT: $vgpr0 = COPY [[ATOMICRMW_FADD]](s32)119 %0:vgpr(p3) = COPY $vgpr0120 %1:vgpr(s32) = COPY $vgpr1121 %2:vgpr(s32) = G_CONSTANT i32 4122 %3:vgpr(p3) = G_PTR_ADD %0, %2123 %4:vgpr(s32) = G_ATOMICRMW_FADD %3(p3), %1 :: (load store seq_cst (s32), addrspace 3)124 $vgpr0 = COPY %4125 126...127