Revert rGe6ccb57bb3f6b761f2310e97fd6ca99eff42f73e "[SLP] Add cost model for `llvm...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / schedule-barrier-fpmode.mir
blob8be26b6f53ff7db28cc7ecce5301f98cc7309c71
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=machine-scheduler -o - %s | FileCheck %s
3 # RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass=machine-scheduler -o - %s | FileCheck %s
4 # Make sure FP mode is not a hard scheduling boundary
6 ---
7 name: denorm_mode_not_barrier
8 tracksRegLiveness: true
9 body: |
10   bb.0:
11     liveins: $vgpr0_vgpr1
13     ; CHECK-LABEL: name: denorm_mode_not_barrier
14     ; CHECK: liveins: $vgpr0_vgpr1
15     ; CHECK: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
16     ; CHECK: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))
17     ; CHECK: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))
18     ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD1]], implicit $exec
19     ; CHECK: S_DENORM_MODE 0, implicit-def $mode, implicit $mode
20     ; CHECK: S_ENDPGM 0, implicit [[V_ADD_U32_e32_]]
21     %0:vreg_64 = COPY $vgpr0_vgpr1
22     %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))
23     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
24     %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))
25     %3:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec
26     S_ENDPGM 0, implicit %3
27 ...
29 ---
30 name: round_mode_not_barrier
31 tracksRegLiveness: true
32 body: |
33   bb.0:
34     liveins: $vgpr0_vgpr1
36     ; CHECK-LABEL: name: round_mode_not_barrier
37     ; CHECK: liveins: $vgpr0_vgpr1
38     ; CHECK: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
39     ; CHECK: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))
40     ; CHECK: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))
41     ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD1]], implicit $exec
42     ; CHECK: S_ROUND_MODE 0, implicit-def $mode, implicit $mode
43     ; CHECK: S_ENDPGM 0, implicit [[V_ADD_U32_e32_]]
44     %0:vreg_64 = COPY $vgpr0_vgpr1
45     %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))
46     S_ROUND_MODE 0, implicit-def $mode, implicit $mode
47     %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))
48     %3:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec
49     S_ENDPGM 0, implicit %3
50 ...
52 ---
53 name: denorm_mode_mode_def_use
54 tracksRegLiveness: true
55 body: |
56   bb.0:
57     liveins: $vgpr0_vgpr1
59     ; CHECK-LABEL: name: denorm_mode_mode_def_use
60     ; CHECK: liveins: $vgpr0_vgpr1
61     ; CHECK: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
62     ; CHECK: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))
63     ; CHECK: dead %3:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))
64     ; CHECK: S_DENORM_MODE 0, implicit-def $mode, implicit $mode
65     ; CHECK: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 0, [[GLOBAL_LOAD_DWORD]], implicit $mode, implicit $exec
66     ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[V_ADD_F32_e32_]], implicit $exec
67     ; CHECK: S_ENDPGM 0, implicit [[V_ADD_F32_e32_]], implicit [[V_ADD_U32_e32_]]
68     %0:vreg_64 = COPY $vgpr0_vgpr1
69     %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))
70     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
71     %2:vgpr_32 = V_ADD_F32_e32 0, %1, implicit $mode, implicit $exec
72     %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))
73     %4:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec
74     S_ENDPGM 0, implicit %2, implicit %4
75 ...
77 ---
78 name: round_mode_mode_def_use
79 tracksRegLiveness: true
80 body: |
81   bb.0:
82     liveins: $vgpr0_vgpr1
84     ; CHECK-LABEL: name: round_mode_mode_def_use
85     ; CHECK: liveins: $vgpr0_vgpr1
86     ; CHECK: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
87     ; CHECK: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))
88     ; CHECK: dead %3:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))
89     ; CHECK: S_ROUND_MODE 0, implicit-def $mode, implicit $mode
90     ; CHECK: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 0, [[GLOBAL_LOAD_DWORD]], implicit $mode, implicit $exec
91     ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[V_ADD_F32_e32_]], implicit $exec
92     ; CHECK: S_ENDPGM 0, implicit [[V_ADD_F32_e32_]], implicit [[V_ADD_U32_e32_]]
93     %0:vreg_64 = COPY $vgpr0_vgpr1
94     %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))
95     S_ROUND_MODE 0, implicit-def $mode, implicit $mode
96     %2:vgpr_32 = V_ADD_F32_e32 0, %1, implicit $mode, implicit $exec
97     %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))
98     %4:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec
99     S_ENDPGM 0, implicit %2, implicit %4