@@ -910,10 +910,10 @@ body: |
910
910
; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
911
911
; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
912
912
; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
913
- ; CHECK: [[TRUNC :%[0-9]+]]:_(s32 ) = G_TRUNC [[COPY]](s64)
914
- ; CHECK: [[TRUNC1 :%[0-9]+]]:_(s32 ) = G_TRUNC [[COPY1 ]](s64 )
915
- ; CHECK: [[TRUNC2 :%[0-9]+]]:_(s32) = G_TRUNC [[COPY2 ]](s64 )
916
- ; CHECK: S_ENDPGM 0, implicit [[TRUNC ]](s32), implicit [[TRUNC1 ]](s32), implicit [[TRUNC2 ]](s32)
913
+ ; CHECK: [[MV :%[0-9]+]]:_(s192 ) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64), [[COPY2 ]](s64)
914
+ ; CHECK: [[TRUNC :%[0-9]+]]:_(s96 ) = G_TRUNC [[MV ]](s192 )
915
+ ; CHECK: [[UV :%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[TRUNC ]](s96 )
916
+ ; CHECK: S_ENDPGM 0, implicit [[UV ]](s32), implicit [[UV1 ]](s32), implicit [[UV2 ]](s32)
917
917
%0:_(s64) = COPY $vgpr0_vgpr1
918
918
%1:_(s64) = COPY $vgpr2_vgpr3
919
919
%2:_(s64) = COPY $vgpr4_vgpr5
@@ -933,16 +933,20 @@ body: |
933
933
; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
934
934
; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
935
935
; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
936
- ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
937
- ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)
938
- ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)
939
- ; CHECK: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)
940
- ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)
941
- ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[UV3]](s32)
942
- ; CHECK: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
943
- ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[UV4]](s32)
944
- ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[UV5]](s32)
945
- ; CHECK: S_ENDPGM 0, implicit [[TRUNC]](s16), implicit [[TRUNC1]](s16), implicit [[TRUNC2]](s16), implicit [[TRUNC3]](s16), implicit [[TRUNC4]](s16), implicit [[TRUNC5]](s16)
936
+ ; CHECK: [[MV:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64)
937
+ ; CHECK: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[MV]](s192)
938
+ ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[TRUNC]](s96)
939
+ ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)
940
+ ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
941
+ ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)
942
+ ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)
943
+ ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)
944
+ ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)
945
+ ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)
946
+ ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)
947
+ ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C]](s32)
948
+ ; CHECK: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR2]](s32)
949
+ ; CHECK: S_ENDPGM 0, implicit [[TRUNC1]](s16), implicit [[TRUNC2]](s16), implicit [[TRUNC3]](s16), implicit [[TRUNC4]](s16), implicit [[TRUNC5]](s16), implicit [[TRUNC6]](s16)
946
950
%0:_(s64) = COPY $vgpr0_vgpr1
947
951
%1:_(s64) = COPY $vgpr2_vgpr3
948
952
%2:_(s64) = COPY $vgpr4_vgpr5
@@ -968,11 +972,15 @@ body: |
968
972
; CHECK: [[MV:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)
969
973
; CHECK: [[MV1:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
970
974
; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
971
- ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
972
- ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
973
- ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)
974
- ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY4]](s32)
975
- ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[COPY5]](s32)
975
+ ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
976
+ ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)
977
+ ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)
978
+ ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
979
+ ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)
980
+ ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)
981
+ ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
982
+ ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32)
983
+ ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR2]](s32)
976
984
; CHECK: S_ENDPGM 0, implicit [[MV]](s192), implicit [[MV1]](s96), implicit [[TRUNC]](s16), implicit [[TRUNC1]](s16), implicit [[TRUNC2]](s16), implicit [[TRUNC3]](s16), implicit [[TRUNC4]](s16), implicit [[TRUNC5]](s16)
977
985
%0:_(s32) = COPY $vgpr0
978
986
%1:_(s32) = COPY $vgpr1
@@ -986,3 +994,46 @@ body: |
986
994
S_ENDPGM 0, implicit %6, implicit %7, implicit %8, implicit %9, implicit %10, implicit %11, implicit %12, implicit %13
987
995
988
996
...
997
+
998
+ ---
999
+ name : test_unmerge_values_s64_anyext_s128_of_merge_values_s64
1000
+ body : |
1001
+ bb.0:
1002
+ ; CHECK-LABEL: name: test_unmerge_values_s64_anyext_s128_of_merge_values_s64
1003
+ ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1004
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1005
+ ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
1006
+ ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
1007
+ ; CHECK: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[DEF]](s64)
1008
+ ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[MV1]](s128)
1009
+ ; CHECK: $vgpr0_vgpr1 = COPY [[UV]](s64)
1010
+ ; CHECK: $vgpr2_vgpr3 = COPY [[UV1]](s64)
1011
+ %0:_(s32) = COPY $vgpr0
1012
+ %1:_(s32) = COPY $vgpr1
1013
+ %2:_(s64) = G_MERGE_VALUES %0, %1
1014
+ %3:_(s128) = G_ANYEXT %2
1015
+ %4:_(s64), %5:_(s64) = G_UNMERGE_VALUES %3
1016
+ $vgpr0_vgpr1 = COPY %4
1017
+ $vgpr2_vgpr3 = COPY %5
1018
+
1019
+ ...
1020
+
1021
+ ---
1022
+ name : test_unmerge_values_s32_trunc_s64_of_merge_values_s128
1023
+ body : |
1024
+ bb.0:
1025
+ ; CHECK-LABEL: name: test_unmerge_values_s32_trunc_s64_of_merge_values_s128
1026
+ ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
1027
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
1028
+ ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
1029
+ ; CHECK: $vgpr0 = COPY [[UV]](s32)
1030
+ ; CHECK: $vgpr1 = COPY [[UV1]](s32)
1031
+ %0:_(s64) = COPY $vgpr0_vgpr1
1032
+ %1:_(s64) = COPY $vgpr2_vgpr3
1033
+ %2:_(s128) = G_MERGE_VALUES %0, %1
1034
+ %3:_(s64) = G_TRUNC %2
1035
+ %4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %3
1036
+ $vgpr0 = COPY %4
1037
+ $vgpr1 = COPY %5
1038
+
1039
+ ...
0 commit comments