389 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX10 %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN %s3 4# GCN-LABEL: name: flat_atomic_fcmpswap_to_s_denorm_mode5# GCN: FLAT_ATOMIC_FCMPSWAP6# GFX10-NEXT: S_NOP 27# GCN-NEXT: S_DENORM_MODE8---9name: flat_atomic_fcmpswap_to_s_denorm_mode10body: |11 bb.0:12 FLAT_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)13 S_DENORM_MODE 0, implicit-def $mode, implicit $mode14...15 16# GCN-LABEL: name: flat_atomic_fcmpswap_x2_to_s_denorm_mode17# GCN: FLAT_ATOMIC_FCMPSWAP_X218# GFX10-NEXT: S_NOP 219# GCN-NEXT: S_DENORM_MODE20---21name: flat_atomic_fcmpswap_x2_to_s_denorm_mode22body: |23 bb.0:24 FLAT_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)25 S_DENORM_MODE 0, implicit-def $mode, implicit $mode26...27 28# GCN-LABEL: name: flat_atomic_fmax_to_s_denorm_mode29# GCN: FLAT_ATOMIC_FMAX30# GFX10-NEXT: S_NOP 231# GCN-NEXT: S_DENORM_MODE32---33name: flat_atomic_fmax_to_s_denorm_mode34body: |35 bb.0:36 FLAT_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)37 S_DENORM_MODE 0, implicit-def $mode, implicit $mode38...39 40# GCN-LABEL: name: flat_atomic_fmax_x2_to_s_denorm_mode41# GCN: FLAT_ATOMIC_MAX_F6442# GFX10-NEXT: S_NOP 243# GCN-NEXT: S_DENORM_MODE44---45name: flat_atomic_fmax_x2_to_s_denorm_mode46body: |47 bb.0:48 FLAT_ATOMIC_MAX_F64 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)49 S_DENORM_MODE 0, implicit-def $mode, implicit $mode50...51 52# GCN-LABEL: name: flat_atomic_fmin_to_s_denorm_mode53# GCN: FLAT_ATOMIC_FMIN54# GFX10-NEXT: S_NOP 255# GCN-NEXT: S_DENORM_MODE56---57name: flat_atomic_fmin_to_s_denorm_mode58body: |59 bb.0:60 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)61 S_DENORM_MODE 0, implicit-def $mode, implicit $mode62...63 64# GCN-LABEL: name: flat_atomic_fmin_x2_to_s_denorm_mode65# GCN: FLAT_ATOMIC_MIN_F6466# GFX10-NEXT: S_NOP 267# GCN-NEXT: S_DENORM_MODE68---69name: flat_atomic_fmin_x2_to_s_denorm_mode70body: |71 bb.0:72 FLAT_ATOMIC_MIN_F64 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)73 S_DENORM_MODE 0, implicit-def $mode, implicit $mode74...75 76# GCN-LABEL: name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode77# GCN: FLAT_ATOMIC_FCMPSWAP_X2_RTN78# GFX10-NEXT: S_NOP 279# GCN-NEXT: S_DENORM_MODE80---81name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode82body: |83 bb.0:84 %2:vreg_64 = FLAT_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)85 S_DENORM_MODE 0, implicit-def $mode, implicit $mode86...87 88# GCN-LABEL: name: flat_atomic_fmax_rtn_to_s_denorm_mode89# GCN: FLAT_ATOMIC_FMAX_RTN90# GFX10-NEXT: S_NOP 291# GCN-NEXT: S_DENORM_MODE92---93name: flat_atomic_fmax_rtn_to_s_denorm_mode94body: |95 bb.0:96 %2:vgpr_32 = FLAT_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)97 S_DENORM_MODE 0, implicit-def $mode, implicit $mode98...99 100# GCN-LABEL: name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode101# GCN: FLAT_ATOMIC_MAX_F64_RTN102# GFX10-NEXT: S_NOP 2103# GCN-NEXT: S_DENORM_MODE104---105name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode106body: |107 bb.0:108 %2:vreg_64 = FLAT_ATOMIC_MAX_F64_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)109 S_DENORM_MODE 0, implicit-def $mode, implicit $mode110...111 112# GCN-LABEL: name: flat_atomic_fmin_rtn_to_s_denorm_mode113# GCN: FLAT_ATOMIC_FMIN_RTN114# GFX10-NEXT: S_NOP 2115# GCN-NEXT: S_DENORM_MODE116---117name: flat_atomic_fmin_rtn_to_s_denorm_mode118body: |119 bb.0:120 %2:vgpr_32 = FLAT_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)121 S_DENORM_MODE 0, implicit-def $mode, implicit $mode122...123 124# GCN-LABEL: name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode125# GCN: FLAT_ATOMIC_MIN_F64_RTN126# GFX10-NEXT: S_NOP 2127# GCN-NEXT: S_DENORM_MODE128---129name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode130body: |131 bb.0:132 %2:vreg_64 = FLAT_ATOMIC_MIN_F64_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)133 S_DENORM_MODE 0, implicit-def $mode, implicit $mode134...135 136# GCN-LABEL: name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode137# GCN: FLAT_ATOMIC_FCMPSWAP_RTN138# GFX10-NEXT: S_NOP 2139# GCN-NEXT: S_DENORM_MODE140---141name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode142body: |143 bb.0:144 %2:vgpr_32 = FLAT_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)145 S_DENORM_MODE 0, implicit-def $mode, implicit $mode146...147 148# GCN-LABEL: name: global_atomic_fcmpswap_to_s_denorm_mode149# GCN: GLOBAL_ATOMIC_FCMPSWAP150# GFX10-NEXT: S_NOP 2151# GCN-NEXT: S_DENORM_MODE152---153name: global_atomic_fcmpswap_to_s_denorm_mode154body: |155 bb.0:156 GLOBAL_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)157 S_DENORM_MODE 0, implicit-def $mode, implicit $mode158...159 160# GCN-LABEL: name: global_atomic_fcmpswap_x2_to_s_denorm_mode161# GCN: GLOBAL_ATOMIC_FCMPSWAP_X2162# GFX10-NEXT: S_NOP 2163# GCN-NEXT: S_DENORM_MODE164---165name: global_atomic_fcmpswap_x2_to_s_denorm_mode166body: |167 bb.0:168 GLOBAL_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)169 S_DENORM_MODE 0, implicit-def $mode, implicit $mode170...171 172# GCN-LABEL: name: global_atomic_fmax_to_s_denorm_mode173# GCN: GLOBAL_ATOMIC_FMAX174# GFX10-NEXT: S_NOP 2175# GCN-NEXT: S_DENORM_MODE176---177name: global_atomic_fmax_to_s_denorm_mode178body: |179 bb.0:180 GLOBAL_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)181 S_DENORM_MODE 0, implicit-def $mode, implicit $mode182...183 184# GCN-LABEL: name: global_atomic_fmax_x2_to_s_denorm_mode185# GCN: GLOBAL_ATOMIC_MAX_F64186# GFX10-NEXT: S_NOP 2187# GCN-NEXT: S_DENORM_MODE188---189name: global_atomic_fmax_x2_to_s_denorm_mode190body: |191 bb.0:192 GLOBAL_ATOMIC_MAX_F64 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)193 S_DENORM_MODE 0, implicit-def $mode, implicit $mode194...195 196# GCN-LABEL: name: global_atomic_fmin_to_s_denorm_mode197# GCN: GLOBAL_ATOMIC_FMIN198# GFX10-NEXT: S_NOP 2199# GCN-NEXT: S_DENORM_MODE200---201name: global_atomic_fmin_to_s_denorm_mode202body: |203 bb.0:204 GLOBAL_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)205 S_DENORM_MODE 0, implicit-def $mode, implicit $mode206...207 208# GCN-LABEL: name: global_atomic_fmin_x2_to_s_denorm_mode209# GCN: GLOBAL_ATOMIC_MIN_F64210# GFX10-NEXT: S_NOP 2211# GCN-NEXT: S_DENORM_MODE212---213name: global_atomic_fmin_x2_to_s_denorm_mode214body: |215 bb.0:216 GLOBAL_ATOMIC_MIN_F64 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)217 S_DENORM_MODE 0, implicit-def $mode, implicit $mode218...219 220# GCN-LABEL: name: global_atomic_fcmpswap_rtn_to_s_denorm_mode221# GCN: GLOBAL_ATOMIC_FCMPSWAP_RTN222# GFX10-NEXT: S_NOP 2223# GCN-NEXT: S_DENORM_MODE224---225name: global_atomic_fcmpswap_rtn_to_s_denorm_mode226body: |227 bb.0:228 %2:vgpr_32 = GLOBAL_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)229 S_DENORM_MODE 0, implicit-def $mode, implicit $mode230...231 232# GCN-LABEL: name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode233# GCN: GLOBAL_ATOMIC_FCMPSWAP_X2_RTN234# GFX10-NEXT: S_NOP 2235# GCN-NEXT: S_DENORM_MODE236---237name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode238body: |239 bb.0:240 %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)241 S_DENORM_MODE 0, implicit-def $mode, implicit $mode242...243 244# GCN-LABEL: name: global_atomic_fmax_rtn_to_s_denorm_mode245# GCN: GLOBAL_ATOMIC_FMAX_RTN246# GFX10-NEXT: S_NOP 2247# GCN-NEXT: S_DENORM_MODE248---249name: global_atomic_fmax_rtn_to_s_denorm_mode250body: |251 bb.0:252 %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)253 S_DENORM_MODE 0, implicit-def $mode, implicit $mode254...255 256# GCN-LABEL: name: global_atomic_fmax_x2_rtn_to_s_denorm_mode257# GCN: GLOBAL_ATOMIC_MAX_F64_RTN258# GFX10-NEXT: S_NOP 2259# GCN-NEXT: S_DENORM_MODE260---261name: global_atomic_fmax_x2_rtn_to_s_denorm_mode262body: |263 bb.0:264 %2:vreg_64 = GLOBAL_ATOMIC_MAX_F64_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)265 S_DENORM_MODE 0, implicit-def $mode, implicit $mode266...267 268# GCN-LABEL: name: global_atomic_fmin_rtn_to_s_denorm_mode269# GCN: GLOBAL_ATOMIC_FMIN_RTN270# GFX10-NEXT: S_NOP 2271# GCN-NEXT: S_DENORM_MODE272---273name: global_atomic_fmin_rtn_to_s_denorm_mode274body: |275 bb.0:276 %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)277 S_DENORM_MODE 0, implicit-def $mode, implicit $mode278...279 280# GCN-LABEL: name: global_atomic_fmin_x2_rtn_to_s_denorm_mode281# GCN: GLOBAL_ATOMIC_MIN_F64_RTN282# GFX10-NEXT: S_NOP 2283# GCN-NEXT: S_DENORM_MODE284---285name: global_atomic_fmin_x2_rtn_to_s_denorm_mode286body: |287 bb.0:288 %2:vreg_64 = GLOBAL_ATOMIC_MIN_F64_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)289 S_DENORM_MODE 0, implicit-def $mode, implicit $mode290...291 292# GCN-LABEL: name: global_atomic_fcmpswap_saddr_to_s_denorm_mode293# GCN: GLOBAL_ATOMIC_FCMPSWAP_SADDR294# GFX10-NEXT: S_NOP 2295# GCN-NEXT: S_DENORM_MODE296---297name: global_atomic_fcmpswap_saddr_to_s_denorm_mode298body: |299 bb.0:300 GLOBAL_ATOMIC_FCMPSWAP_SADDR undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)301 S_DENORM_MODE 0, implicit-def $mode, implicit $mode302...303 304# GCN-LABEL: name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode305# GCN: GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN306# GFX10-NEXT: S_NOP 2307# GCN-NEXT: S_DENORM_MODE308---309name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode310body: |311 bb.0:312 %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_128, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)313 S_DENORM_MODE 0, implicit-def $mode, implicit $mode314...315 316# GCN-LABEL: name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode317# GCN: GLOBAL_ATOMIC_FMAX_SADDR_RTN318# GFX10-NEXT: S_NOP 2319# GCN-NEXT: S_DENORM_MODE320---321name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode322body: |323 bb.0:324 %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)325 S_DENORM_MODE 0, implicit-def $mode, implicit $mode326...327 328# GCN-LABEL: name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode329# GCN: GLOBAL_ATOMIC_MAX_F64_SADDR_RTN330# GFX10-NEXT: S_NOP 2331# GCN-NEXT: S_DENORM_MODE332---333name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode334body: |335 bb.0:336 %2:vreg_64 = GLOBAL_ATOMIC_MAX_F64_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)337 S_DENORM_MODE 0, implicit-def $mode, implicit $mode338...339 340# GCN-LABEL: name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode341# GCN: GLOBAL_ATOMIC_FMIN_SADDR_RTN342# GFX10-NEXT: S_NOP 2343# GCN-NEXT: S_DENORM_MODE344---345name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode346body: |347 bb.0:348 %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)349 S_DENORM_MODE 0, implicit-def $mode, implicit $mode350...351 352# GCN-LABEL: name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode353# GCN: GLOBAL_ATOMIC_MIN_F64_SADDR_RTN354# GFX10-NEXT: S_NOP 2355# GCN-NEXT: S_DENORM_MODE356---357name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode358body: |359 bb.0:360 %2:vreg_64 = GLOBAL_ATOMIC_MIN_F64_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)361 S_DENORM_MODE 0, implicit-def $mode, implicit $mode362...363 364# GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_waitcnt365# GCN: FLAT_ATOMIC_FMIN366# GCN-NEXT: S_WAITCNT367# GCN-NEXT: S_DENORM_MODE368---369name: flat_fp_atomic_to_s_denorm_mode_waitcnt370body: |371 bb.0:372 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)373 S_WAITCNT 0374 S_DENORM_MODE 0, implicit-def $mode, implicit $mode375...376 377# GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_valu378# GCN: FLAT_ATOMIC_FMIN379# GCN-NEXT: V_ADD_F32_e32380# GCN-NEXT: S_DENORM_MODE381---382name: flat_fp_atomic_to_s_denorm_mode_valu383body: |384 bb.0:385 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) poison`)386 %2:vgpr_32 = V_ADD_F32_e32 undef %1:vgpr_32, undef %1:vgpr_32, implicit $mode, implicit $exec387 S_DENORM_MODE 0, implicit-def $mode, implicit $mode388...389