[llvm] r255370 - Add tests for bitcast-bitcast sequences for all scalar/vector permutations

Hal Finkel via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 11 12:52:06 PST 2015


I'm not too concerned because I know that you're working on it, but in general, if you're adding tests to capture the current state of things, and that current state is known to be suboptimal, please mark the test to some FIXME comments. That way if someone else happens to do something which accidentally makes one or all of them better, they can be happy instead of concerned.

Thanks again,
Hal

----- Original Message -----
> From: "Sanjay Patel via llvm-commits" <llvm-commits at lists.llvm.org>
> To: llvm-commits at lists.llvm.org
> Sent: Friday, December 11, 2015 2:26:31 PM
> Subject: [llvm] r255370 - Add tests for bitcast-bitcast sequences for all scalar/vector permutations
> 
> Author: spatel
> Date: Fri Dec 11 14:26:30 2015
> New Revision: 255370
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=255370&view=rev
> Log:
> Add tests for bitcast-bitcast sequences for all scalar/vector
> permutations
> 
> As noted in http://reviews.llvm.org/D15392 , we should be able to
> improve this.
> 
> 
> Added:
>     llvm/trunk/test/Transforms/InstCombine/bitcast-bitcast.ll
> 
> Added: llvm/trunk/test/Transforms/InstCombine/bitcast-bitcast.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/bitcast-bitcast.ll?rev=255370&view=auto
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/bitcast-bitcast.ll (added)
> +++ llvm/trunk/test/Transforms/InstCombine/bitcast-bitcast.ll Fri Dec
> 11 14:26:30 2015
> @@ -0,0 +1,90 @@
> +; RUN: opt < %s -instcombine -S | FileCheck %s
> +
> +; Check all scalar / vector combinations for a pair of bitcasts.
> +
> +define ppc_fp128 @bitcast_bitcast_s_s_s(i128 %a) {
> +  %bc1 = bitcast i128 %a to fp128
> +  %bc2 = bitcast fp128 %bc1 to ppc_fp128
> +  ret ppc_fp128 %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_s_s_s(
> +; CHECK-NEXT:  %bc2 = bitcast i128 %a to ppc_fp128
> +; CHECK-NEXT:  ret ppc_fp128 %bc2
> +}
> +
> +define <2 x i32> @bitcast_bitcast_s_s_v(i64 %a) {
> +  %bc1 = bitcast i64 %a to double
> +  %bc2 = bitcast double %bc1 to <2 x i32>
> +  ret <2 x i32> %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_s_s_v(
> +; CHECK-NEXT:  %bc1 = bitcast i64 %a to double
> +; CHECK-NEXT:  %bc2 = bitcast double %bc1 to <2 x i32>
> +; CHECK-NEXT:  ret <2 x i32> %bc2
> +}
> +
> +define double @bitcast_bitcast_s_v_s(i64 %a) {
> +  %bc1 = bitcast i64 %a to <2 x i32>
> +  %bc2 = bitcast <2 x i32> %bc1 to double
> +  ret double %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_s_v_s(
> +; CHECK-NEXT:  %bc1 = bitcast i64 %a to <2 x i32>
> +; CHECK-NEXT:  %bc2 = bitcast <2 x i32> %bc1 to double
> +; CHECK-NEXT:  ret double %bc2
> +}
> +
> +define <2 x i32> @bitcast_bitcast_s_v_v(i64 %a) {
> +  %bc1 = bitcast i64 %a to <4 x i16>
> +  %bc2 = bitcast <4 x i16> %bc1 to <2 x i32>
> +  ret <2 x i32> %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_s_v_v(
> +; CHECK-NEXT:  %bc1 = bitcast i64 %a to <4 x i16>
> +; CHECK-NEXT:  %bc2 = bitcast <4 x i16> %bc1 to <2 x i32>
> +; CHECK-NEXT:  ret <2 x i32> %bc2
> +}
> +
> +define i64 @bitcast_bitcast_v_s_s(<2 x i32> %a) {
> +  %bc1 = bitcast <2 x i32> %a to double
> +  %bc2 = bitcast double %bc1 to i64
> +  ret i64 %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_v_s_s(
> +; CHECK-NEXT:  %bc1 = bitcast <2 x i32> %a to double
> +; CHECK-NEXT:  %bc2 = bitcast double %bc1 to i64
> +; CHECK-NEXT:  ret i64 %bc2
> +}
> +
> +define <4 x i16> @bitcast_bitcast_v_s_v(<2 x i32> %a) {
> +  %bc1 = bitcast <2 x i32> %a to double
> +  %bc2 = bitcast double %bc1 to <4 x i16>
> +  ret <4 x i16> %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_v_s_v(
> +; CHECK-NEXT:  %bc1 = bitcast <2 x i32> %a to double
> +; CHECK-NEXT:  %bc2 = bitcast double %bc1 to <4 x i16>
> +; CHECK-NEXT:  ret <4 x i16> %bc2
> +}
> +
> +define double @bitcast_bitcast_v_v_s(<2 x float> %a) {
> +  %bc1 = bitcast <2 x float> %a to <4 x i16>
> +  %bc2 = bitcast <4 x i16> %bc1 to double
> +  ret double %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_v_v_s(
> +; CHECK-NEXT:  %bc1 = bitcast <2 x float> %a to <4 x i16>
> +; CHECK-NEXT:  %bc2 = bitcast <4 x i16> %bc1 to double
> +; CHECK-NEXT:  ret double %bc2
> +}
> +
> +define <2 x i32> @bitcast_bitcast_v_v_v(<2 x float> %a) {
> +  %bc1 = bitcast <2 x float> %a to <4 x i16>
> +  %bc2 = bitcast <4 x i16> %bc1 to <2 x i32>
> +  ret <2 x i32> %bc2
> +
> +; CHECK-LABEL: @bitcast_bitcast_v_v_v(
> +; CHECK-NEXT:  %bc2 = bitcast <2 x float> %a to <2 x i32>
> +; CHECK-NEXT:  ret <2 x i32> %bc2
> +}
> +
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-commits mailing list