@@ -2870,6 +2870,95 @@ define <2 x i64> @fcmune2xdouble(<2 x double> %A, <2 x double> %B) {
28702870 ret <2 x i64 > %tmp4
28712871}
28722872
2873+ define <2 x i32 > @fcmal2xfloat (<2 x float > %A , <2 x float > %B ) {
2874+ ; CHECK-SD-LABEL: fcmal2xfloat:
2875+ ; CHECK-SD: // %bb.0:
2876+ ; CHECK-SD-NEXT: movi v0.2d, #0xffffffffffffffff
2877+ ; CHECK-SD-NEXT: ret
2878+ ;
2879+ ; CHECK-GI-LABEL: fcmal2xfloat:
2880+ ; CHECK-GI: // %bb.0:
2881+ ; CHECK-GI-NEXT: movi v0.2s, #1
2882+ ; CHECK-GI-NEXT: shl v0.2s, v0.2s, #31
2883+ ; CHECK-GI-NEXT: sshr v0.2s, v0.2s, #31
2884+ ; CHECK-GI-NEXT: ret
2885+ %tmp3 = fcmp true <2 x float > %A , %B
2886+ %tmp4 = sext <2 x i1 > %tmp3 to <2 x i32 >
2887+ ret <2 x i32 > %tmp4
2888+ }
2889+
2890+ define <4 x i32 > @fcmal4xfloat (<4 x float > %A , <4 x float > %B ) {
2891+ ; CHECK-SD-LABEL: fcmal4xfloat:
2892+ ; CHECK-SD: // %bb.0:
2893+ ; CHECK-SD-NEXT: movi v0.2d, #0xffffffffffffffff
2894+ ; CHECK-SD-NEXT: ret
2895+ ;
2896+ ; CHECK-GI-LABEL: fcmal4xfloat:
2897+ ; CHECK-GI: // %bb.0:
2898+ ; CHECK-GI-NEXT: movi v0.2s, #1
2899+ ; CHECK-GI-NEXT: mov v0.d[1], v0.d[0]
2900+ ; CHECK-GI-NEXT: shl v0.4s, v0.4s, #31
2901+ ; CHECK-GI-NEXT: sshr v0.4s, v0.4s, #31
2902+ ; CHECK-GI-NEXT: ret
2903+ %tmp3 = fcmp true <4 x float > %A , %B
2904+ %tmp4 = sext <4 x i1 > %tmp3 to <4 x i32 >
2905+ ret <4 x i32 > %tmp4
2906+ }
2907+ define <2 x i64 > @fcmal2xdouble (<2 x double > %A , <2 x double > %B ) {
2908+ ; CHECK-SD-LABEL: fcmal2xdouble:
2909+ ; CHECK-SD: // %bb.0:
2910+ ; CHECK-SD-NEXT: movi v0.2d, #0xffffffffffffffff
2911+ ; CHECK-SD-NEXT: ret
2912+ ;
2913+ ; CHECK-GI-LABEL: fcmal2xdouble:
2914+ ; CHECK-GI: // %bb.0:
2915+ ; CHECK-GI-NEXT: adrp x8, .LCPI221_0
2916+ ; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI221_0]
2917+ ; CHECK-GI-NEXT: shl v0.2d, v0.2d, #63
2918+ ; CHECK-GI-NEXT: sshr v0.2d, v0.2d, #63
2919+ ; CHECK-GI-NEXT: ret
2920+ %tmp3 = fcmp true <2 x double > %A , %B
2921+ %tmp4 = sext <2 x i1 > %tmp3 to <2 x i64 >
2922+ ret <2 x i64 > %tmp4
2923+ }
2924+
2925+ define <2 x i32 > @fcmnv2xfloat (<2 x float > %A , <2 x float > %B ) {
2926+ ; CHECK-LABEL: fcmnv2xfloat:
2927+ ; CHECK: // %bb.0:
2928+ ; CHECK-NEXT: movi v0.2d, #0000000000000000
2929+ ; CHECK-NEXT: ret
2930+ %tmp3 = fcmp false <2 x float > %A , %B
2931+ %tmp4 = sext <2 x i1 > %tmp3 to <2 x i32 >
2932+ ret <2 x i32 > %tmp4
2933+ }
2934+
2935+ define <4 x i32 > @fcmnv4xfloat (<4 x float > %A , <4 x float > %B ) {
2936+ ; CHECK-SD-LABEL: fcmnv4xfloat:
2937+ ; CHECK-SD: // %bb.0:
2938+ ; CHECK-SD-NEXT: movi v0.2d, #0000000000000000
2939+ ; CHECK-SD-NEXT: ret
2940+ ;
2941+ ; CHECK-GI-LABEL: fcmnv4xfloat:
2942+ ; CHECK-GI: // %bb.0:
2943+ ; CHECK-GI-NEXT: movi v0.2d, #0000000000000000
2944+ ; CHECK-GI-NEXT: mov v0.d[1], v0.d[0]
2945+ ; CHECK-GI-NEXT: shl v0.4s, v0.4s, #31
2946+ ; CHECK-GI-NEXT: sshr v0.4s, v0.4s, #31
2947+ ; CHECK-GI-NEXT: ret
2948+ %tmp3 = fcmp false <4 x float > %A , %B
2949+ %tmp4 = sext <4 x i1 > %tmp3 to <4 x i32 >
2950+ ret <4 x i32 > %tmp4
2951+ }
2952+ define <2 x i64 > @fcmnv2xdouble (<2 x double > %A , <2 x double > %B ) {
2953+ ; CHECK-LABEL: fcmnv2xdouble:
2954+ ; CHECK: // %bb.0:
2955+ ; CHECK-NEXT: movi v0.2d, #0000000000000000
2956+ ; CHECK-NEXT: ret
2957+ %tmp3 = fcmp false <2 x double > %A , %B
2958+ %tmp4 = sext <2 x i1 > %tmp3 to <2 x i64 >
2959+ ret <2 x i64 > %tmp4
2960+ }
2961+
28732962define <2 x i32 > @fcmoeqz2xfloat (<2 x float > %A ) {
28742963; CHECK-LABEL: fcmoeqz2xfloat:
28752964; CHECK: // %bb.0:
0 commit comments