brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.7 KiB · e90e7d9 Raw
219 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  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s4# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %s8 9 10---11name:            atomic_cmpxchg_s32_local12legalized:       true13regBankSelected: true14tracksRegLiveness: true15body:             |16  bb.0:17    liveins: $vgpr0, $vgpr1, $vgpr218 19    ; GFX6-LABEL: name: atomic_cmpxchg_s32_local20    ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr221    ; GFX6-NEXT: {{  $}}22    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr023    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr124    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr225    ; GFX6-NEXT: $m0 = S_MOV_B32 -126    ; GFX6-NEXT: [[DS_CMPST_RTN_B32_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)27    ; GFX6-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_]]28    ; GFX7-LABEL: name: atomic_cmpxchg_s32_local29    ; GFX7: liveins: $vgpr0, $vgpr1, $vgpr230    ; GFX7-NEXT: {{  $}}31    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr032    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr133    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr234    ; GFX7-NEXT: $m0 = S_MOV_B32 -135    ; GFX7-NEXT: [[DS_CMPST_RTN_B32_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)36    ; GFX7-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_]]37    ; GFX9-LABEL: name: atomic_cmpxchg_s32_local38    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr239    ; GFX9-NEXT: {{  $}}40    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr142    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr243    ; GFX9-NEXT: [[DS_CMPST_RTN_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32_gfx9 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)44    ; GFX9-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_gfx9_]]45    ; GFX11-LABEL: name: atomic_cmpxchg_s32_local46    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr247    ; GFX11-NEXT: {{  $}}48    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr049    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr150    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr251    ; GFX11-NEXT: [[DS_CMPSTORE_RTN_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_CMPSTORE_RTN_B32_gfx9 [[COPY]], [[COPY2]], [[COPY1]], 0, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)52    ; GFX11-NEXT: $vgpr0 = COPY [[DS_CMPSTORE_RTN_B32_gfx9_]]53    %0:vgpr(p3) = COPY $vgpr054    %1:vgpr(s32) = COPY $vgpr155    %2:vgpr(s32) = COPY $vgpr256    %3:vgpr(s32) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store seq_cst (s32), addrspace 3)57    $vgpr0 = COPY %358 59...60 61---62name:            atomic_cmpxchg_s32_local_gep463legalized:       true64regBankSelected: true65tracksRegLiveness: true66body:             |67  bb.0:68    liveins: $vgpr0, $vgpr1, $vgpr269 70    ; GFX6-LABEL: name: atomic_cmpxchg_s32_local_gep471    ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr272    ; GFX6-NEXT: {{  $}}73    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr074    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr175    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr276    ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4, implicit $exec77    ; GFX6-NEXT: %4:vgpr_32, dead %6:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec78    ; GFX6-NEXT: $m0 = S_MOV_B32 -179    ; GFX6-NEXT: [[DS_CMPST_RTN_B32_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32 %4, [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)80    ; GFX6-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_]]81    ; GFX7-LABEL: name: atomic_cmpxchg_s32_local_gep482    ; GFX7: liveins: $vgpr0, $vgpr1, $vgpr283    ; GFX7-NEXT: {{  $}}84    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr085    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr186    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr287    ; GFX7-NEXT: $m0 = S_MOV_B32 -188    ; GFX7-NEXT: [[DS_CMPST_RTN_B32_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32 [[COPY]], [[COPY1]], [[COPY2]], 4, 0, implicit $m0, implicit $exec :: (load store seq_cst (s32), addrspace 3)89    ; GFX7-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_]]90    ; GFX9-LABEL: name: atomic_cmpxchg_s32_local_gep491    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr292    ; GFX9-NEXT: {{  $}}93    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr094    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr195    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr296    ; GFX9-NEXT: [[DS_CMPST_RTN_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_CMPST_RTN_B32_gfx9 [[COPY]], [[COPY1]], [[COPY2]], 4, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)97    ; GFX9-NEXT: $vgpr0 = COPY [[DS_CMPST_RTN_B32_gfx9_]]98    ; GFX11-LABEL: name: atomic_cmpxchg_s32_local_gep499    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr2100    ; GFX11-NEXT: {{  $}}101    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0102    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1103    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2104    ; GFX11-NEXT: [[DS_CMPSTORE_RTN_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_CMPSTORE_RTN_B32_gfx9 [[COPY]], [[COPY2]], [[COPY1]], 4, 0, implicit $exec :: (load store seq_cst (s32), addrspace 3)105    ; GFX11-NEXT: $vgpr0 = COPY [[DS_CMPSTORE_RTN_B32_gfx9_]]106    %0:vgpr(p3) = COPY $vgpr0107    %1:vgpr(s32) = COPY $vgpr1108    %2:vgpr(s32) = COPY $vgpr2109    %3:vgpr(s32) = G_CONSTANT i32 4110    %4:vgpr(p3) = G_PTR_ADD %0, %3111    %5:vgpr(s32) = G_ATOMIC_CMPXCHG %4, %1, %2 :: (load store seq_cst (s32), addrspace 3)112    $vgpr0 = COPY %5113 114...115 116---117name:            atomic_cmpxchg_s64_local118legalized:       true119regBankSelected: true120tracksRegLiveness: true121body:             |122  bb.0:123    liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4124 125    ; GFX6-LABEL: name: atomic_cmpxchg_s64_local126    ; GFX6: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4127    ; GFX6-NEXT: {{  $}}128    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0129    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2130    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4131    ; GFX6-NEXT: $m0 = S_MOV_B32 -1132    ; GFX6-NEXT: [[DS_CMPST_RTN_B64_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s64), addrspace 3)133    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_]]134    ; GFX7-LABEL: name: atomic_cmpxchg_s64_local135    ; GFX7: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4136    ; GFX7-NEXT: {{  $}}137    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0138    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2139    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4140    ; GFX7-NEXT: $m0 = S_MOV_B32 -1141    ; GFX7-NEXT: [[DS_CMPST_RTN_B64_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s64), addrspace 3)142    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_]]143    ; GFX9-LABEL: name: atomic_cmpxchg_s64_local144    ; GFX9: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4145    ; GFX9-NEXT: {{  $}}146    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0147    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2148    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4149    ; GFX9-NEXT: [[DS_CMPST_RTN_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64_gfx9 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $exec :: (load store seq_cst (s64), addrspace 3)150    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_gfx9_]]151    ; GFX11-LABEL: name: atomic_cmpxchg_s64_local152    ; GFX11: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4153    ; GFX11-NEXT: {{  $}}154    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0155    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2156    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4157    ; GFX11-NEXT: [[DS_CMPSTORE_RTN_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_CMPSTORE_RTN_B64_gfx9 [[COPY]], [[COPY2]], [[COPY1]], 0, 0, implicit $exec :: (load store seq_cst (s64), addrspace 3)158    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPSTORE_RTN_B64_gfx9_]]159    %0:vgpr(p3) = COPY $vgpr0160    %1:vgpr(s64) = COPY $vgpr1_vgpr2161    %2:vgpr(s64) = COPY $vgpr3_vgpr4162    %3:vgpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store seq_cst (s64), addrspace 3)163    $vgpr0_vgpr1 = COPY %3164 165...166 167---168name:            atomic_cmpxchg_s64_local_gep4169legalized:       true170regBankSelected: true171tracksRegLiveness: true172body:             |173  bb.0:174    liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4175 176    ; GFX6-LABEL: name: atomic_cmpxchg_s64_local_gep4177    ; GFX6: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4178    ; GFX6-NEXT: {{  $}}179    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0180    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2181    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4182    ; GFX6-NEXT: $m0 = S_MOV_B32 -1183    ; GFX6-NEXT: [[DS_CMPST_RTN_B64_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s64), addrspace 3)184    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_]]185    ; GFX7-LABEL: name: atomic_cmpxchg_s64_local_gep4186    ; GFX7: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4187    ; GFX7-NEXT: {{  $}}188    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0189    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2190    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4191    ; GFX7-NEXT: $m0 = S_MOV_B32 -1192    ; GFX7-NEXT: [[DS_CMPST_RTN_B64_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $m0, implicit $exec :: (load store seq_cst (s64), addrspace 3)193    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_]]194    ; GFX9-LABEL: name: atomic_cmpxchg_s64_local_gep4195    ; GFX9: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4196    ; GFX9-NEXT: {{  $}}197    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0198    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2199    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4200    ; GFX9-NEXT: [[DS_CMPST_RTN_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_CMPST_RTN_B64_gfx9 [[COPY]], [[COPY1]], [[COPY2]], 0, 0, implicit $exec :: (load store seq_cst (s64), addrspace 3)201    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPST_RTN_B64_gfx9_]]202    ; GFX11-LABEL: name: atomic_cmpxchg_s64_local_gep4203    ; GFX11: liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4204    ; GFX11-NEXT: {{  $}}205    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0206    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2207    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4208    ; GFX11-NEXT: [[DS_CMPSTORE_RTN_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_CMPSTORE_RTN_B64_gfx9 [[COPY]], [[COPY2]], [[COPY1]], 0, 0, implicit $exec :: (load store seq_cst (s64), addrspace 3)209    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[DS_CMPSTORE_RTN_B64_gfx9_]]210    %0:vgpr(p3) = COPY $vgpr0211    %1:vgpr(s64) = COPY $vgpr1_vgpr2212    %2:vgpr(s64) = COPY $vgpr3_vgpr4213    %3:vgpr(s32) = G_CONSTANT i32 4214    %4:vgpr(p3) = G_PTR_ADD %0, %3215    %5:vgpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store seq_cst (s64), addrspace 3)216    $vgpr0_vgpr1 = COPY %5217 218...219