diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/InstCombine/2007-03-21-SignedRangeTest.ll | 5 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/div.ll | 15 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/exact.ll | 47 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/icmp.ll | 4 |
4 files changed, 27 insertions, 44 deletions
diff --git a/llvm/test/Transforms/InstCombine/2007-03-21-SignedRangeTest.ll b/llvm/test/Transforms/InstCombine/2007-03-21-SignedRangeTest.ll index 69b7c541f93..ffcfe2683cf 100644 --- a/llvm/test/Transforms/InstCombine/2007-03-21-SignedRangeTest.ll +++ b/llvm/test/Transforms/InstCombine/2007-03-21-SignedRangeTest.ll @@ -14,11 +14,10 @@ define i1 @test(i32 %tmp6) { ret i1 %1 } -; FIXME: Vectors should fold the same way. define <2 x i1> @test_vec(<2 x i32> %tmp6) { ; CHECK-LABEL: @test_vec( -; CHECK-NEXT: [[TMP7:%.*]] = sdiv <2 x i32> %tmp6, <i32 12, i32 12> -; CHECK-NEXT: [[TMP1:%.*]] = icmp ne <2 x i32> [[TMP7]], <i32 -6, i32 -6> +; CHECK-NEXT: [[TMP6_OFF:%.*]] = add <2 x i32> %tmp6, <i32 83, i32 83> +; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt <2 x i32> [[TMP6_OFF]], <i32 11, i32 11> ; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %tmp7 = sdiv <2 x i32> %tmp6, <i32 12, i32 12> diff --git a/llvm/test/Transforms/InstCombine/div.ll b/llvm/test/Transforms/InstCombine/div.ll index ece332ab273..a037607267a 100644 --- a/llvm/test/Transforms/InstCombine/div.ll +++ b/llvm/test/Transforms/InstCombine/div.ll @@ -72,12 +72,11 @@ define i1 @test7(i32 %A) { ret i1 %C } -; FIXME: Vectors should fold the same way. define <2 x i1> @test7vec(<2 x i32> %A) { ; CHECK-LABEL: @test7vec( -; CHECK-NEXT: [[B:%.*]] = udiv <2 x i32> %A, <i32 10, i32 10> -; CHECK-NEXT: [[C:%.*]] = icmp eq <2 x i32> [[B]], <i32 2, i32 2> -; CHECK-NEXT: ret <2 x i1> [[C]] +; CHECK-NEXT: [[A_OFF:%.*]] = add <2 x i32> %A, <i32 -20, i32 -20> +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i32> [[A_OFF]], <i32 10, i32 10> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %B = udiv <2 x i32> %A, <i32 10, i32 10> %C = icmp eq <2 x i32> %B, <i32 2, i32 2> @@ -95,11 +94,9 @@ define i1 @test8(i8 %A) { ret i1 %C } -; FIXME: Vectors should fold the same way. define <2 x i1> @test8vec(<2 x i8> %A) { ; CHECK-LABEL: @test8vec( -; CHECK-NEXT: [[B:%.*]] = udiv <2 x i8> %A, <i8 123, i8 123> -; CHECK-NEXT: [[C:%.*]] = icmp eq <2 x i8> [[B]], <i8 2, i8 2> +; CHECK-NEXT: [[C:%.*]] = icmp ugt <2 x i8> %A, <i8 -11, i8 -11> ; CHECK-NEXT: ret <2 x i1> [[C]] ; %B = udiv <2 x i8> %A, <i8 123, i8 123> @@ -118,11 +115,9 @@ define i1 @test9(i8 %A) { ret i1 %C } -; FIXME: Vectors should fold the same way. define <2 x i1> @test9vec(<2 x i8> %A) { ; CHECK-LABEL: @test9vec( -; CHECK-NEXT: [[B:%.*]] = udiv <2 x i8> %A, <i8 123, i8 123> -; CHECK-NEXT: [[C:%.*]] = icmp ne <2 x i8> [[B]], <i8 2, i8 2> +; CHECK-NEXT: [[C:%.*]] = icmp ult <2 x i8> %A, <i8 -10, i8 -10> ; CHECK-NEXT: ret <2 x i1> [[C]] ; %B = udiv <2 x i8> %A, <i8 123, i8 123> diff --git a/llvm/test/Transforms/InstCombine/exact.ll b/llvm/test/Transforms/InstCombine/exact.ll index 530d665b213..f93bc8eff6b 100644 --- a/llvm/test/Transforms/InstCombine/exact.ll +++ b/llvm/test/Transforms/InstCombine/exact.ll @@ -159,8 +159,8 @@ define i1 @udiv_icmp1(i64 %X) { define <2 x i1> @udiv_icmp1_vec(<2 x i64> %X) { ; CHECK-LABEL: @udiv_icmp1_vec( -; CHECK-NEXT: [[B:%.*]] = icmp ugt <2 x i64> %X, <i64 4, i64 4> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp ne <2 x i64> %X, zeroinitializer +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = udiv exact <2 x i64> %X, <i64 5, i64 5> %B = icmp ne <2 x i64> %A, zeroinitializer @@ -177,10 +177,11 @@ define i1 @udiv_icmp2(i64 %X) { ret i1 %B } +; FIXME: missing vector fold for ult 1 -> eq 0 define <2 x i1> @udiv_icmp2_vec(<2 x i64> %X) { ; CHECK-LABEL: @udiv_icmp2_vec( -; CHECK-NEXT: [[B:%.*]] = icmp ult <2 x i64> %X, <i64 5, i64 5> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i64> %X, <i64 1, i64 1> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = udiv exact <2 x i64> %X, <i64 5, i64 5> %B = icmp eq <2 x i64> %A, zeroinitializer @@ -197,12 +198,11 @@ define i1 @sdiv_icmp1(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. +; FIXME: missing vector fold for ult 1 -> eq 0 define <2 x i1> @sdiv_icmp1_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp1_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 5, i64 5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], zeroinitializer -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i64> %X, <i64 1, i64 1> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 5, i64 5> %B = icmp eq <2 x i64> %A, zeroinitializer @@ -219,12 +219,10 @@ define i1 @sdiv_icmp2(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. define <2 x i1> @sdiv_icmp2_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp2_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 5, i64 5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], <i64 1, i64 1> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <2 x i64> %X, <i64 5, i64 5> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 5, i64 5> %B = icmp eq <2 x i64> %A, <i64 1, i64 1> @@ -241,12 +239,10 @@ define i1 @sdiv_icmp3(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. define <2 x i1> @sdiv_icmp3_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp3_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 5, i64 5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], <i64 -1, i64 -1> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <2 x i64> %X, <i64 -5, i64 -5> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 5, i64 5> %B = icmp eq <2 x i64> %A, <i64 -1, i64 -1> @@ -263,12 +259,11 @@ define i1 @sdiv_icmp4(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. +; FIXME: missing vector fold for ult 1 -> eq 0 define <2 x i1> @sdiv_icmp4_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp4_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], zeroinitializer -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i64> %X, <i64 1, i64 1> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> %B = icmp eq <2 x i64> %A, zeroinitializer @@ -285,12 +280,10 @@ define i1 @sdiv_icmp5(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. define <2 x i1> @sdiv_icmp5_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp5_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], <i64 1, i64 1> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <2 x i64> %X, <i64 -5, i64 -5> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> %B = icmp eq <2 x i64> %A, <i64 1, i64 1> @@ -307,12 +300,10 @@ define i1 @sdiv_icmp6(i64 %X) { ret i1 %B } -; FIXME: Vectors should fold too. define <2 x i1> @sdiv_icmp6_vec(<2 x i64> %X) { ; CHECK-LABEL: @sdiv_icmp6_vec( -; CHECK-NEXT: [[A:%.*]] = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> -; CHECK-NEXT: [[B:%.*]] = icmp eq <2 x i64> [[A]], <i64 -1, i64 -1> -; CHECK-NEXT: ret <2 x i1> [[B]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <2 x i64> %X, <i64 5, i64 5> +; CHECK-NEXT: ret <2 x i1> [[TMP1]] ; %A = sdiv exact <2 x i64> %X, <i64 -5, i64 -5> %B = icmp eq <2 x i64> %A, <i64 -1, i64 -1> diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll index 93e0cdf3646..9ad8250f66c 100644 --- a/llvm/test/Transforms/InstCombine/icmp.ll +++ b/llvm/test/Transforms/InstCombine/icmp.ll @@ -282,11 +282,9 @@ define i1 @test23(i32 %x) { ret i1 %i4 } -; FIXME: Vectors should fold too. define <2 x i1> @test23vec(<2 x i32> %x) { ; CHECK-LABEL: @test23vec( -; CHECK-NEXT: [[I3:%.*]] = sdiv <2 x i32> %x, <i32 -1328634635, i32 -1328634635> -; CHECK-NEXT: [[I4:%.*]] = icmp eq <2 x i32> [[I3]], <i32 -1, i32 -1> +; CHECK-NEXT: [[I4:%.*]] = icmp sgt <2 x i32> %x, <i32 1328634634, i32 1328634634> ; CHECK-NEXT: ret <2 x i1> [[I4]] ; %i3 = sdiv <2 x i32> %x, <i32 -1328634635, i32 -1328634635> |