@@ -3005,3 +3005,33 @@ define <8 x i1> @bswap_vec_eq(<8 x i16> %x, <8 x i16> %y) {
3005
3005
ret <8 x i1 > %cmp
3006
3006
}
3007
3007
3008
+ declare i64 @llvm.bitreverse.i64 (i64 )
3009
+
3010
+ define i1 @bitreverse_eq (i64 %x , i64 %y ) {
3011
+ ; CHECK-LABEL: @bitreverse_eq(
3012
+ ; CHECK-NEXT: [[REVX:%.*]] = call i64 @llvm.bitreverse.i64(i64 %x)
3013
+ ; CHECK-NEXT: [[REVY:%.*]] = call i64 @llvm.bitreverse.i64(i64 %y)
3014
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[REVX]], [[REVY]]
3015
+ ; CHECK-NEXT: ret i1 [[CMP]]
3016
+ ;
3017
+ %revx = call i64 @llvm.bitreverse.i64 (i64 %x )
3018
+ %revy = call i64 @llvm.bitreverse.i64 (i64 %y )
3019
+ %cmp = icmp eq i64 %revx , %revy
3020
+ ret i1 %cmp
3021
+ }
3022
+
3023
+ declare <8 x i16 > @llvm.bitreverse.v8i16 (<8 x i16 >)
3024
+
3025
+ define <8 x i1 > @bitreverse_vec_ne (<8 x i16 > %x , <8 x i16 > %y ) {
3026
+ ; CHECK-LABEL: @bitreverse_vec_ne(
3027
+ ; CHECK-NEXT: [[REVX:%.*]] = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %x)
3028
+ ; CHECK-NEXT: [[REVY:%.*]] = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %y)
3029
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <8 x i16> [[REVX]], [[REVY]]
3030
+ ; CHECK-NEXT: ret <8 x i1> [[CMP]]
3031
+ ;
3032
+ %revx = call <8 x i16 > @llvm.bitreverse.v8i16 (<8 x i16 > %x )
3033
+ %revy = call <8 x i16 > @llvm.bitreverse.v8i16 (<8 x i16 > %y )
3034
+ %cmp = icmp ne <8 x i16 > %revx , %revy
3035
+ ret <8 x i1 > %cmp
3036
+ }
3037
+
0 commit comments