@@ -834,6 +834,140 @@ define amdgpu_kernel void @s_and_u64_sext_with_sregs(ptr addrspace(1) %out, ptr
834
834
store i64 %and , ptr addrspace (1 ) %out , align 8
835
835
ret void
836
836
}
837
+
838
+ define <2 x i128 > @v_and_v2i128 (<2 x i128 > %a , <2 x i128 > %b ) {
839
+ ; GFX7-LABEL: v_and_v2i128:
840
+ ; GFX7: ; %bb.0:
841
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
842
+ ; GFX7-NEXT: v_and_b32_e32 v0, v0, v8
843
+ ; GFX7-NEXT: v_and_b32_e32 v1, v1, v9
844
+ ; GFX7-NEXT: v_and_b32_e32 v2, v2, v10
845
+ ; GFX7-NEXT: v_and_b32_e32 v3, v3, v11
846
+ ; GFX7-NEXT: v_and_b32_e32 v4, v4, v12
847
+ ; GFX7-NEXT: v_and_b32_e32 v5, v5, v13
848
+ ; GFX7-NEXT: v_and_b32_e32 v6, v6, v14
849
+ ; GFX7-NEXT: v_and_b32_e32 v7, v7, v15
850
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
851
+ ;
852
+ ; GFX9-LABEL: v_and_v2i128:
853
+ ; GFX9: ; %bb.0:
854
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
855
+ ; GFX9-NEXT: v_and_b32_e32 v0, v0, v8
856
+ ; GFX9-NEXT: v_and_b32_e32 v1, v1, v9
857
+ ; GFX9-NEXT: v_and_b32_e32 v2, v2, v10
858
+ ; GFX9-NEXT: v_and_b32_e32 v3, v3, v11
859
+ ; GFX9-NEXT: v_and_b32_e32 v4, v4, v12
860
+ ; GFX9-NEXT: v_and_b32_e32 v5, v5, v13
861
+ ; GFX9-NEXT: v_and_b32_e32 v6, v6, v14
862
+ ; GFX9-NEXT: v_and_b32_e32 v7, v7, v15
863
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
864
+ ;
865
+ ; GFX8-LABEL: v_and_v2i128:
866
+ ; GFX8: ; %bb.0:
867
+ ; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
868
+ ; GFX8-NEXT: v_and_b32_e32 v0, v0, v8
869
+ ; GFX8-NEXT: v_and_b32_e32 v1, v1, v9
870
+ ; GFX8-NEXT: v_and_b32_e32 v2, v2, v10
871
+ ; GFX8-NEXT: v_and_b32_e32 v3, v3, v11
872
+ ; GFX8-NEXT: v_and_b32_e32 v4, v4, v12
873
+ ; GFX8-NEXT: v_and_b32_e32 v5, v5, v13
874
+ ; GFX8-NEXT: v_and_b32_e32 v6, v6, v14
875
+ ; GFX8-NEXT: v_and_b32_e32 v7, v7, v15
876
+ ; GFX8-NEXT: s_setpc_b64 s[30:31]
877
+ ;
878
+ ; GFX10-LABEL: v_and_v2i128:
879
+ ; GFX10: ; %bb.0:
880
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
881
+ ; GFX10-NEXT: v_and_b32_e32 v0, v0, v8
882
+ ; GFX10-NEXT: v_and_b32_e32 v1, v1, v9
883
+ ; GFX10-NEXT: v_and_b32_e32 v2, v2, v10
884
+ ; GFX10-NEXT: v_and_b32_e32 v3, v3, v11
885
+ ; GFX10-NEXT: v_and_b32_e32 v4, v4, v12
886
+ ; GFX10-NEXT: v_and_b32_e32 v5, v5, v13
887
+ ; GFX10-NEXT: v_and_b32_e32 v6, v6, v14
888
+ ; GFX10-NEXT: v_and_b32_e32 v7, v7, v15
889
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
890
+ ;
891
+ ; GFX11-LABEL: v_and_v2i128:
892
+ ; GFX11: ; %bb.0:
893
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
894
+ ; GFX11-NEXT: v_and_b32_e32 v0, v0, v8
895
+ ; GFX11-NEXT: v_and_b32_e32 v1, v1, v9
896
+ ; GFX11-NEXT: v_and_b32_e32 v2, v2, v10
897
+ ; GFX11-NEXT: v_and_b32_e32 v3, v3, v11
898
+ ; GFX11-NEXT: v_and_b32_e32 v4, v4, v12
899
+ ; GFX11-NEXT: v_and_b32_e32 v5, v5, v13
900
+ ; GFX11-NEXT: v_and_b32_e32 v6, v6, v14
901
+ ; GFX11-NEXT: v_and_b32_e32 v7, v7, v15
902
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
903
+ %and = and <2 x i128 > %a , %b
904
+ ret <2 x i128 > %and
905
+ }
906
+
907
+ define <2 x i128 > @v_and_v2i128_inline_imm (<2 x i128 > %a ) {
908
+ ; GFX7-LABEL: v_and_v2i128_inline_imm:
909
+ ; GFX7: ; %bb.0:
910
+ ; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
911
+ ; GFX7-NEXT: v_and_b32_e32 v0, 64, v0
912
+ ; GFX7-NEXT: v_and_b32_e32 v4, 64, v4
913
+ ; GFX7-NEXT: v_mov_b32_e32 v1, 0
914
+ ; GFX7-NEXT: v_mov_b32_e32 v2, 0
915
+ ; GFX7-NEXT: v_mov_b32_e32 v3, 0
916
+ ; GFX7-NEXT: v_mov_b32_e32 v5, 0
917
+ ; GFX7-NEXT: v_mov_b32_e32 v6, 0
918
+ ; GFX7-NEXT: v_mov_b32_e32 v7, 0
919
+ ; GFX7-NEXT: s_setpc_b64 s[30:31]
920
+ ;
921
+ ; GFX9-LABEL: v_and_v2i128_inline_imm:
922
+ ; GFX9: ; %bb.0:
923
+ ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
924
+ ; GFX9-NEXT: v_and_b32_e32 v0, 64, v0
925
+ ; GFX9-NEXT: v_and_b32_e32 v4, 64, v4
926
+ ; GFX9-NEXT: v_mov_b32_e32 v1, 0
927
+ ; GFX9-NEXT: v_mov_b32_e32 v2, 0
928
+ ; GFX9-NEXT: v_mov_b32_e32 v3, 0
929
+ ; GFX9-NEXT: v_mov_b32_e32 v5, 0
930
+ ; GFX9-NEXT: v_mov_b32_e32 v6, 0
931
+ ; GFX9-NEXT: v_mov_b32_e32 v7, 0
932
+ ; GFX9-NEXT: s_setpc_b64 s[30:31]
933
+ ;
934
+ ; GFX8-LABEL: v_and_v2i128_inline_imm:
935
+ ; GFX8: ; %bb.0:
936
+ ; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
937
+ ; GFX8-NEXT: v_and_b32_e32 v0, 64, v0
938
+ ; GFX8-NEXT: v_and_b32_e32 v4, 64, v4
939
+ ; GFX8-NEXT: v_mov_b32_e32 v1, 0
940
+ ; GFX8-NEXT: v_mov_b32_e32 v2, 0
941
+ ; GFX8-NEXT: v_mov_b32_e32 v3, 0
942
+ ; GFX8-NEXT: v_mov_b32_e32 v5, 0
943
+ ; GFX8-NEXT: v_mov_b32_e32 v6, 0
944
+ ; GFX8-NEXT: v_mov_b32_e32 v7, 0
945
+ ; GFX8-NEXT: s_setpc_b64 s[30:31]
946
+ ;
947
+ ; GFX10-LABEL: v_and_v2i128_inline_imm:
948
+ ; GFX10: ; %bb.0:
949
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
950
+ ; GFX10-NEXT: v_and_b32_e32 v0, 64, v0
951
+ ; GFX10-NEXT: v_and_b32_e32 v4, 64, v4
952
+ ; GFX10-NEXT: v_mov_b32_e32 v1, 0
953
+ ; GFX10-NEXT: v_mov_b32_e32 v2, 0
954
+ ; GFX10-NEXT: v_mov_b32_e32 v3, 0
955
+ ; GFX10-NEXT: v_mov_b32_e32 v5, 0
956
+ ; GFX10-NEXT: v_mov_b32_e32 v6, 0
957
+ ; GFX10-NEXT: v_mov_b32_e32 v7, 0
958
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
959
+ ;
960
+ ; GFX11-LABEL: v_and_v2i128_inline_imm:
961
+ ; GFX11: ; %bb.0:
962
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
963
+ ; GFX11-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_and_b32 v0, 64, v0
964
+ ; GFX11-NEXT: v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v4, 64, v4
965
+ ; GFX11-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v5, 0
966
+ ; GFX11-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v7, 0
967
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
968
+ %and = and <2 x i128 > %a , <i128 64 , i128 64 >
969
+ ret <2 x i128 > %and
970
+ }
837
971
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
838
972
; GFX11-FAKE16: {{.*}}
839
973
; GFX11-TRUE16: {{.*}}
0 commit comments