221
|
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
2 # RUN: llc -run-pass=machine-cse -march=amdgcn -mcpu=gfx900 -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s
|
|
3 # RUN: llc -run-pass=machine-cse -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s
|
|
4
|
|
5 ---
|
|
6
|
|
7 name: commute_vop3
|
|
8 tracksRegLiveness: true
|
|
9
|
|
10 body: |
|
|
11 bb.0:
|
|
12 liveins: $vgpr0, $vgpr1, $vgpr2
|
|
13 ; GFX9-LABEL: name: commute_vop3
|
|
14 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
236
|
15 ; GFX9-NEXT: {{ $}}
|
|
16 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
17 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
18 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
19 ; GFX9-NEXT: [[V_XOR3_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR3_B32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec
|
252
|
20 ; GFX9-NEXT: [[V_MED3_F16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, 0, implicit $mode, implicit $exec
|
|
21 ; GFX9-NEXT: [[V_MED3_F16_e64_1:%[0-9]+]]:vgpr_32 = V_MED3_F16_e64 0, [[COPY1]], 0, [[COPY]], 0, [[COPY2]], 0, 0, 0, implicit $mode, implicit $exec
|
236
|
22 ; GFX9-NEXT: [[V_MAX3_I32_e64_:%[0-9]+]]:vgpr_32 = V_MAX3_I32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec
|
|
23 ; GFX9-NEXT: [[V_SAD_HI_U8_e64_:%[0-9]+]]:vgpr_32 = V_SAD_HI_U8_e64 [[COPY]], [[COPY1]], [[COPY2]], 0, implicit $exec
|
|
24 ; GFX9-NEXT: [[V_XAD_U32_e64_:%[0-9]+]]:vgpr_32 = V_XAD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
|
|
25 ; GFX9-NEXT: [[V_SUB_I32_e64_:%[0-9]+]]:vgpr_32 = V_SUB_I32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
|
|
26 ; GFX9-NEXT: [[V_SUB_I32_e64_1:%[0-9]+]]:vgpr_32 = V_SUB_I32_e64 [[COPY1]], [[COPY]], 0, implicit $exec
|
221
|
27 ; GFX10-LABEL: name: commute_vop3
|
|
28 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
236
|
29 ; GFX10-NEXT: {{ $}}
|
|
30 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
31 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
32 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
33 ; GFX10-NEXT: [[V_XOR3_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR3_B32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec
|
252
|
34 ; GFX10-NEXT: [[V_MED3_F16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, 0, implicit $mode, implicit $exec
|
|
35 ; GFX10-NEXT: [[V_MED3_F16_e64_1:%[0-9]+]]:vgpr_32 = V_MED3_F16_e64 0, [[COPY1]], 0, [[COPY]], 0, [[COPY2]], 0, 0, 0, implicit $mode, implicit $exec
|
236
|
36 ; GFX10-NEXT: [[V_MAX3_I32_e64_:%[0-9]+]]:vgpr_32 = V_MAX3_I32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec
|
|
37 ; GFX10-NEXT: [[V_SAD_HI_U8_e64_:%[0-9]+]]:vgpr_32 = V_SAD_HI_U8_e64 [[COPY]], [[COPY1]], [[COPY2]], 0, implicit $exec
|
|
38 ; GFX10-NEXT: [[V_XAD_U32_e64_:%[0-9]+]]:vgpr_32 = V_XAD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
|
|
39 ; GFX10-NEXT: [[V_SUB_I32_e64_:%[0-9]+]]:vgpr_32 = V_SUB_I32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
|
|
40 ; GFX10-NEXT: [[V_SUB_I32_e64_1:%[0-9]+]]:vgpr_32 = V_SUB_I32_e64 [[COPY1]], [[COPY]], 0, implicit $exec
|
221
|
41 %0:vgpr_32 = COPY $vgpr0
|
|
42 %1:vgpr_32 = COPY $vgpr1
|
|
43 %2:vgpr_32 = COPY $vgpr2
|
|
44 %3:vgpr_32 = V_XOR3_B32_e64 %0, %1, %2, implicit $exec
|
|
45 %4:vgpr_32 = V_XOR3_B32_e64 %1, %0, %2, implicit $exec
|
|
46 ; Insts with MayRaiseFPException do not get CSE
|
252
|
47 %5:vgpr_32 = V_MED3_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, 0, implicit $mode, implicit $exec
|
|
48 %6:vgpr_32 = V_MED3_F16_e64 0, %1, 0, %0, 0, %2, 0, 0, 0, implicit $mode, implicit $exec
|
221
|
49
|
|
50 %7:vgpr_32 = V_MAX3_I32_e64 %0, %1, %2, implicit $exec
|
|
51 %8:vgpr_32 = V_MAX3_I32_e64 %1, %0, %2, implicit $exec
|
|
52 %11:vgpr_32 = V_SAD_HI_U8_e64 %0, %1, %2, 0, implicit $exec
|
|
53 %12:vgpr_32 = V_SAD_HI_U8_e64 %1, %0, %2, 0, implicit $exec
|
|
54 %13:vgpr_32 = V_XAD_U32_e64 %0, %1, 0, implicit $exec
|
|
55 %14:vgpr_32 = V_XAD_U32_e64 %1, %0, 0, implicit $exec
|
|
56 ; Sub should not be commuted
|
|
57 %15:vgpr_32 = V_SUB_I32_e64 %0, %1, 0, implicit $exec
|
|
58 %16:vgpr_32 = V_SUB_I32_e64 %1, %0, 0, implicit $exec
|
|
59 ...
|