; GISEL-LABEL: cmeq8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp eq <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmeq16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp eq <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmeq4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp eq <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmeq8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp eq <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmeq2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp eq <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmeq4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp eq <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmeq2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp eq <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ne <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ne <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.4h, v0.4h, v1.4h
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ne <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.8h, v0.8h, v1.8h
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ne <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ne <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ne <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: cmeq v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ne <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmgt8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sgt <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmgt16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sgt <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmgt4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sgt <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmgt8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sgt <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmgt2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sgt <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmgt4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sgt <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmgt2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sgt <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmlt8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp slt <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmlt16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp slt <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmlt4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp slt <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmlt8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp slt <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmlt2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp slt <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmlt4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp slt <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmlt2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmgt v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp slt <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmge8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sge <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmge16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sge <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmge4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sge <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmge8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sge <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmge2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sge <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmge4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sge <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmge2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sge <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmle8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sle <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmle16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sle <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmle4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sle <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmle8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sle <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmle2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sle <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmle4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sle <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmle2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmge v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sle <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmhi8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ugt <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmhi16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ugt <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmhi4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ugt <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmhi8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ugt <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmhi2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ugt <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmhi4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ugt <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmhi2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ugt <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmlo8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ult <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmlo16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ult <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmlo4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ult <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmlo8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ult <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmlo2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ult <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmlo4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ult <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmlo2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhi v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ult <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmhs8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp uge <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmhs16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp uge <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmhs4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp uge <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmhs8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp uge <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmhs2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp uge <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmhs4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp uge <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmhs2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp uge <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: cmls8xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ule <8 x i8> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-LABEL: cmls16xi8:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ule <16 x i8> %A, %B;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-LABEL: cmls4xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ule <4 x i16> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-LABEL: cmls8xi16:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ule <8 x i16> %A, %B;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-LABEL: cmls2xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ule <2 x i32> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: cmls4xi32:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ule <4 x i32> %A, %B;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: cmls2xi64:
; GISEL: // %bb.0:
; GISEL-NEXT: cmhs v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ule <2 x i64> %A, %B;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: and v0.8b, v0.8b, v1.8b
; GISEL-NEXT: cmeq v0.8b, v0.8b, v2.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = and <8 x i8> %A, %B
%tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.16b, v0.16b, v1.16b
; GISEL-NEXT: cmeq v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = and <16 x i8> %A, %B
%tmp4 = icmp ne <16 x i8> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.8b, v0.8b, v1.8b
; GISEL-NEXT: cmeq v0.4h, v0.4h, v2.4h
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = and <4 x i16> %A, %B
%tmp4 = icmp ne <4 x i16> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.16b, v0.16b, v1.16b
; GISEL-NEXT: cmeq v0.8h, v0.8h, v2.8h
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = and <8 x i16> %A, %B
%tmp4 = icmp ne <8 x i16> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.8b, v0.8b, v1.8b
; GISEL-NEXT: cmeq v0.2s, v0.2s, v2.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = and <2 x i32> %A, %B
%tmp4 = icmp ne <2 x i32> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.16b, v0.16b, v1.16b
; GISEL-NEXT: cmeq v0.4s, v0.4s, v2.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = and <4 x i32> %A, %B
%tmp4 = icmp ne <4 x i32> %tmp3, zeroinitializer
; GISEL-NEXT: and v0.16b, v0.16b, v1.16b
; GISEL-NEXT: cmeq v0.2d, v0.2d, v2.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = and <2 x i64> %A, %B
%tmp4 = icmp ne <2 x i64> %tmp3, zeroinitializer
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp eq <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp eq <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp eq <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp eq <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp eq <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp eq <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp eq <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sge <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sge <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sge <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sge <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sge <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sge <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sge <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sgt <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sgt <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sgt <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sgt <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sgt <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sgt <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sgt <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sle <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp sle <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sle <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp sle <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sle <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp sle <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmge v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp sle <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp slt <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp slt <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp slt <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp slt <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp slt <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp slt <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmgt v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp slt <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ne <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ne <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.4h, v0.4h, v1.4h
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ne <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.8h, v0.8h, v1.8h
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ne <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ne <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ne <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmeq v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ne <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: adrp x8, .LCPI126_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI126_0]
; GISEL-NEXT: cmhs v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp uge <8 x i8> %A, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-NEXT: adrp x8, .LCPI127_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI127_0]
; GISEL-NEXT: cmhs v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp uge <16 x i8> %A, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-NEXT: adrp x8, .LCPI128_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI128_0]
; GISEL-NEXT: cmhs v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp uge <4 x i16> %A, <i16 2, i16 2, i16 2, i16 2>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-NEXT: adrp x8, .LCPI129_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI129_0]
; GISEL-NEXT: cmhs v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp uge <8 x i16> %A, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-NEXT: adrp x8, .LCPI130_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI130_0]
; GISEL-NEXT: cmhs v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp uge <2 x i32> %A, <i32 2, i32 2>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: adrp x8, .LCPI131_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI131_0]
; GISEL-NEXT: cmhs v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp uge <4 x i32> %A, <i32 2, i32 2, i32 2, i32 2>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: adrp x8, .LCPI132_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI132_0]
; GISEL-NEXT: cmhs v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp uge <2 x i64> %A, <i64 2, i64 2>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: adrp x8, .LCPI133_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI133_0]
; GISEL-NEXT: cmhi v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ugt <8 x i8> %A, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-NEXT: adrp x8, .LCPI134_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI134_0]
; GISEL-NEXT: cmhi v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ugt <16 x i8> %A, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-NEXT: adrp x8, .LCPI135_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI135_0]
; GISEL-NEXT: cmhi v0.4h, v0.4h, v1.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ugt <4 x i16> %A, <i16 1, i16 1, i16 1, i16 1>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-NEXT: adrp x8, .LCPI136_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI136_0]
; GISEL-NEXT: cmhi v0.8h, v0.8h, v1.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ugt <8 x i16> %A, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-NEXT: adrp x8, .LCPI137_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI137_0]
; GISEL-NEXT: cmhi v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ugt <2 x i32> %A, <i32 1, i32 1>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: adrp x8, .LCPI138_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI138_0]
; GISEL-NEXT: cmhi v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ugt <4 x i32> %A, <i32 1, i32 1, i32 1, i32 1>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: adrp x8, .LCPI139_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI139_0]
; GISEL-NEXT: cmhi v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ugt <2 x i64> %A, <i64 1, i64 1>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ule <8 x i8> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ule <16 x i8> %A, zeroinitializer;
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ule <4 x i16> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ule <8 x i16> %A, zeroinitializer;
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ule <2 x i32> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ule <4 x i32> %A, zeroinitializer;
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: movi v1.2d, #0000000000000000
; GISEL-NEXT: cmhs v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ule <2 x i64> %A, zeroinitializer;
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: adrp x8, .LCPI147_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI147_0]
; GISEL-NEXT: cmhi v0.8b, v1.8b, v0.8b
-; GISEL-NEXT: shl v0.8b, v0.8b, #7
-; GISEL-NEXT: sshr v0.8b, v0.8b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ult <8 x i8> %A, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
; GISEL-NEXT: adrp x8, .LCPI148_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI148_0]
; GISEL-NEXT: cmhi v0.16b, v1.16b, v0.16b
-; GISEL-NEXT: shl v0.16b, v0.16b, #7
-; GISEL-NEXT: sshr v0.16b, v0.16b, #7
; GISEL-NEXT: ret
%tmp3 = icmp ult <16 x i8> %A, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
; GISEL-NEXT: adrp x8, .LCPI149_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI149_0]
; GISEL-NEXT: cmhi v0.4h, v1.4h, v0.4h
-; GISEL-NEXT: shl v0.4h, v0.4h, #15
-; GISEL-NEXT: sshr v0.4h, v0.4h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ult <4 x i16> %A, <i16 2, i16 2, i16 2, i16 2>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
; GISEL-NEXT: adrp x8, .LCPI150_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI150_0]
; GISEL-NEXT: cmhi v0.8h, v1.8h, v0.8h
-; GISEL-NEXT: shl v0.8h, v0.8h, #15
-; GISEL-NEXT: sshr v0.8h, v0.8h, #15
; GISEL-NEXT: ret
%tmp3 = icmp ult <8 x i16> %A, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
%tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
; GISEL-NEXT: adrp x8, .LCPI151_0
; GISEL-NEXT: ldr d1, [x8, :lo12:.LCPI151_0]
; GISEL-NEXT: cmhi v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ult <2 x i32> %A, <i32 2, i32 2>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: adrp x8, .LCPI152_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI152_0]
; GISEL-NEXT: cmhi v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = icmp ult <4 x i32> %A, <i32 2, i32 2, i32 2, i32 2>
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: adrp x8, .LCPI153_0
; GISEL-NEXT: ldr q1, [x8, :lo12:.LCPI153_0]
; GISEL-NEXT: cmhi v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = icmp ult <2 x i64> %A, <i64 2, i64 2>
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoeq2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoeq4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoeq2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoge2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oge <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoge4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oge <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoge2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp oge <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogt2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogt4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogt2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmole2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ole <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmole4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ole <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmole2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ole <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmolt2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp olt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmolt4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp olt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmolt2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp olt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v2.2s, v0.2s, v1.2s
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp one <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v2.4s, v0.4s, v1.4s
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp one <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v2.2d, v0.2d, v1.2d
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp one <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmge v2.2s, v0.2s, v1.2s
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ord <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmge v2.4s, v0.4s, v1.4s
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ord <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmge v2.2d, v0.2d, v1.2d
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ord <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uno <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uno <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp uno <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uge <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uge <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp uge <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v1.2s, v0.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v1.4s, v0.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v1.2d, v0.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ule <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ule <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ule <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ult <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ult <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ult <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp une <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp une <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp une <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoeqz2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoeqz4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoeqz2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp oeq <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogez2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oge <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogez4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp oge <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogez2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp oge <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogtz2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogtz4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogtz2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ogt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoltz2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp olt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoltz4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp olt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoltz2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp olt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmolez2xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ole <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmolez4xfloat:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ole <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmolez2xdouble:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ole <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v1.2s, v0.2s, #0.0
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp one <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v1.4s, v0.4s, #0.0
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp one <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v1.2d, v0.2d, #0.0
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp one <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmge v1.2s, v0.2s, #0.0
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ord <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmge v1.4s, v0.4s, #0.0
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ord <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmge v1.2d, v0.2d, #0.0
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ord <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ueq <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uge <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uge <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp uge <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ugt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ult <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ult <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ult <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ule <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp ule <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp ule <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp une <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp une <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp une <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uno <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp uno <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp uno <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoeq2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoeq4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoeq2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoge2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoge4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoge2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogt2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, v1.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogt4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, v1.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogt2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, v1.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmole2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmole4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmole2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmolt2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmolt4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmolt2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v2.2s, v0.2s, v1.2s
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v2.4s, v0.4s, v1.4s
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v2.2d, v0.2d, v1.2d
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmge v2.2s, v0.2s, v1.2s
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmge v2.4s, v0.4s, v1.4s
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmge v2.2d, v0.2d, v1.2d
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: orr v0.8b, v0.8b, v2.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: orr v0.16b, v0.16b, v2.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v1.2s, v0.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v1.4s, v0.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v1.2d, v0.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v1.2s, v0.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v1.4s, v0.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v1.2d, v0.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, v1.2s
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <2 x float> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, v1.4s
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <4 x float> %A, %B
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, v1.2d
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <2 x double> %A, %B
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoeqz2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoeqz4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoeqz2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast oeq <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogez2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogez4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogez2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast oge <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmogtz2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmogtz4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmogtz2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ogt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmoltz2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmoltz4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmoltz2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast olt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-LABEL: fcmolez2xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2s, v0.2s, #0.0
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-LABEL: fcmolez4xfloat_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.4s, v0.4s, #0.0
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-LABEL: fcmolez2xdouble_fast:
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2d, v0.2d, #0.0
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ole <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmgt v1.2s, v0.2s, #0.0
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmgt v1.4s, v0.4s, #0.0
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmgt v1.2d, v0.2d, #0.0
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast one <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmge v1.2s, v0.2s, #0.0
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmge v1.4s, v0.4s, #0.0
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmge v1.2d, v0.2d, #0.0
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ord <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ueq <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast uge <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmle v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ugt <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmge v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ult <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmgt v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast ule <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2s, v0.2s, #0.0
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.4s, v0.4s, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL: // %bb.0:
; GISEL-NEXT: fcmeq v0.2d, v0.2d, #0.0
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast une <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
; GISEL-NEXT: fcmlt v0.2s, v0.2s, #0.0
; GISEL-NEXT: orr v0.8b, v0.8b, v1.8b
; GISEL-NEXT: mvn v0.8b, v0.8b
-; GISEL-NEXT: shl v0.2s, v0.2s, #31
-; GISEL-NEXT: sshr v0.2s, v0.2s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <2 x float> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
; GISEL-NEXT: fcmlt v0.4s, v0.4s, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.4s, v0.4s, #31
-; GISEL-NEXT: sshr v0.4s, v0.4s, #31
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <4 x float> %A, zeroinitializer
%tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
; GISEL-NEXT: fcmlt v0.2d, v0.2d, #0.0
; GISEL-NEXT: orr v0.16b, v0.16b, v1.16b
; GISEL-NEXT: mvn v0.16b, v0.16b
-; GISEL-NEXT: shl v0.2d, v0.2d, #63
-; GISEL-NEXT: sshr v0.2d, v0.2d, #63
; GISEL-NEXT: ret
%tmp3 = fcmp fast uno <2 x double> %A, zeroinitializer
%tmp4 = sext <2 x i1> %tmp3 to <2 x i64>