|
5 | 5 | define void @commute_instruction_subreg_target_flag() { ret void }
|
6 | 6 | define void @commute_target_flag_frame_index() { ret void }
|
7 | 7 | define void @commute_target_flag_global() { ret void }
|
| 8 | + define void @commute_target_flag_global_offset() { ret void } |
| 9 | + define void @commute_target_flag_global_offset_mismatch() { ret void } |
| 10 | + |
8 | 11 | declare void @func()
|
| 12 | + @gv = external addrspace(1) global i32 |
9 | 13 |
|
10 | 14 | ...
|
11 | 15 |
|
@@ -64,11 +68,49 @@ body: |
|
64 | 68 | ; CHECK: liveins: $sgpr0_sgpr1
|
65 | 69 | ; CHECK: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
|
66 | 70 | ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY]].sub0, target-flags(amdgpu-rel32-lo) @func, implicit-def dead $scc
|
67 |
| - ; CHECK: [[S_ADD_U32_1:%[0-9]+]]:sreg_32 = S_ADD_U32 target-flags(amdgpu-rel32-lo) @func, [[COPY]].sub0, implicit-def dead $scc |
68 |
| - ; CHECK: S_ENDPGM 0, implicit [[S_ADD_U32_]], implicit [[S_ADD_U32_1]] |
| 71 | + ; CHECK: S_ENDPGM 0, implicit [[S_ADD_U32_]], implicit [[S_ADD_U32_]] |
69 | 72 | %0:sreg_64 = COPY $sgpr0_sgpr1
|
70 | 73 | %1:sreg_32 = S_ADD_U32 %0.sub0, target-flags(amdgpu-rel32-lo) @func, implicit-def dead $scc
|
71 | 74 | %2:sreg_32 = S_ADD_U32 target-flags(amdgpu-rel32-lo) @func, %0.sub0, implicit-def dead $scc
|
72 | 75 | S_ENDPGM 0, implicit %1, implicit %2
|
73 | 76 |
|
74 | 77 | ...
|
| 78 | + |
| 79 | +--- |
| 80 | +name: commute_target_flag_global_offset |
| 81 | +tracksRegLiveness: true |
| 82 | +body: | |
| 83 | + bb.0: |
| 84 | + liveins: $sgpr0_sgpr1 |
| 85 | +
|
| 86 | + ; CHECK-LABEL: name: commute_target_flag_global_offset |
| 87 | + ; CHECK: liveins: $sgpr0_sgpr1 |
| 88 | + ; CHECK: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 |
| 89 | + ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY]].sub0, target-flags(amdgpu-rel32-lo) @gv + 4, implicit-def dead $scc |
| 90 | + ; CHECK: S_ENDPGM 0, implicit [[S_ADD_U32_]], implicit [[S_ADD_U32_]] |
| 91 | + %0:sreg_64 = COPY $sgpr0_sgpr1 |
| 92 | + %1:sreg_32 = S_ADD_U32 %0.sub0, target-flags(amdgpu-rel32-lo) @gv + 4, implicit-def dead $scc |
| 93 | + %2:sreg_32 = S_ADD_U32 target-flags(amdgpu-rel32-lo) @gv + 4, %0.sub0, implicit-def dead $scc |
| 94 | + S_ENDPGM 0, implicit %1, implicit %2 |
| 95 | +
|
| 96 | +... |
| 97 | + |
| 98 | +--- |
| 99 | +name: commute_target_flag_global_offset_mismatch |
| 100 | +tracksRegLiveness: true |
| 101 | +body: | |
| 102 | + bb.0: |
| 103 | + liveins: $sgpr0_sgpr1 |
| 104 | +
|
| 105 | + ; CHECK-LABEL: name: commute_target_flag_global_offset_mismatch |
| 106 | + ; CHECK: liveins: $sgpr0_sgpr1 |
| 107 | + ; CHECK: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 |
| 108 | + ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY]].sub0, target-flags(amdgpu-rel32-lo) @gv + 4, implicit-def dead $scc |
| 109 | + ; CHECK: [[S_ADD_U32_1:%[0-9]+]]:sreg_32 = S_ADD_U32 target-flags(amdgpu-rel32-lo) @gv + 8, [[COPY]].sub0, implicit-def dead $scc |
| 110 | + ; CHECK: S_ENDPGM 0, implicit [[S_ADD_U32_]], implicit [[S_ADD_U32_1]] |
| 111 | + %0:sreg_64 = COPY $sgpr0_sgpr1 |
| 112 | + %1:sreg_32 = S_ADD_U32 %0.sub0, target-flags(amdgpu-rel32-lo) @gv + 4, implicit-def dead $scc |
| 113 | + %2:sreg_32 = S_ADD_U32 target-flags(amdgpu-rel32-lo) @gv + 8, %0.sub0, implicit-def dead $scc |
| 114 | + S_ENDPGM 0, implicit %1, implicit %2 |
| 115 | +
|
| 116 | +... |
0 commit comments