llvm.org GIT mirror llvm / 43a339e
Renamed min tests (typo) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245038 91177308-0d34-0410-b5e6-96231b3b80d8 Simon Pilgrim 4 years ago
2 changed file(s) with 176 addition(s) and 176 deletion(s). Raw diff Collapse all Expand all
807807 ; Signed Minimum (LT)
808808 ;
809809
810 define <2 x i64> @max_lt_v2i64(<2 x i64> %a, <2 x i64> %b) {
811 ; SSE2-LABEL: max_lt_v2i64:
810 define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) {
811 ; SSE2-LABEL: min_lt_v2i64:
812812 ; SSE2: # BB#0:
813813 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0]
814814 ; SSE2-NEXT: movdqa %xmm0, %xmm3
827827 ; SSE2-NEXT: por %xmm3, %xmm0
828828 ; SSE2-NEXT: retq
829829 ;
830 ; SSE41-LABEL: max_lt_v2i64:
830 ; SSE41-LABEL: min_lt_v2i64:
831831 ; SSE41: # BB#0:
832832 ; SSE41-NEXT: movdqa %xmm0, %xmm2
833833 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
846846 ; SSE41-NEXT: movapd %xmm1, %xmm0
847847 ; SSE41-NEXT: retq
848848 ;
849 ; SSE42-LABEL: max_lt_v2i64:
849 ; SSE42-LABEL: min_lt_v2i64:
850850 ; SSE42: # BB#0:
851851 ; SSE42-NEXT: movdqa %xmm0, %xmm2
852852 ; SSE42-NEXT: movdqa %xmm1, %xmm0
855855 ; SSE42-NEXT: movapd %xmm1, %xmm0
856856 ; SSE42-NEXT: retq
857857 ;
858 ; AVX-LABEL: max_lt_v2i64:
858 ; AVX-LABEL: min_lt_v2i64:
859859 ; AVX: # BB#0:
860860 ; AVX-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
861861 ; AVX-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
865865 ret <2 x i64> %2
866866 }
867867
868 define <4 x i64> @max_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
869 ; SSE2-LABEL: max_lt_v4i64:
868 define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
869 ; SSE2-LABEL: min_lt_v4i64:
870870 ; SSE2: # BB#0:
871871 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0]
872872 ; SSE2-NEXT: movdqa %xmm1, %xmm5
900900 ; SSE2-NEXT: por %xmm6, %xmm1
901901 ; SSE2-NEXT: retq
902902 ;
903 ; SSE41-LABEL: max_lt_v4i64:
903 ; SSE41-LABEL: min_lt_v4i64:
904904 ; SSE41: # BB#0:
905905 ; SSE41-NEXT: movdqa %xmm0, %xmm8
906906 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
934934 ; SSE41-NEXT: movapd %xmm3, %xmm1
935935 ; SSE41-NEXT: retq
936936 ;
937 ; SSE42-LABEL: max_lt_v4i64:
937 ; SSE42-LABEL: min_lt_v4i64:
938938 ; SSE42: # BB#0:
939939 ; SSE42-NEXT: movdqa %xmm0, %xmm4
940940 ; SSE42-NEXT: movdqa %xmm3, %xmm5
948948 ; SSE42-NEXT: movapd %xmm3, %xmm1
949949 ; SSE42-NEXT: retq
950950 ;
951 ; AVX1-LABEL: max_lt_v4i64:
951 ; AVX1-LABEL: min_lt_v4i64:
952952 ; AVX1: # BB#0:
953953 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
954954 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
958958 ; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
959959 ; AVX1-NEXT: retq
960960 ;
961 ; AVX2-LABEL: max_lt_v4i64:
961 ; AVX2-LABEL: min_lt_v4i64:
962962 ; AVX2: # BB#0:
963963 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
964964 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
965965 ; AVX2-NEXT: retq
966966 ;
967 ; AVX512-LABEL: max_lt_v4i64:
967 ; AVX512-LABEL: min_lt_v4i64:
968968 ; AVX512: # BB#0:
969969 ; AVX512-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
970970 ; AVX512-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
974974 ret <4 x i64> %2
975975 }
976976
977 define <4 x i32> @max_lt_v4i32(<4 x i32> %a, <4 x i32> %b) {
978 ; SSE2-LABEL: max_lt_v4i32:
977 define <4 x i32> @min_lt_v4i32(<4 x i32> %a, <4 x i32> %b) {
978 ; SSE2-LABEL: min_lt_v4i32:
979979 ; SSE2: # BB#0:
980980 ; SSE2-NEXT: movdqa %xmm1, %xmm2
981981 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm2
984984 ; SSE2-NEXT: por %xmm2, %xmm0
985985 ; SSE2-NEXT: retq
986986 ;
987 ; SSE41-LABEL: max_lt_v4i32:
987 ; SSE41-LABEL: min_lt_v4i32:
988988 ; SSE41: # BB#0:
989989 ; SSE41-NEXT: pminsd %xmm1, %xmm0
990990 ; SSE41-NEXT: retq
991991 ;
992 ; SSE42-LABEL: max_lt_v4i32:
992 ; SSE42-LABEL: min_lt_v4i32:
993993 ; SSE42: # BB#0:
994994 ; SSE42-NEXT: pminsd %xmm1, %xmm0
995995 ; SSE42-NEXT: retq
996996 ;
997 ; AVX-LABEL: max_lt_v4i32:
997 ; AVX-LABEL: min_lt_v4i32:
998998 ; AVX: # BB#0:
999999 ; AVX-NEXT: vpminsd %xmm1, %xmm0, %xmm0
10001000 ; AVX-NEXT: retq
10031003 ret <4 x i32> %2
10041004 }
10051005
1006 define <8 x i32> @max_lt_v8i32(<8 x i32> %a, <8 x i32> %b) {
1007 ; SSE2-LABEL: max_lt_v8i32:
1006 define <8 x i32> @min_lt_v8i32(<8 x i32> %a, <8 x i32> %b) {
1007 ; SSE2-LABEL: min_lt_v8i32:
10081008 ; SSE2: # BB#0:
10091009 ; SSE2-NEXT: movdqa %xmm3, %xmm4
10101010 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm4
10181018 ; SSE2-NEXT: por %xmm4, %xmm1
10191019 ; SSE2-NEXT: retq
10201020 ;
1021 ; SSE41-LABEL: max_lt_v8i32:
1021 ; SSE41-LABEL: min_lt_v8i32:
10221022 ; SSE41: # BB#0:
10231023 ; SSE41-NEXT: pminsd %xmm2, %xmm0
10241024 ; SSE41-NEXT: pminsd %xmm3, %xmm1
10251025 ; SSE41-NEXT: retq
10261026 ;
1027 ; SSE42-LABEL: max_lt_v8i32:
1027 ; SSE42-LABEL: min_lt_v8i32:
10281028 ; SSE42: # BB#0:
10291029 ; SSE42-NEXT: pminsd %xmm2, %xmm0
10301030 ; SSE42-NEXT: pminsd %xmm3, %xmm1
10311031 ; SSE42-NEXT: retq
10321032 ;
1033 ; AVX1-LABEL: max_lt_v8i32:
1033 ; AVX1-LABEL: min_lt_v8i32:
10341034 ; AVX1: # BB#0:
10351035 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
10361036 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
10391039 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
10401040 ; AVX1-NEXT: retq
10411041 ;
1042 ; AVX2-LABEL: max_lt_v8i32:
1042 ; AVX2-LABEL: min_lt_v8i32:
10431043 ; AVX2: # BB#0:
10441044 ; AVX2-NEXT: vpminsd %ymm1, %ymm0, %ymm0
10451045 ; AVX2-NEXT: retq
10461046 ;
1047 ; AVX512-LABEL: max_lt_v8i32:
1047 ; AVX512-LABEL: min_lt_v8i32:
10481048 ; AVX512: # BB#0:
10491049 ; AVX512-NEXT: vpminsd %ymm1, %ymm0, %ymm0
10501050 ; AVX512-NEXT: retq
10531053 ret <8 x i32> %2
10541054 }
10551055
1056 define <8 x i16> @max_lt_v8i16(<8 x i16> %a, <8 x i16> %b) {
1057 ; SSE-LABEL: max_lt_v8i16:
1056 define <8 x i16> @min_lt_v8i16(<8 x i16> %a, <8 x i16> %b) {
1057 ; SSE-LABEL: min_lt_v8i16:
10581058 ; SSE: # BB#0:
10591059 ; SSE-NEXT: pminsw %xmm1, %xmm0
10601060 ; SSE-NEXT: retq
10611061 ;
1062 ; AVX-LABEL: max_lt_v8i16:
1062 ; AVX-LABEL: min_lt_v8i16:
10631063 ; AVX: # BB#0:
10641064 ; AVX-NEXT: vpminsw %xmm1, %xmm0, %xmm0
10651065 ; AVX-NEXT: retq
10681068 ret <8 x i16> %2
10691069 }
10701070
1071 define <16 x i16> @max_lt_v16i16(<16 x i16> %a, <16 x i16> %b) {
1072 ; SSE-LABEL: max_lt_v16i16:
1071 define <16 x i16> @min_lt_v16i16(<16 x i16> %a, <16 x i16> %b) {
1072 ; SSE-LABEL: min_lt_v16i16:
10731073 ; SSE: # BB#0:
10741074 ; SSE-NEXT: pminsw %xmm2, %xmm0
10751075 ; SSE-NEXT: pminsw %xmm3, %xmm1
10761076 ; SSE-NEXT: retq
10771077 ;
1078 ; AVX1-LABEL: max_lt_v16i16:
1078 ; AVX1-LABEL: min_lt_v16i16:
10791079 ; AVX1: # BB#0:
10801080 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
10811081 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
10841084 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
10851085 ; AVX1-NEXT: retq
10861086 ;
1087 ; AVX2-LABEL: max_lt_v16i16:
1087 ; AVX2-LABEL: min_lt_v16i16:
10881088 ; AVX2: # BB#0:
10891089 ; AVX2-NEXT: vpminsw %ymm1, %ymm0, %ymm0
10901090 ; AVX2-NEXT: retq
10911091 ;
1092 ; AVX512-LABEL: max_lt_v16i16:
1092 ; AVX512-LABEL: min_lt_v16i16:
10931093 ; AVX512: # BB#0:
10941094 ; AVX512-NEXT: vpminsw %ymm1, %ymm0, %ymm0
10951095 ; AVX512-NEXT: retq
10981098 ret <16 x i16> %2
10991099 }
11001100
1101 define <16 x i8> @max_lt_v16i8(<16 x i8> %a, <16 x i8> %b) {
1102 ; SSE2-LABEL: max_lt_v16i8:
1101 define <16 x i8> @min_lt_v16i8(<16 x i8> %a, <16 x i8> %b) {
1102 ; SSE2-LABEL: min_lt_v16i8:
11031103 ; SSE2: # BB#0:
11041104 ; SSE2-NEXT: movdqa %xmm1, %xmm2
11051105 ; SSE2-NEXT: pcmpgtb %xmm0, %xmm2
11081108 ; SSE2-NEXT: por %xmm2, %xmm0
11091109 ; SSE2-NEXT: retq
11101110 ;
1111 ; SSE41-LABEL: max_lt_v16i8:
1111 ; SSE41-LABEL: min_lt_v16i8:
11121112 ; SSE41: # BB#0:
11131113 ; SSE41-NEXT: pminsb %xmm1, %xmm0
11141114 ; SSE41-NEXT: retq
11151115 ;
1116 ; SSE42-LABEL: max_lt_v16i8:
1116 ; SSE42-LABEL: min_lt_v16i8:
11171117 ; SSE42: # BB#0:
11181118 ; SSE42-NEXT: pminsb %xmm1, %xmm0
11191119 ; SSE42-NEXT: retq
11201120 ;
1121 ; AVX-LABEL: max_lt_v16i8:
1121 ; AVX-LABEL: min_lt_v16i8:
11221122 ; AVX: # BB#0:
11231123 ; AVX-NEXT: vpminsb %xmm1, %xmm0, %xmm0
11241124 ; AVX-NEXT: retq
11271127 ret <16 x i8> %2
11281128 }
11291129
1130 define <32 x i8> @max_lt_v32i8(<32 x i8> %a, <32 x i8> %b) {
1131 ; SSE2-LABEL: max_lt_v32i8:
1130 define <32 x i8> @min_lt_v32i8(<32 x i8> %a, <32 x i8> %b) {
1131 ; SSE2-LABEL: min_lt_v32i8:
11321132 ; SSE2: # BB#0:
11331133 ; SSE2-NEXT: movdqa %xmm3, %xmm4
11341134 ; SSE2-NEXT: pcmpgtb %xmm1, %xmm4
11421142 ; SSE2-NEXT: por %xmm4, %xmm1
11431143 ; SSE2-NEXT: retq
11441144 ;
1145 ; SSE41-LABEL: max_lt_v32i8:
1145 ; SSE41-LABEL: min_lt_v32i8:
11461146 ; SSE41: # BB#0:
11471147 ; SSE41-NEXT: pminsb %xmm2, %xmm0
11481148 ; SSE41-NEXT: pminsb %xmm3, %xmm1
11491149 ; SSE41-NEXT: retq
11501150 ;
1151 ; SSE42-LABEL: max_lt_v32i8:
1151 ; SSE42-LABEL: min_lt_v32i8:
11521152 ; SSE42: # BB#0:
11531153 ; SSE42-NEXT: pminsb %xmm2, %xmm0
11541154 ; SSE42-NEXT: pminsb %xmm3, %xmm1
11551155 ; SSE42-NEXT: retq
11561156 ;
1157 ; AVX1-LABEL: max_lt_v32i8:
1157 ; AVX1-LABEL: min_lt_v32i8:
11581158 ; AVX1: # BB#0:
11591159 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
11601160 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
11631163 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
11641164 ; AVX1-NEXT: retq
11651165 ;
1166 ; AVX2-LABEL: max_lt_v32i8:
1166 ; AVX2-LABEL: min_lt_v32i8:
11671167 ; AVX2: # BB#0:
11681168 ; AVX2-NEXT: vpminsb %ymm1, %ymm0, %ymm0
11691169 ; AVX2-NEXT: retq
11701170 ;
1171 ; AVX512-LABEL: max_lt_v32i8:
1171 ; AVX512-LABEL: min_lt_v32i8:
11721172 ; AVX512: # BB#0:
11731173 ; AVX512-NEXT: vpminsb %ymm1, %ymm0, %ymm0
11741174 ; AVX512-NEXT: retq
11811181 ; Signed Minimum (LE)
11821182 ;
11831183
1184 define <2 x i64> @max_le_v2i64(<2 x i64> %a, <2 x i64> %b) {
1185 ; SSE2-LABEL: max_le_v2i64:
1184 define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) {
1185 ; SSE2-LABEL: min_le_v2i64:
11861186 ; SSE2: # BB#0:
11871187 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0]
11881188 ; SSE2-NEXT: movdqa %xmm1, %xmm3
12041204 ; SSE2-NEXT: movdqa %xmm2, %xmm0
12051205 ; SSE2-NEXT: retq
12061206 ;
1207 ; SSE41-LABEL: max_le_v2i64:
1207 ; SSE41-LABEL: min_le_v2i64:
12081208 ; SSE41: # BB#0:
12091209 ; SSE41-NEXT: movdqa %xmm0, %xmm2
12101210 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
12251225 ; SSE41-NEXT: movapd %xmm1, %xmm0
12261226 ; SSE41-NEXT: retq
12271227 ;
1228 ; SSE42-LABEL: max_le_v2i64:
1228 ; SSE42-LABEL: min_le_v2i64:
12291229 ; SSE42: # BB#0:
12301230 ; SSE42-NEXT: movdqa %xmm0, %xmm2
12311231 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0
12351235 ; SSE42-NEXT: movapd %xmm1, %xmm0
12361236 ; SSE42-NEXT: retq
12371237 ;
1238 ; AVX-LABEL: max_le_v2i64:
1238 ; AVX-LABEL: min_le_v2i64:
12391239 ; AVX: # BB#0:
12401240 ; AVX-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
12411241 ; AVX-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
12471247 ret <2 x i64> %2
12481248 }
12491249
1250 define <4 x i64> @max_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
1251 ; SSE2-LABEL: max_le_v4i64:
1250 define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
1251 ; SSE2-LABEL: min_le_v4i64:
12521252 ; SSE2: # BB#0:
12531253 ; SSE2-NEXT: movdqa {{.*#+}} xmm7 = [2147483648,0,2147483648,0]
12541254 ; SSE2-NEXT: movdqa %xmm3, %xmm4
12881288 ; SSE2-NEXT: movdqa %xmm9, %xmm1
12891289 ; SSE2-NEXT: retq
12901290 ;
1291 ; SSE41-LABEL: max_le_v4i64:
1291 ; SSE41-LABEL: min_le_v4i64:
12921292 ; SSE41: # BB#0:
12931293 ; SSE41-NEXT: movdqa %xmm0, %xmm8
12941294 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
13251325 ; SSE41-NEXT: movapd %xmm3, %xmm1
13261326 ; SSE41-NEXT: retq
13271327 ;
1328 ; SSE42-LABEL: max_le_v4i64:
1328 ; SSE42-LABEL: min_le_v4i64:
13291329 ; SSE42: # BB#0:
13301330 ; SSE42-NEXT: movdqa %xmm0, %xmm4
13311331 ; SSE42-NEXT: movdqa %xmm1, %xmm5
13411341 ; SSE42-NEXT: movapd %xmm3, %xmm1
13421342 ; SSE42-NEXT: retq
13431343 ;
1344 ; AVX1-LABEL: max_le_v4i64:
1344 ; AVX1-LABEL: min_le_v4i64:
13451345 ; AVX1: # BB#0:
13461346 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
13471347 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
13541354 ; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
13551355 ; AVX1-NEXT: retq
13561356 ;
1357 ; AVX2-LABEL: max_le_v4i64:
1357 ; AVX2-LABEL: min_le_v4i64:
13581358 ; AVX2: # BB#0:
13591359 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
13601360 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
13621362 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
13631363 ; AVX2-NEXT: retq
13641364 ;
1365 ; AVX512-LABEL: max_le_v4i64:
1365 ; AVX512-LABEL: min_le_v4i64:
13661366 ; AVX512: # BB#0:
13671367 ; AVX512-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
13681368 ; AVX512-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
13741374 ret <4 x i64> %2
13751375 }
13761376
1377 define <4 x i32> @max_le_v4i32(<4 x i32> %a, <4 x i32> %b) {
1378 ; SSE2-LABEL: max_le_v4i32:
1377 define <4 x i32> @min_le_v4i32(<4 x i32> %a, <4 x i32> %b) {
1378 ; SSE2-LABEL: min_le_v4i32:
13791379 ; SSE2: # BB#0:
13801380 ; SSE2-NEXT: movdqa %xmm0, %xmm2
13811381 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
13871387 ; SSE2-NEXT: movdqa %xmm2, %xmm0
13881388 ; SSE2-NEXT: retq
13891389 ;
1390 ; SSE41-LABEL: max_le_v4i32:
1390 ; SSE41-LABEL: min_le_v4i32:
13911391 ; SSE41: # BB#0:
13921392 ; SSE41-NEXT: pminsd %xmm1, %xmm0
13931393 ; SSE41-NEXT: retq
13941394 ;
1395 ; SSE42-LABEL: max_le_v4i32:
1395 ; SSE42-LABEL: min_le_v4i32:
13961396 ; SSE42: # BB#0:
13971397 ; SSE42-NEXT: pminsd %xmm1, %xmm0
13981398 ; SSE42-NEXT: retq
13991399 ;
1400 ; AVX-LABEL: max_le_v4i32:
1400 ; AVX-LABEL: min_le_v4i32:
14011401 ; AVX: # BB#0:
14021402 ; AVX-NEXT: vpminsd %xmm1, %xmm0, %xmm0
14031403 ; AVX-NEXT: retq
14061406 ret <4 x i32> %2
14071407 }
14081408
1409 define <8 x i32> @max_le_v8i32(<8 x i32> %a, <8 x i32> %b) {
1410 ; SSE2-LABEL: max_le_v8i32:
1409 define <8 x i32> @min_le_v8i32(<8 x i32> %a, <8 x i32> %b) {
1410 ; SSE2-LABEL: min_le_v8i32:
14111411 ; SSE2: # BB#0:
14121412 ; SSE2-NEXT: movdqa %xmm1, %xmm6
14131413 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm6
14271427 ; SSE2-NEXT: movdqa %xmm4, %xmm1
14281428 ; SSE2-NEXT: retq
14291429 ;
1430 ; SSE41-LABEL: max_le_v8i32:
1430 ; SSE41-LABEL: min_le_v8i32:
14311431 ; SSE41: # BB#0:
14321432 ; SSE41-NEXT: pminsd %xmm2, %xmm0
14331433 ; SSE41-NEXT: pminsd %xmm3, %xmm1
14341434 ; SSE41-NEXT: retq
14351435 ;
1436 ; SSE42-LABEL: max_le_v8i32:
1436 ; SSE42-LABEL: min_le_v8i32:
14371437 ; SSE42: # BB#0:
14381438 ; SSE42-NEXT: pminsd %xmm2, %xmm0
14391439 ; SSE42-NEXT: pminsd %xmm3, %xmm1
14401440 ; SSE42-NEXT: retq
14411441 ;
1442 ; AVX1-LABEL: max_le_v8i32:
1442 ; AVX1-LABEL: min_le_v8i32:
14431443 ; AVX1: # BB#0:
14441444 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
14451445 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
14481448 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
14491449 ; AVX1-NEXT: retq
14501450 ;
1451 ; AVX2-LABEL: max_le_v8i32:
1451 ; AVX2-LABEL: min_le_v8i32:
14521452 ; AVX2: # BB#0:
14531453 ; AVX2-NEXT: vpminsd %ymm1, %ymm0, %ymm0
14541454 ; AVX2-NEXT: retq
14551455 ;
1456 ; AVX512-LABEL: max_le_v8i32:
1456 ; AVX512-LABEL: min_le_v8i32:
14571457 ; AVX512: # BB#0:
14581458 ; AVX512-NEXT: vpminsd %ymm1, %ymm0, %ymm0
14591459 ; AVX512-NEXT: retq
14621462 ret <8 x i32> %2
14631463 }
14641464
1465 define <8 x i16> @max_le_v8i16(<8 x i16> %a, <8 x i16> %b) {
1466 ; SSE-LABEL: max_le_v8i16:
1465 define <8 x i16> @min_le_v8i16(<8 x i16> %a, <8 x i16> %b) {
1466 ; SSE-LABEL: min_le_v8i16:
14671467 ; SSE: # BB#0:
14681468 ; SSE-NEXT: pminsw %xmm1, %xmm0
14691469 ; SSE-NEXT: retq
14701470 ;
1471 ; AVX-LABEL: max_le_v8i16:
1471 ; AVX-LABEL: min_le_v8i16:
14721472 ; AVX: # BB#0:
14731473 ; AVX-NEXT: vpminsw %xmm1, %xmm0, %xmm0
14741474 ; AVX-NEXT: retq
14771477 ret <8 x i16> %2
14781478 }
14791479
1480 define <16 x i16> @max_le_v16i16(<16 x i16> %a, <16 x i16> %b) {
1481 ; SSE-LABEL: max_le_v16i16:
1480 define <16 x i16> @min_le_v16i16(<16 x i16> %a, <16 x i16> %b) {
1481 ; SSE-LABEL: min_le_v16i16:
14821482 ; SSE: # BB#0:
14831483 ; SSE-NEXT: pminsw %xmm2, %xmm0
14841484 ; SSE-NEXT: pminsw %xmm3, %xmm1
14851485 ; SSE-NEXT: retq
14861486 ;
1487 ; AVX1-LABEL: max_le_v16i16:
1487 ; AVX1-LABEL: min_le_v16i16:
14881488 ; AVX1: # BB#0:
14891489 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
14901490 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
14931493 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
14941494 ; AVX1-NEXT: retq
14951495 ;
1496 ; AVX2-LABEL: max_le_v16i16:
1496 ; AVX2-LABEL: min_le_v16i16:
14971497 ; AVX2: # BB#0:
14981498 ; AVX2-NEXT: vpminsw %ymm1, %ymm0, %ymm0
14991499 ; AVX2-NEXT: retq
15001500 ;
1501 ; AVX512-LABEL: max_le_v16i16:
1501 ; AVX512-LABEL: min_le_v16i16:
15021502 ; AVX512: # BB#0:
15031503 ; AVX512-NEXT: vpminsw %ymm1, %ymm0, %ymm0
15041504 ; AVX512-NEXT: retq
15071507 ret <16 x i16> %2
15081508 }
15091509
1510 define <16 x i8> @max_le_v16i8(<16 x i8> %a, <16 x i8> %b) {
1511 ; SSE2-LABEL: max_le_v16i8:
1510 define <16 x i8> @min_le_v16i8(<16 x i8> %a, <16 x i8> %b) {
1511 ; SSE2-LABEL: min_le_v16i8:
15121512 ; SSE2: # BB#0:
15131513 ; SSE2-NEXT: movdqa %xmm0, %xmm2
15141514 ; SSE2-NEXT: pcmpgtb %xmm1, %xmm2
15201520 ; SSE2-NEXT: movdqa %xmm2, %xmm0
15211521 ; SSE2-NEXT: retq
15221522 ;
1523 ; SSE41-LABEL: max_le_v16i8:
1523 ; SSE41-LABEL: min_le_v16i8:
15241524 ; SSE41: # BB#0:
15251525 ; SSE41-NEXT: pminsb %xmm1, %xmm0
15261526 ; SSE41-NEXT: retq
15271527 ;
1528 ; SSE42-LABEL: max_le_v16i8:
1528 ; SSE42-LABEL: min_le_v16i8:
15291529 ; SSE42: # BB#0:
15301530 ; SSE42-NEXT: pminsb %xmm1, %xmm0
15311531 ; SSE42-NEXT: retq
15321532 ;
1533 ; AVX-LABEL: max_le_v16i8:
1533 ; AVX-LABEL: min_le_v16i8:
15341534 ; AVX: # BB#0:
15351535 ; AVX-NEXT: vpminsb %xmm1, %xmm0, %xmm0
15361536 ; AVX-NEXT: retq
15391539 ret <16 x i8> %2
15401540 }
15411541
1542 define <32 x i8> @max_le_v32i8(<32 x i8> %a, <32 x i8> %b) {
1543 ; SSE2-LABEL: max_le_v32i8:
1542 define <32 x i8> @min_le_v32i8(<32 x i8> %a, <32 x i8> %b) {
1543 ; SSE2-LABEL: min_le_v32i8:
15441544 ; SSE2: # BB#0:
15451545 ; SSE2-NEXT: movdqa %xmm1, %xmm6
15461546 ; SSE2-NEXT: pcmpgtb %xmm3, %xmm6
15601560 ; SSE2-NEXT: movdqa %xmm4, %xmm1
15611561 ; SSE2-NEXT: retq
15621562 ;
1563 ; SSE41-LABEL: max_le_v32i8:
1563 ; SSE41-LABEL: min_le_v32i8:
15641564 ; SSE41: # BB#0:
15651565 ; SSE41-NEXT: pminsb %xmm2, %xmm0
15661566 ; SSE41-NEXT: pminsb %xmm3, %xmm1
15671567 ; SSE41-NEXT: retq
15681568 ;
1569 ; SSE42-LABEL: max_le_v32i8:
1569 ; SSE42-LABEL: min_le_v32i8:
15701570 ; SSE42: # BB#0:
15711571 ; SSE42-NEXT: pminsb %xmm2, %xmm0
15721572 ; SSE42-NEXT: pminsb %xmm3, %xmm1
15731573 ; SSE42-NEXT: retq
15741574 ;
1575 ; AVX1-LABEL: max_le_v32i8:
1575 ; AVX1-LABEL: min_le_v32i8:
15761576 ; AVX1: # BB#0:
15771577 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
15781578 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
15811581 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
15821582 ; AVX1-NEXT: retq
15831583 ;
1584 ; AVX2-LABEL: max_le_v32i8:
1584 ; AVX2-LABEL: min_le_v32i8:
15851585 ; AVX2: # BB#0:
15861586 ; AVX2-NEXT: vpminsb %ymm1, %ymm0, %ymm0
15871587 ; AVX2-NEXT: retq
15881588 ;
1589 ; AVX512-LABEL: max_le_v32i8:
1589 ; AVX512-LABEL: min_le_v32i8:
15901590 ; AVX512: # BB#0:
15911591 ; AVX512-NEXT: vpminsb %ymm1, %ymm0, %ymm0
15921592 ; AVX512-NEXT: retq
873873 ; Unsigned Minimum (LT)
874874 ;
875875
876 define <2 x i64> @max_lt_v2i64(<2 x i64> %a, <2 x i64> %b) {
877 ; SSE2-LABEL: max_lt_v2i64:
876 define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) {
877 ; SSE2-LABEL: min_lt_v2i64:
878878 ; SSE2: # BB#0:
879879 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
880880 ; SSE2-NEXT: movdqa %xmm0, %xmm3
893893 ; SSE2-NEXT: por %xmm3, %xmm0
894894 ; SSE2-NEXT: retq
895895 ;
896 ; SSE41-LABEL: max_lt_v2i64:
896 ; SSE41-LABEL: min_lt_v2i64:
897897 ; SSE41: # BB#0:
898898 ; SSE41-NEXT: movdqa %xmm0, %xmm2
899899 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
912912 ; SSE41-NEXT: movapd %xmm1, %xmm0
913913 ; SSE41-NEXT: retq
914914 ;
915 ; SSE42-LABEL: max_lt_v2i64:
915 ; SSE42-LABEL: min_lt_v2i64:
916916 ; SSE42: # BB#0:
917917 ; SSE42-NEXT: movdqa %xmm0, %xmm2
918918 ; SSE42-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
924924 ; SSE42-NEXT: movapd %xmm1, %xmm0
925925 ; SSE42-NEXT: retq
926926 ;
927 ; AVX-LABEL: max_lt_v2i64:
927 ; AVX-LABEL: min_lt_v2i64:
928928 ; AVX: # BB#0:
929929 ; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
930930 ; AVX-NEXT: vpxor %xmm2, %xmm0, %xmm3
937937 ret <2 x i64> %2
938938 }
939939
940 define <4 x i64> @max_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
941 ; SSE2-LABEL: max_lt_v4i64:
940 define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {
941 ; SSE2-LABEL: min_lt_v4i64:
942942 ; SSE2: # BB#0:
943943 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]
944944 ; SSE2-NEXT: movdqa %xmm1, %xmm5
972972 ; SSE2-NEXT: por %xmm6, %xmm1
973973 ; SSE2-NEXT: retq
974974 ;
975 ; SSE41-LABEL: max_lt_v4i64:
975 ; SSE41-LABEL: min_lt_v4i64:
976976 ; SSE41: # BB#0:
977977 ; SSE41-NEXT: movdqa %xmm0, %xmm8
978978 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
10061006 ; SSE41-NEXT: movapd %xmm3, %xmm1
10071007 ; SSE41-NEXT: retq
10081008 ;
1009 ; SSE42-LABEL: max_lt_v4i64:
1009 ; SSE42-LABEL: min_lt_v4i64:
10101010 ; SSE42: # BB#0:
10111011 ; SSE42-NEXT: movdqa %xmm0, %xmm4
10121012 ; SSE42-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
10261026 ; SSE42-NEXT: movapd %xmm3, %xmm1
10271027 ; SSE42-NEXT: retq
10281028 ;
1029 ; AVX1-LABEL: max_lt_v4i64:
1029 ; AVX1-LABEL: min_lt_v4i64:
10301030 ; AVX1: # BB#0:
10311031 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
10321032 ; AVX1-NEXT: vmovaps {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
10411041 ; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
10421042 ; AVX1-NEXT: retq
10431043 ;
1044 ; AVX2-LABEL: max_lt_v4i64:
1044 ; AVX2-LABEL: min_lt_v4i64:
10451045 ; AVX2: # BB#0:
10461046 ; AVX2-NEXT: vpbroadcastq {{.*}}(%rip), %ymm2
10471047 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm3
10501050 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
10511051 ; AVX2-NEXT: retq
10521052 ;
1053 ; AVX512-LABEL: max_lt_v4i64:
1053 ; AVX512-LABEL: min_lt_v4i64:
10541054 ; AVX512: # BB#0:
10551055 ; AVX512-NEXT: vpbroadcastq {{.*}}(%rip), %ymm2
10561056 ; AVX512-NEXT: vpxor %ymm2, %ymm0, %ymm3
10631063 ret <4 x i64> %2
10641064 }
10651065
1066 define <4 x i32> @max_lt_v4i32(<4 x i32> %a, <4 x i32> %b) {
1067 ; SSE2-LABEL: max_lt_v4i32:
1066 define <4 x i32> @min_lt_v4i32(<4 x i32> %a, <4 x i32> %b) {
1067 ; SSE2-LABEL: min_lt_v4i32:
10681068 ; SSE2: # BB#0:
10691069 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
10701070 ; SSE2-NEXT: movdqa %xmm0, %xmm3
10761076 ; SSE2-NEXT: por %xmm2, %xmm0
10771077 ; SSE2-NEXT: retq
10781078 ;
1079 ; SSE41-LABEL: max_lt_v4i32:
1079 ; SSE41-LABEL: min_lt_v4i32:
10801080 ; SSE41: # BB#0:
10811081 ; SSE41-NEXT: pminud %xmm1, %xmm0
10821082 ; SSE41-NEXT: retq
10831083 ;
1084 ; SSE42-LABEL: max_lt_v4i32:
1084 ; SSE42-LABEL: min_lt_v4i32:
10851085 ; SSE42: # BB#0:
10861086 ; SSE42-NEXT: pminud %xmm1, %xmm0
10871087 ; SSE42-NEXT: retq
10881088 ;
1089 ; AVX-LABEL: max_lt_v4i32:
1089 ; AVX-LABEL: min_lt_v4i32:
10901090 ; AVX: # BB#0:
10911091 ; AVX-NEXT: vpminud %xmm1, %xmm0, %xmm0
10921092 ; AVX-NEXT: retq
10951095 ret <4 x i32> %2
10961096 }
10971097
1098 define <8 x i32> @max_lt_v8i32(<8 x i32> %a, <8 x i32> %b) {
1099 ; SSE2-LABEL: max_lt_v8i32:
1098 define <8 x i32> @min_lt_v8i32(<8 x i32> %a, <8 x i32> %b) {
1099 ; SSE2-LABEL: min_lt_v8i32:
11001100 ; SSE2: # BB#0:
11011101 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]
11021102 ; SSE2-NEXT: movdqa %xmm1, %xmm5
11161116 ; SSE2-NEXT: por %xmm6, %xmm1
11171117 ; SSE2-NEXT: retq
11181118 ;
1119 ; SSE41-LABEL: max_lt_v8i32:
1119 ; SSE41-LABEL: min_lt_v8i32:
11201120 ; SSE41: # BB#0:
11211121 ; SSE41-NEXT: pminud %xmm2, %xmm0
11221122 ; SSE41-NEXT: pminud %xmm3, %xmm1
11231123 ; SSE41-NEXT: retq
11241124 ;
1125 ; SSE42-LABEL: max_lt_v8i32:
1125 ; SSE42-LABEL: min_lt_v8i32:
11261126 ; SSE42: # BB#0:
11271127 ; SSE42-NEXT: pminud %xmm2, %xmm0
11281128 ; SSE42-NEXT: pminud %xmm3, %xmm1
11291129 ; SSE42-NEXT: retq
11301130 ;
1131 ; AVX1-LABEL: max_lt_v8i32:
1131 ; AVX1-LABEL: min_lt_v8i32:
11321132 ; AVX1: # BB#0:
11331133 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
11341134 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
11371137 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
11381138 ; AVX1-NEXT: retq
11391139 ;
1140 ; AVX2-LABEL: max_lt_v8i32:
1140 ; AVX2-LABEL: min_lt_v8i32:
11411141 ; AVX2: # BB#0:
11421142 ; AVX2-NEXT: vpminud %ymm1, %ymm0, %ymm0
11431143 ; AVX2-NEXT: retq
11441144 ;
1145 ; AVX512-LABEL: max_lt_v8i32:
1145 ; AVX512-LABEL: min_lt_v8i32:
11461146 ; AVX512: # BB#0:
11471147 ; AVX512-NEXT: vpminud %ymm1, %ymm0, %ymm0
11481148 ; AVX512-NEXT: retq
11511151 ret <8 x i32> %2
11521152 }
11531153
1154 define <8 x i16> @max_lt_v8i16(<8 x i16> %a, <8 x i16> %b) {
1155 ; SSE2-LABEL: max_lt_v8i16:
1154 define <8 x i16> @min_lt_v8i16(<8 x i16> %a, <8 x i16> %b) {
1155 ; SSE2-LABEL: min_lt_v8i16:
11561156 ; SSE2: # BB#0:
11571157 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768]
11581158 ; SSE2-NEXT: movdqa %xmm0, %xmm3
11641164 ; SSE2-NEXT: por %xmm2, %xmm0
11651165 ; SSE2-NEXT: retq
11661166 ;
1167 ; SSE41-LABEL: max_lt_v8i16:
1167 ; SSE41-LABEL: min_lt_v8i16:
11681168 ; SSE41: # BB#0:
11691169 ; SSE41-NEXT: pminuw %xmm1, %xmm0
11701170 ; SSE41-NEXT: retq
11711171 ;
1172 ; SSE42-LABEL: max_lt_v8i16:
1172 ; SSE42-LABEL: min_lt_v8i16:
11731173 ; SSE42: # BB#0:
11741174 ; SSE42-NEXT: pminuw %xmm1, %xmm0
11751175 ; SSE42-NEXT: retq
11761176 ;
1177 ; AVX-LABEL: max_lt_v8i16:
1177 ; AVX-LABEL: min_lt_v8i16:
11781178 ; AVX: # BB#0:
11791179 ; AVX-NEXT: vpminuw %xmm1, %xmm0, %xmm0
11801180 ; AVX-NEXT: retq
11831183 ret <8 x i16> %2
11841184 }
11851185
1186 define <16 x i16> @max_lt_v16i16(<16 x i16> %a, <16 x i16> %b) {
1187 ; SSE2-LABEL: max_lt_v16i16:
1186 define <16 x i16> @min_lt_v16i16(<16 x i16> %a, <16 x i16> %b) {
1187 ; SSE2-LABEL: min_lt_v16i16:
11881188 ; SSE2: # BB#0:
11891189 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [32768,32768,32768,32768,32768,32768,32768,32768]
11901190 ; SSE2-NEXT: movdqa %xmm1, %xmm5
12041204 ; SSE2-NEXT: por %xmm6, %xmm1
12051205 ; SSE2-NEXT: retq
12061206 ;
1207 ; SSE41-LABEL: max_lt_v16i16:
1207 ; SSE41-LABEL: min_lt_v16i16:
12081208 ; SSE41: # BB#0:
12091209 ; SSE41-NEXT: pminuw %xmm2, %xmm0
12101210 ; SSE41-NEXT: pminuw %xmm3, %xmm1
12111211 ; SSE41-NEXT: retq
12121212 ;
1213 ; SSE42-LABEL: max_lt_v16i16:
1213 ; SSE42-LABEL: min_lt_v16i16:
12141214 ; SSE42: # BB#0:
12151215 ; SSE42-NEXT: pminuw %xmm2, %xmm0
12161216 ; SSE42-NEXT: pminuw %xmm3, %xmm1
12171217 ; SSE42-NEXT: retq
12181218 ;
1219 ; AVX1-LABEL: max_lt_v16i16:
1219 ; AVX1-LABEL: min_lt_v16i16:
12201220 ; AVX1: # BB#0:
12211221 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
12221222 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
12251225 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
12261226 ; AVX1-NEXT: retq
12271227 ;
1228 ; AVX2-LABEL: max_lt_v16i16:
1228 ; AVX2-LABEL: min_lt_v16i16:
12291229 ; AVX2: # BB#0:
12301230 ; AVX2-NEXT: vpminuw %ymm1, %ymm0, %ymm0
12311231 ; AVX2-NEXT: retq
12321232 ;
1233 ; AVX512-LABEL: max_lt_v16i16:
1233 ; AVX512-LABEL: min_lt_v16i16:
12341234 ; AVX512: # BB#0:
12351235 ; AVX512-NEXT: vpminuw %ymm1, %ymm0, %ymm0
12361236 ; AVX512-NEXT: retq
12391239 ret <16 x i16> %2
12401240 }
12411241
1242 define <16 x i8> @max_lt_v16i8(<16 x i8> %a, <16 x i8> %b) {
1243 ; SSE-LABEL: max_lt_v16i8:
1242 define <16 x i8> @min_lt_v16i8(<16 x i8> %a, <16 x i8> %b) {
1243 ; SSE-LABEL: min_lt_v16i8:
12441244 ; SSE: # BB#0:
12451245 ; SSE-NEXT: pminub %xmm1, %xmm0
12461246 ; SSE-NEXT: retq
12471247 ;
1248 ; AVX-LABEL: max_lt_v16i8:
1248 ; AVX-LABEL: min_lt_v16i8:
12491249 ; AVX: # BB#0:
12501250 ; AVX-NEXT: vpminub %xmm1, %xmm0, %xmm0
12511251 ; AVX-NEXT: retq
12541254 ret <16 x i8> %2
12551255 }
12561256
1257 define <32 x i8> @max_lt_v32i8(<32 x i8> %a, <32 x i8> %b) {
1258 ; SSE-LABEL: max_lt_v32i8:
1257 define <32 x i8> @min_lt_v32i8(<32 x i8> %a, <32 x i8> %b) {
1258 ; SSE-LABEL: min_lt_v32i8:
12591259 ; SSE: # BB#0:
12601260 ; SSE-NEXT: pminub %xmm2, %xmm0
12611261 ; SSE-NEXT: pminub %xmm3, %xmm1
12621262 ; SSE-NEXT: retq
12631263 ;
1264 ; AVX1-LABEL: max_lt_v32i8:
1264 ; AVX1-LABEL: min_lt_v32i8:
12651265 ; AVX1: # BB#0:
12661266 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
12671267 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
12701270 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
12711271 ; AVX1-NEXT: retq
12721272 ;
1273 ; AVX2-LABEL: max_lt_v32i8:
1273 ; AVX2-LABEL: min_lt_v32i8:
12741274 ; AVX2: # BB#0:
12751275 ; AVX2-NEXT: vpminub %ymm1, %ymm0, %ymm0
12761276 ; AVX2-NEXT: retq
12771277 ;
1278 ; AVX512-LABEL: max_lt_v32i8:
1278 ; AVX512-LABEL: min_lt_v32i8:
12791279 ; AVX512: # BB#0:
12801280 ; AVX512-NEXT: vpminub %ymm1, %ymm0, %ymm0
12811281 ; AVX512-NEXT: retq
12881288 ; Unsigned Minimum (LE)
12891289 ;
12901290
1291 define <2 x i64> @max_le_v2i64(<2 x i64> %a, <2 x i64> %b) {
1292 ; SSE2-LABEL: max_le_v2i64:
1291 define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) {
1292 ; SSE2-LABEL: min_le_v2i64:
12931293 ; SSE2: # BB#0:
12941294 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
12951295 ; SSE2-NEXT: movdqa %xmm1, %xmm3
13111311 ; SSE2-NEXT: movdqa %xmm2, %xmm0
13121312 ; SSE2-NEXT: retq
13131313 ;
1314 ; SSE41-LABEL: max_le_v2i64:
1314 ; SSE41-LABEL: min_le_v2i64:
13151315 ; SSE41: # BB#0:
13161316 ; SSE41-NEXT: movdqa %xmm0, %xmm2
13171317 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
13321332 ; SSE41-NEXT: movapd %xmm1, %xmm0
13331333 ; SSE41-NEXT: retq
13341334 ;
1335 ; SSE42-LABEL: max_le_v2i64:
1335 ; SSE42-LABEL: min_le_v2i64:
13361336 ; SSE42: # BB#0:
13371337 ; SSE42-NEXT: movdqa %xmm0, %xmm2
13381338 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
13461346 ; SSE42-NEXT: movapd %xmm1, %xmm0
13471347 ; SSE42-NEXT: retq
13481348 ;
1349 ; AVX-LABEL: max_le_v2i64:
1349 ; AVX-LABEL: min_le_v2i64:
13501350 ; AVX: # BB#0:
13511351 ; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
13521352 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm3
13611361 ret <2 x i64> %2
13621362 }
13631363
1364 define <4 x i64> @max_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
1365 ; SSE2-LABEL: max_le_v4i64:
1364 define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) {
1365 ; SSE2-LABEL: min_le_v4i64:
13661366 ; SSE2: # BB#0:
13671367 ; SSE2-NEXT: movdqa {{.*#+}} xmm7 = [2147483648,2147483648,2147483648,2147483648]
13681368 ; SSE2-NEXT: movdqa %xmm3, %xmm4
14021402 ; SSE2-NEXT: movdqa %xmm9, %xmm1
14031403 ; SSE2-NEXT: retq
14041404 ;
1405 ; SSE41-LABEL: max_le_v4i64:
1405 ; SSE41-LABEL: min_le_v4i64:
14061406 ; SSE41: # BB#0:
14071407 ; SSE41-NEXT: movdqa %xmm0, %xmm8
14081408 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
14391439 ; SSE41-NEXT: movapd %xmm3, %xmm1
14401440 ; SSE41-NEXT: retq
14411441 ;
1442 ; SSE42-LABEL: max_le_v4i64:
1442 ; SSE42-LABEL: min_le_v4i64:
14431443 ; SSE42: # BB#0:
14441444 ; SSE42-NEXT: movdqa %xmm0, %xmm4
14451445 ; SSE42-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
14621462 ; SSE42-NEXT: movapd %xmm3, %xmm1
14631463 ; SSE42-NEXT: retq
14641464 ;
1465 ; AVX1-LABEL: max_le_v4i64:
1465 ; AVX1-LABEL: min_le_v4i64:
14661466 ; AVX1: # BB#0:
14671467 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
14681468 ; AVX1-NEXT: vmovaps {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
14801480 ; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
14811481 ; AVX1-NEXT: retq
14821482 ;
1483 ; AVX2-LABEL: max_le_v4i64:
1483 ; AVX2-LABEL: min_le_v4i64:
14841484 ; AVX2: # BB#0:
14851485 ; AVX2-NEXT: vpbroadcastq {{.*}}(%rip), %ymm2
14861486 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm3
14911491 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
14921492 ; AVX2-NEXT: retq
14931493 ;
1494 ; AVX512-LABEL: max_le_v4i64:
1494 ; AVX512-LABEL: min_le_v4i64:
14951495 ; AVX512: # BB#0:
14961496 ; AVX512-NEXT: vpbroadcastq {{.*}}(%rip), %ymm2
14971497 ; AVX512-NEXT: vpxor %ymm2, %ymm1, %ymm3
15061506 ret <4 x i64> %2
15071507 }
15081508
1509 define <4 x i32> @max_le_v4i32(<4 x i32> %a, <4 x i32> %b) {
1510 ; SSE2-LABEL: max_le_v4i32:
1509 define <4 x i32> @min_le_v4i32(<4 x i32> %a, <4 x i32> %b) {
1510 ; SSE2-LABEL: min_le_v4i32:
15111511 ; SSE2: # BB#0:
15121512 ; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
15131513 ; SSE2-NEXT: movdqa %xmm1, %xmm2
15221522 ; SSE2-NEXT: movdqa %xmm2, %xmm0
15231523 ; SSE2-NEXT: retq
15241524 ;
1525 ; SSE41-LABEL: max_le_v4i32:
1525 ; SSE41-LABEL: min_le_v4i32:
15261526 ; SSE41: # BB#0:
15271527 ; SSE41-NEXT: pminud %xmm1, %xmm0
15281528 ; SSE41-NEXT: retq
15291529 ;
1530 ; SSE42-LABEL: max_le_v4i32:
1530 ; SSE42-LABEL: min_le_v4i32:
15311531 ; SSE42: # BB#0:
15321532 ; SSE42-NEXT: pminud %xmm1, %xmm0
15331533 ; SSE42-NEXT: retq
15341534 ;
1535 ; AVX-LABEL: max_le_v4i32:
1535 ; AVX-LABEL: min_le_v4i32:
15361536 ; AVX: # BB#0:
15371537 ; AVX-NEXT: vpminud %xmm1, %xmm0, %xmm0
15381538 ; AVX-NEXT: retq
15411541 ret <4 x i32> %2
15421542 }
15431543
1544 define <8 x i32> @max_le_v8i32(<8 x i32> %a, <8 x i32> %b) {
1545 ; SSE2-LABEL: max_le_v8i32:
1544 define <8 x i32> @min_le_v8i32(<8 x i32> %a, <8 x i32> %b) {
1545 ; SSE2-LABEL: min_le_v8i32:
15461546 ; SSE2: # BB#0:
15471547 ; SSE2-NEXT: movdqa {{.*#+}} xmm6 = [2147483648,2147483648,2147483648,2147483648]
15481548 ; SSE2-NEXT: movdqa %xmm3, %xmm4
15681568 ; SSE2-NEXT: movdqa %xmm5, %xmm1
15691569 ; SSE2-NEXT: retq
15701570 ;
1571 ; SSE41-LABEL: max_le_v8i32:
1571 ; SSE41-LABEL: min_le_v8i32:
15721572 ; SSE41: # BB#0:
15731573 ; SSE41-NEXT: pminud %xmm2, %xmm0
15741574 ; SSE41-NEXT: pminud %xmm3, %xmm1
15751575 ; SSE41-NEXT: retq
15761576 ;
1577 ; SSE42-LABEL: max_le_v8i32:
1577 ; SSE42-LABEL: min_le_v8i32:
15781578 ; SSE42: # BB#0:
15791579 ; SSE42-NEXT: pminud %xmm2, %xmm0
15801580 ; SSE42-NEXT: pminud %xmm3, %xmm1
15811581 ; SSE42-NEXT: retq
15821582 ;
1583 ; AVX1-LABEL: max_le_v8i32:
1583 ; AVX1-LABEL: min_le_v8i32:
15841584 ; AVX1: # BB#0:
15851585 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
15861586 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
15891589 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
15901590 ; AVX1-NEXT: retq
15911591 ;
1592 ; AVX2-LABEL: max_le_v8i32:
1592 ; AVX2-LABEL: min_le_v8i32:
15931593 ; AVX2: # BB#0:
15941594 ; AVX2-NEXT: vpminud %ymm1, %ymm0, %ymm0
15951595 ; AVX2-NEXT: retq
15961596 ;
1597 ; AVX512-LABEL: max_le_v8i32:
1597 ; AVX512-LABEL: min_le_v8i32:
15981598 ; AVX512: # BB#0:
15991599 ; AVX512-NEXT: vpminud %ymm1, %ymm0, %ymm0
16001600 ; AVX512-NEXT: retq
16031603 ret <8 x i32> %2
16041604 }
16051605
1606 define <8 x i16> @max_le_v8i16(<8 x i16> %a, <8 x i16> %b) {
1607 ; SSE2-LABEL: max_le_v8i16:
1606 define <8 x i16> @min_le_v8i16(<8 x i16> %a, <8 x i16> %b) {
1607 ; SSE2-LABEL: min_le_v8i16:
16081608 ; SSE2: # BB#0:
16091609 ; SSE2-NEXT: movdqa %xmm0, %xmm2
16101610 ; SSE2-NEXT: psubusw %xmm1, %xmm2
16151615 ; SSE2-NEXT: por %xmm3, %xmm0
16161616 ; SSE2-NEXT: retq
16171617 ;
1618 ; SSE41-LABEL: max_le_v8i16:
1618 ; SSE41-LABEL: min_le_v8i16:
16191619 ; SSE41: # BB#0:
16201620 ; SSE41-NEXT: pminuw %xmm1, %xmm0
16211621 ; SSE41-NEXT: retq
16221622 ;
1623 ; SSE42-LABEL: max_le_v8i16:
1623 ; SSE42-LABEL: min_le_v8i16:
16241624 ; SSE42: # BB#0:
16251625 ; SSE42-NEXT: pminuw %xmm1, %xmm0
16261626 ; SSE42-NEXT: retq
16271627 ;
1628 ; AVX-LABEL: max_le_v8i16:
1628 ; AVX-LABEL: min_le_v8i16:
16291629 ; AVX: # BB#0:
16301630 ; AVX-NEXT: vpminuw %xmm1, %xmm0, %xmm0
16311631 ; AVX-NEXT: retq
16341634 ret <8 x i16> %2
16351635 }
16361636
1637 define <16 x i16> @max_le_v16i16(<16 x i16> %a, <16 x i16> %b) {
1638 ; SSE2-LABEL: max_le_v16i16:
1637 define <16 x i16> @min_le_v16i16(<16 x i16> %a, <16 x i16> %b) {
1638 ; SSE2-LABEL: min_le_v16i16:
16391639 ; SSE2: # BB#0:
16401640 ; SSE2-NEXT: movdqa %xmm1, %xmm4
16411641 ; SSE2-NEXT: psubusw %xmm3, %xmm4
16541654 ; SSE2-NEXT: movdqa %xmm4, %xmm1
16551655 ; SSE2-NEXT: retq
16561656 ;
1657 ; SSE41-LABEL: max_le_v16i16:
1657 ; SSE41-LABEL: min_le_v16i16:
16581658 ; SSE41: # BB#0:
16591659 ; SSE41-NEXT: pminuw %xmm2, %xmm0
16601660 ; SSE41-NEXT: pminuw %xmm3, %xmm1
16611661 ; SSE41-NEXT: retq
16621662 ;
1663 ; SSE42-LABEL: max_le_v16i16:
1663 ; SSE42-LABEL: min_le_v16i16:
16641664 ; SSE42: # BB#0:
16651665 ; SSE42-NEXT: pminuw %xmm2, %xmm0
16661666 ; SSE42-NEXT: pminuw %xmm3, %xmm1
16671667 ; SSE42-NEXT: retq
16681668 ;
1669 ; AVX1-LABEL: max_le_v16i16:
1669 ; AVX1-LABEL: min_le_v16i16:
16701670 ; AVX1: # BB#0:
16711671 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
16721672 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
16751675 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
16761676 ; AVX1-NEXT: retq
16771677 ;
1678 ; AVX2-LABEL: max_le_v16i16:
1678 ; AVX2-LABEL: min_le_v16i16:
16791679 ; AVX2: # BB#0:
16801680 ; AVX2-NEXT: vpminuw %ymm1, %ymm0, %ymm0
16811681 ; AVX2-NEXT: retq
16821682 ;
1683 ; AVX512-LABEL: max_le_v16i16:
1683 ; AVX512-LABEL: min_le_v16i16:
16841684 ; AVX512: # BB#0:
16851685 ; AVX512-NEXT: vpminuw %ymm1, %ymm0, %ymm0
16861686 ; AVX512-NEXT: retq
16891689 ret <16 x i16> %2
16901690 }
16911691
1692 define <16 x i8> @max_le_v16i8(<16 x i8> %a, <16 x i8> %b) {
1693 ; SSE-LABEL: max_le_v16i8:
1692 define <16 x i8> @min_le_v16i8(<16 x i8> %a, <16 x i8> %b) {
1693 ; SSE-LABEL: min_le_v16i8:
16941694 ; SSE: # BB#0:
16951695 ; SSE-NEXT: pminub %xmm1, %xmm0
16961696 ; SSE-NEXT: retq
16971697 ;
1698 ; AVX-LABEL: max_le_v16i8:
1698 ; AVX-LABEL: min_le_v16i8:
16991699 ; AVX: # BB#0:
17001700 ; AVX-NEXT: vpminub %xmm1, %xmm0, %xmm0
17011701 ; AVX-NEXT: retq
17041704 ret <16 x i8> %2
17051705 }
17061706
1707 define <32 x i8> @max_le_v32i8(<32 x i8> %a, <32 x i8> %b) {
1708 ; SSE-LABEL: max_le_v32i8:
1707 define <32 x i8> @min_le_v32i8(<32 x i8> %a, <32 x i8> %b) {
1708 ; SSE-LABEL: min_le_v32i8:
17091709 ; SSE: # BB#0:
17101710 ; SSE-NEXT: pminub %xmm2, %xmm0
17111711 ; SSE-NEXT: pminub %xmm3, %xmm1
17121712 ; SSE-NEXT: retq
17131713 ;
1714 ; AVX1-LABEL: max_le_v32i8:
1714 ; AVX1-LABEL: min_le_v32i8:
17151715 ; AVX1: # BB#0:
17161716 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
17171717 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
17201720 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
17211721 ; AVX1-NEXT: retq
17221722 ;
1723 ; AVX2-LABEL: max_le_v32i8:
1723 ; AVX2-LABEL: min_le_v32i8:
17241724 ; AVX2: # BB#0:
17251725 ; AVX2-NEXT: vpminub %ymm1, %ymm0, %ymm0
17261726 ; AVX2-NEXT: retq
17271727 ;
1728 ; AVX512-LABEL: max_le_v32i8:
1728 ; AVX512-LABEL: min_le_v32i8:
17291729 ; AVX512: # BB#0:
17301730 ; AVX512-NEXT: vpminub %ymm1, %ymm0, %ymm0
17311731 ; AVX512-NEXT: retq