140755467393f4569200cbc1cf1e9feeea4668611Chris Lattner; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -show-mc-encoding | FileCheck %s 223f849772411a46135b601231af3c032860bc9aaEvan Cheng 348b03bc70a8a9d890ad5f3168ca991fa68c7eabeChris Lattnerdefine i32 @test1(i32 %X, i32* %y) nounwind { 44c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar %tmp = load i32, i32* %y ; <i32> [#uses=1] 533eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner %tmp.upgrd.1 = icmp eq i32 %tmp, 0 ; <i1> [#uses=1] 633eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner br i1 %tmp.upgrd.1, label %ReturnBlock, label %cond_true 723f849772411a46135b601231af3c032860bc9aaEvan Cheng 833eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattnercond_true: ; preds = %0 933eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner ret i32 1 1023f849772411a46135b601231af3c032860bc9aaEvan Cheng 1133eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya LattnerReturnBlock: ; preds = %0 1233eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner ret i32 0 13b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test1: 1448b03bc70a8a9d890ad5f3168ca991fa68c7eabeChris Lattner; CHECK: cmpl $0, (%rsi) 1523f849772411a46135b601231af3c032860bc9aaEvan Cheng} 1623f849772411a46135b601231af3c032860bc9aaEvan Cheng 1748b03bc70a8a9d890ad5f3168ca991fa68c7eabeChris Lattnerdefine i32 @test2(i32 %X, i32* %y) nounwind { 184c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar %tmp = load i32, i32* %y ; <i32> [#uses=1] 1933eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner %tmp1 = shl i32 %tmp, 3 ; <i32> [#uses=1] 2033eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner %tmp1.upgrd.2 = icmp eq i32 %tmp1, 0 ; <i1> [#uses=1] 2133eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner br i1 %tmp1.upgrd.2, label %ReturnBlock, label %cond_true 2223f849772411a46135b601231af3c032860bc9aaEvan Cheng 2333eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattnercond_true: ; preds = %0 2433eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner ret i32 1 2523f849772411a46135b601231af3c032860bc9aaEvan Cheng 2633eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya LattnerReturnBlock: ; preds = %0 2733eefffb2b25b5f4a313f08fa7c57ddfcbccf36eTanya Lattner ret i32 0 28b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test2: 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: testl $536870911, (%rsi) 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesdefine i8 @test2b(i8 %X, i8* %y) nounwind { 334c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar %tmp = load i8, i8* %y ; <i8> [#uses=1] 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %tmp1 = shl i8 %tmp, 3 ; <i8> [#uses=1] 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %tmp1.upgrd.2 = icmp eq i8 %tmp1, 0 ; <i1> [#uses=1] 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines br i1 %tmp1.upgrd.2, label %ReturnBlock, label %cond_true 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinescond_true: ; preds = %0 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ret i8 1 40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesReturnBlock: ; preds = %0 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ret i8 0 43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK-LABEL: test2b: 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: testb $31, (%rsi) 4523f849772411a46135b601231af3c032860bc9aaEvan Cheng} 464a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 474a26318224b44ab93bbc29be17f84a87602581b5Chris Lattnerdefine i64 @test3(i64 %x) nounwind { 484a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %t = icmp eq i64 %x, 0 494a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %r = zext i1 %t to i64 504a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner ret i64 %r 51b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test3: 52de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: xorl %eax, %eax 534a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: testq %rdi, %rdi 544a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: sete %al 554a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: ret 564a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner} 574a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 584a26318224b44ab93bbc29be17f84a87602581b5Chris Lattnerdefine i64 @test4(i64 %x) nounwind { 594a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %t = icmp slt i64 %x, 1 604a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %r = zext i1 %t to i64 614a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner ret i64 %r 62b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test4: 63de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: xorl %eax, %eax 644a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: testq %rdi, %rdi 654a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: setle %al 664a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner; CHECK: ret 674a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner} 684a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 694a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 704a26318224b44ab93bbc29be17f84a87602581b5Chris Lattnerdefine i32 @test5(double %A) nounwind { 714a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner entry: 724a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %tmp2 = fcmp ogt double %A, 1.500000e+02; <i1> [#uses=1] 734a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %tmp5 = fcmp ult double %A, 7.500000e+01; <i1> [#uses=1] 744a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner %bothcond = or i1 %tmp2, %tmp5; <i1> [#uses=1] 754a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner br i1 %bothcond, label %bb8, label %bb12 764a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 774a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner bb8:; preds = %entry 780c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar %tmp9 = tail call i32 (...) @foo( ) nounwind ; <i32> [#uses=1] 794a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner ret i32 %tmp9 804a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 814a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner bb12:; preds = %entry 824a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner ret i32 32 83b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test5: 84dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: ucomisd LCPI5_0(%rip), %xmm0 85dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: ucomisd LCPI5_1(%rip), %xmm0 864a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner} 874a26318224b44ab93bbc29be17f84a87602581b5Chris Lattner 884a26318224b44ab93bbc29be17f84a87602581b5Chris Lattnerdeclare i32 @foo(...) 8940755467393f4569200cbc1cf1e9feeea4668611Chris Lattner 9040755467393f4569200cbc1cf1e9feeea4668611Chris Lattnerdefine i32 @test6() nounwind align 2 { 9140755467393f4569200cbc1cf1e9feeea4668611Chris Lattner %A = alloca {i64, i64}, align 8 924c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar %B = getelementptr inbounds {i64, i64}, {i64, i64}* %A, i64 0, i32 1 934c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar %C = load i64, i64* %B 9440755467393f4569200cbc1cf1e9feeea4668611Chris Lattner %D = icmp eq i64 %C, 0 9540755467393f4569200cbc1cf1e9feeea4668611Chris Lattner br i1 %D, label %T, label %F 9640755467393f4569200cbc1cf1e9feeea4668611Chris LattnerT: 9740755467393f4569200cbc1cf1e9feeea4668611Chris Lattner ret i32 1 9840755467393f4569200cbc1cf1e9feeea4668611Chris Lattner 9940755467393f4569200cbc1cf1e9feeea4668611Chris LattnerF: 10040755467393f4569200cbc1cf1e9feeea4668611Chris Lattner ret i32 0 101b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test6: 10240755467393f4569200cbc1cf1e9feeea4668611Chris Lattner; CHECK: cmpq $0, -8(%rsp) 10340755467393f4569200cbc1cf1e9feeea4668611Chris Lattner; CHECK: encoding: [0x48,0x83,0x7c,0x24,0xf8,0x00] 10440755467393f4569200cbc1cf1e9feeea4668611Chris Lattner} 10540755467393f4569200cbc1cf1e9feeea4668611Chris Lattner 10698819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; rdar://11866926 10770e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengdefine i32 @test7(i64 %res) nounwind { 10898819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Chengentry: 109b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test7: 11098819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK-NOT: movabsq 11198819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: shrq $32, %rdi 11298819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: sete 11398819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot = icmp ult i64 %res, 4294967296 11498819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot.ext = zext i1 %lnot to i32 11598819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng ret i32 %lnot.ext 11698819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng} 11798819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng 11870e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengdefine i32 @test8(i64 %res) nounwind { 11998819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Chengentry: 120b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test8: 12198819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK-NOT: movabsq 12298819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: shrq $32, %rdi 123f5c0539092996771824893309f311378e719e32eEvan Cheng; CHECK: cmpq $3, %rdi 12498819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot = icmp ult i64 %res, 12884901888 12598819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot.ext = zext i1 %lnot to i32 12698819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng ret i32 %lnot.ext 12798819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng} 12898819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng 12970e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengdefine i32 @test9(i64 %res) nounwind { 13098819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Chengentry: 131b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test9: 13298819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK-NOT: movabsq 13398819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: shrq $33, %rdi 13498819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: sete 13598819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot = icmp ult i64 %res, 8589934592 13698819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot.ext = zext i1 %lnot to i32 13798819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng ret i32 %lnot.ext 13898819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng} 13998819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng 14070e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengdefine i32 @test10(i64 %res) nounwind { 14198819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Chengentry: 142b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test10: 14398819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK-NOT: movabsq 14498819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng; CHECK: shrq $32, %rdi 145f5c0539092996771824893309f311378e719e32eEvan Cheng; CHECK: setne 14698819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot = icmp uge i64 %res, 4294967296 14798819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng %lnot.ext = zext i1 %lnot to i32 14898819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng ret i32 %lnot.ext 14998819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng} 15098819c9d1e3b929e9ebab0e8cd3edb31aad21bd8Evan Cheng 15170e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng; rdar://9758774 15270e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengdefine i32 @test11(i64 %l) nounwind { 15370e10d3fe4c5df189348f64fce56254a5a32b51cEvan Chengentry: 154b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test11: 15570e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng; CHECK-NOT: movabsq 15670e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng; CHECK-NOT: andq 15770e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng; CHECK: shrq $47, %rdi 15870e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng; CHECK: cmpq $1, %rdi 15970e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng %shr.mask = and i64 %l, -140737488355328 16070e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng %cmp = icmp eq i64 %shr.mask, 140737488355328 16170e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng %conv = zext i1 %cmp to i32 16270e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng ret i32 %conv 16370e10d3fe4c5df189348f64fce56254a5a32b51cEvan Cheng} 16440b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper 16540b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topperdefine i32 @test12() uwtable ssp { 166b4dc0233c9f70e8cf946822811f233bb613a02e9Stephen Lin; CHECK-LABEL: test12: 16740b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper; CHECK: testb 16840b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper %1 = call zeroext i1 @test12b() 16940b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper br i1 %1, label %2, label %3 17040b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper 17140b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper; <label>:2 ; preds = %0 17240b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper ret i32 1 17340b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper 17440b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper; <label>:3 ; preds = %0 17540b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper ret i32 2 17640b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper} 17740b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topper 17840b4a81ab007c11c2d4227b4f6a949720ba2adffCraig Topperdeclare zeroext i1 @test12b() 179dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 180dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesdefine i32 @test13(i32 %mask, i32 %base, i32 %intra) { 181dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %and = and i32 %mask, 8 182dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %tobool = icmp ne i32 %and, 0 183dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %cond = select i1 %tobool, i32 %intra, i32 %base 184dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ret i32 %cond 185dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 186dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK-LABEL: test13: 187dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: testb $8, %dil 188dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: cmovnel 189dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 190dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 191dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesdefine i32 @test14(i32 %mask, i32 %base, i32 %intra) #0 { 192dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %s = lshr i32 %mask, 7 193dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %tobool = icmp sgt i32 %s, -1 194dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines %cond = select i1 %tobool, i32 %intra, i32 %base 195dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ret i32 %cond 196dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 197dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK-LABEL: test14: 198dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK: shrl $7, %edi 199dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines; CHECK-NEXT: cmovnsl %edx, %esi 200dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 201c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines 202c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines; PR19964 203c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesdefine zeroext i1 @test15(i32 %bf.load, i32 %n) { 204c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines %bf.lshr = lshr i32 %bf.load, 16 205c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines %cmp2 = icmp eq i32 %bf.lshr, 0 206c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines %cmp5 = icmp uge i32 %bf.lshr, %n 207c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines %.cmp5 = or i1 %cmp2, %cmp5 208c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines ret i1 %.cmp5 209c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines 210c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines; CHECK-LABEL: test15: 211c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines; CHECK: shrl $16, %edi 212c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines; CHECK: cmpl %esi, %edi 213c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines} 214f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 215f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainardefine i8 @test16(i16 signext %L) { 216f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %lshr = lshr i16 %L, 15 217f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %trunc = trunc i16 %lshr to i8 218f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %not = xor i8 %trunc, 1 219f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar ret i8 %not 220f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 221f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK-LABEL: test16: 222f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: testw %di, %di 223f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: setns %al 224f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar} 225f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 226f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainardefine i8 @test17(i32 %L) { 227f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %lshr = lshr i32 %L, 31 228f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %trunc = trunc i32 %lshr to i8 229f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %not = xor i8 %trunc, 1 230f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar ret i8 %not 231f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 232f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK-LABEL: test17: 233f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: testl %edi, %edi 234f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: setns %al 235f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar} 236f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 237f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainardefine i8 @test18(i64 %L) { 238f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %lshr = lshr i64 %L, 63 239f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %trunc = trunc i64 %lshr to i8 240f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %not = xor i8 %trunc, 1 241f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar ret i8 %not 242f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 243f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK-LABEL: test18: 244f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: testq %rdi, %rdi 245f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: setns %al 246f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar} 247f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 248f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainardefine zeroext i1 @test19(i32 %L) { 249f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %lshr = lshr i32 %L, 31 250f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %trunc = trunc i32 %lshr to i1 251f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar %not = xor i1 %trunc, 1 252f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar ret i1 %not 253f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar 254f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK-LABEL: test19: 255f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: testl %edi, %edi 256f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar; CHECK: setns %al 257f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar} 258de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 259de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar@d = global i8 0, align 1 260de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 261de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; This test failed due to incorrect handling of "shift + icmp" sequence 262de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardefine void @test20(i32 %bf.load, i8 %x1, i8* %b_addr) { 263de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %bf.shl = shl i32 %bf.load, 8 264de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %bf.ashr = ashr exact i32 %bf.shl, 8 265de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %tobool4 = icmp ne i32 %bf.ashr, 0 266de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %conv = zext i1 %tobool4 to i32 267de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %conv6 = zext i8 %x1 to i32 268de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %add = add nuw nsw i32 %conv, %conv6 269de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %tobool7 = icmp ne i32 %add, 0 270de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %frombool = zext i1 %tobool7 to i8 271de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar store i8 %frombool, i8* %b_addr, align 1 272de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %tobool14 = icmp ne i32 %bf.shl, 0 273de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar %frombool15 = zext i1 %tobool14 to i8 274de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar store i8 %frombool15, i8* @d, align 1 275de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ret void 276de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 277de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK-LABEL: test20 278de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: andl 279de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: setne 280de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: addl 281de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: setne 282de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: testl 283de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; CHECK: setne 284de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}