forked from OSchip/llvm-project
165 lines
6.2 KiB
YAML
165 lines
6.2 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=+fp32-denormals,+fp64-fp16-denormals -run-pass=instruction-select -global-isel-abort=2 -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9-DENORM %s
|
|
# RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=-fp32-denormals,-fp64-fp16-denormals -run-pass=instruction-select -global-isel-abort=2 -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9-FLUSH %s
|
|
|
|
---
|
|
|
|
name: fcanonicalize_f16
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_f16
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-DENORM: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_f16
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-FLUSH: [[V_MUL_F16_e64_:%[0-9]+]]:vgpr_32 = V_MUL_F16_e64 0, 15360, 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F16_e64_]]
|
|
%0:vgpr(s32) = COPY $vgpr0
|
|
%1:vgpr(s16) = G_TRUNC %0
|
|
%2:vgpr(s16) = G_FCANONICALIZE %1
|
|
S_ENDPGM 0, implicit %2
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_f32
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_f32
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-DENORM: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_f32
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-FLUSH: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_F32_e64 0, 1065353216, 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]
|
|
%0:vgpr(s32) = COPY $vgpr0
|
|
%1:vgpr(s32) = G_FCANONICALIZE %0
|
|
S_ENDPGM 0, implicit %1
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_v2f16
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_v2f16
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
|
|
; GFX9-DENORM: [[FCANONICALIZE:%[0-9]+]]:vgpr(<2 x s16>) = G_FCANONICALIZE [[COPY]]
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[FCANONICALIZE]](<2 x s16>)
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_v2f16
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
|
|
; GFX9-FLUSH: [[FCANONICALIZE:%[0-9]+]]:vgpr(<2 x s16>) = G_FCANONICALIZE [[COPY]]
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[FCANONICALIZE]](<2 x s16>)
|
|
%0:vgpr(<2 x s16>) = COPY $vgpr0
|
|
%1:vgpr(<2 x s16>) = G_FCANONICALIZE %0
|
|
S_ENDPGM 0, implicit %1
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_f64
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0_vgpr1
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_f64
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
|
|
; GFX9-DENORM: [[V_MAX_F64_:%[0-9]+]]:vreg_64 = V_MAX_F64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F64_]]
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_f64
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
|
|
; GFX9-FLUSH: [[V_MUL_F64_:%[0-9]+]]:vreg_64 = V_MUL_F64 0, 4607182418800017408, 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F64_]]
|
|
%0:vgpr(s64) = COPY $vgpr0_vgpr1
|
|
%1:vgpr(s64) = G_FCANONICALIZE %0
|
|
S_ENDPGM 0, implicit %1
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_fabs_f32
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_fabs_f32
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-DENORM: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_fabs_f32
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-FLUSH: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_F32_e64 0, 1065353216, 2, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]
|
|
%0:vgpr(s32) = COPY $vgpr0
|
|
%1:vgpr(s32) = G_FABS %0
|
|
%2:vgpr(s32) = G_FCANONICALIZE %1
|
|
S_ENDPGM 0, implicit %2
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_fneg_f32
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_fneg_f32
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-DENORM: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_fneg_f32
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9-FLUSH: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_F32_e64 0, 3212836864, 0, [[COPY]], 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]
|
|
%0:vgpr(s32) = COPY $vgpr0
|
|
%1:vgpr(s32) = G_FNEG %0
|
|
%2:vgpr(s32) = G_FCANONICALIZE %1
|
|
S_ENDPGM 0, implicit %2
|
|
...
|
|
|
|
---
|
|
|
|
name: fcanonicalize_fneg_fabs_f32
|
|
legalized: true
|
|
regBankSelected: true
|
|
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX9-DENORM-LABEL: name: fcanonicalize_fneg_fabs_f32
|
|
; GFX9-DENORM: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
|
; GFX9-DENORM: [[FNEG:%[0-9]+]]:vgpr_32(s32) = G_FNEG [[COPY]]
|
|
; GFX9-DENORM: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32(s32) = V_MAX_F32_e64 2, [[FNEG]](s32), 2, [[FNEG]](s32), 0, 0, implicit $exec
|
|
; GFX9-DENORM: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]](s32)
|
|
; GFX9-FLUSH-LABEL: name: fcanonicalize_fneg_fabs_f32
|
|
; GFX9-FLUSH: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
|
; GFX9-FLUSH: [[FNEG:%[0-9]+]]:vgpr_32(s32) = G_FNEG [[COPY]]
|
|
; GFX9-FLUSH: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32(s32) = V_MUL_F32_e64 0, 1065353216, 2, [[FNEG]](s32), 0, 0, implicit $exec
|
|
; GFX9-FLUSH: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]](s32)
|
|
%0:vgpr(s32) = COPY $vgpr0
|
|
%1:vgpr(s32) = G_FNEG %0
|
|
%2:vgpr(s32) = G_FABS %1
|
|
%3:vgpr(s32) = G_FCANONICALIZE %2
|
|
S_ENDPGM 0, implicit %3
|
|
...
|