Jonas Paulsson | bd65421 | 2017-03-21 05:49:40 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -verify-machineinstrs | FileCheck %s |
| 2 | ; |
| 3 | ; Test that foldMemoryOperandImpl() doesn't drop subreg / read-undef flags. |
| 4 | |
| 5 | |
| 6 | define void @fun_llvm_stress_reduced(i8*, i32*, i64*, i64, i8) { |
| 7 | ; CHECK: .text |
| 8 | BB: |
| 9 | %A4 = alloca <4 x i64> |
| 10 | %A1 = alloca <8 x i1> |
| 11 | %E6 = extractelement <4 x i1> undef, i32 3 |
| 12 | %L23 = load i8, i8* %0 |
| 13 | %B27 = fmul double 0x59A989483BA7E0C6, undef |
| 14 | %L30 = load i16, i16* undef |
| 15 | store i16 -11933, i16* undef |
| 16 | %L46 = load i16, i16* undef |
| 17 | %L61 = load i16, i16* undef |
| 18 | %Sl74 = select i1 undef, i1 undef, i1 true |
| 19 | br label %CF846 |
| 20 | |
| 21 | CF846: ; preds = %CF877, %BB |
| 22 | %I86 = insertelement <4 x i1> undef, i1 undef, i32 0 |
| 23 | %Cmp89 = icmp ne i64 undef, %3 |
| 24 | %L90 = load i16, i16* undef |
| 25 | %Shuff92 = shufflevector <4 x i16> zeroinitializer, <4 x i16> zeroinitializer, <4 x i32> <i32 0, i32 2, i32 undef, i32 6> |
| 26 | br label %CF877 |
| 27 | |
| 28 | CF877: ; preds = %CF846 |
| 29 | store i16 %L61, i16* undef |
| 30 | %Cmp110 = icmp eq i16 %L61, undef |
| 31 | br i1 %Cmp110, label %CF846, label %CF862 |
| 32 | |
| 33 | CF862: ; preds = %CF877 |
| 34 | %I114 = insertelement <4 x i64> zeroinitializer, i64 0, i32 0 |
| 35 | %B115 = shl <4 x i64> zeroinitializer, %I114 |
| 36 | %Sl124 = select i1 true, <8 x i1>* %A1, <8 x i1>* %A1 |
| 37 | %B130 = frem double %B27, 0x59A989483BA7E0C6 |
| 38 | %E143 = extractelement <4 x i64> %B115, i32 1 |
| 39 | %Sl148 = select i1 %Cmp89, <1 x i32> undef, <1 x i32> zeroinitializer |
| 40 | br label %CF855 |
| 41 | |
| 42 | CF855: ; preds = %CF855, %CF862 |
| 43 | %Sl171 = select i1 %Sl74, i1 %E6, i1 undef |
| 44 | br i1 %Sl171, label %CF855, label %CF874 |
| 45 | |
| 46 | CF874: ; preds = %CF855 |
| 47 | %PC186 = bitcast i32* %1 to i16* |
| 48 | %L196 = load i16, i16* undef |
| 49 | %B207 = or i8 %4, %L23 |
| 50 | %L211 = load <8 x i1>, <8 x i1>* %Sl124 |
| 51 | %B215 = fdiv double 0x8421A9C0D21F6D3E, %B130 |
| 52 | %L218 = load i16, i16* %PC186 |
| 53 | %Sl223 = select i1 %Sl171, <4 x i1> %I86, <4 x i1> undef |
| 54 | br label %CF826 |
| 55 | |
| 56 | CF826: ; preds = %CF866, %CF910, %CF874 |
| 57 | %B245 = ashr i16 -11933, %L46 |
| 58 | br label %CF910 |
| 59 | |
| 60 | CF910: ; preds = %CF826 |
| 61 | %L257 = load i8, i8* %0 |
| 62 | %BC262 = bitcast i64 %E143 to double |
| 63 | store i16 %L196, i16* %PC186 |
| 64 | %E266 = extractelement <4 x i16> %Shuff92, i32 0 |
| 65 | %Sl271 = select i1 %Cmp89, i1 %Cmp89, i1 %Cmp110 |
| 66 | br i1 %Sl271, label %CF826, label %CF866 |
| 67 | |
| 68 | CF866: ; preds = %CF910 |
| 69 | store i64 %E143, i64* %2 |
| 70 | %I276 = insertelement <4 x double> undef, double %BC262, i32 3 |
| 71 | %L281 = load <8 x i1>, <8 x i1>* %Sl124 |
| 72 | %E282 = extractelement <4 x i1> zeroinitializer, i32 2 |
| 73 | br i1 %E282, label %CF826, label %CF848 |
| 74 | |
| 75 | CF848: ; preds = %CF866 |
| 76 | %Cmp288 = fcmp olt <4 x double> undef, %I276 |
| 77 | %FC294 = fptosi double undef to i16 |
| 78 | %Cmp296 = icmp ule i16 %FC294, %B245 |
| 79 | store i16 %L218, i16* undef |
| 80 | store i8 %L23, i8* %0 |
| 81 | %E320 = extractelement <4 x i1> %Sl223, i32 1 |
| 82 | %PC337 = bitcast <8 x i1>* %Sl124 to i1* |
| 83 | %Cmp345 = icmp uge <1 x i32> undef, %Sl148 |
| 84 | store i16 %L196, i16* %PC186 |
| 85 | br label %CF893 |
| 86 | |
| 87 | CF893: ; preds = %CF893, %CF848 |
| 88 | %Cmp361 = fcmp uge float undef, undef |
| 89 | br i1 %Cmp361, label %CF893, label %CF906 |
| 90 | |
| 91 | CF906: ; preds = %CF893 |
| 92 | store i16 -11933, i16* undef |
| 93 | %Shuff379 = shufflevector <1 x i1> undef, <1 x i1> %Cmp345, <1 x i32> <i32 1> |
| 94 | br label %CF850 |
| 95 | |
| 96 | CF850: ; preds = %CF850, %CF906 |
| 97 | br i1 undef, label %CF850, label %CF925 |
| 98 | |
| 99 | CF925: ; preds = %CF850 |
| 100 | store i16 %E266, i16* %PC186 |
| 101 | %Cmp413 = icmp ugt i8 %L257, undef |
| 102 | store i16 %L30, i16* %PC186 |
| 103 | %Sl420 = select i1 %Sl171, <8 x i1> undef, <8 x i1> %L281 |
| 104 | store i16 %L90, i16* undef |
| 105 | %FC469 = uitofp i1 %Cmp296 to float |
| 106 | store i1 %Cmp413, i1* %PC337 |
| 107 | br label %CF833 |
| 108 | |
| 109 | CF833: ; preds = %CF833, %CF925 |
| 110 | store i8 %B207, i8* %0 |
| 111 | %E509 = extractelement <8 x i1> %L211, i32 7 |
| 112 | br i1 %E509, label %CF833, label %CF882 |
| 113 | |
| 114 | CF882: ; preds = %CF833 |
| 115 | store i1 %Sl271, i1* %PC337 |
| 116 | br label %CF852 |
| 117 | |
| 118 | CF852: ; preds = %CF896, %CF882 |
| 119 | store i1 %Sl74, i1* %PC337 |
| 120 | br label %CF896 |
| 121 | |
| 122 | CF896: ; preds = %CF852 |
| 123 | %E576 = extractelement <4 x i1> %Cmp288, i32 3 |
| 124 | br i1 %E576, label %CF852, label %CF890 |
| 125 | |
| 126 | CF890: ; preds = %CF896 |
| 127 | %Sl581 = select i1 undef, float undef, float %FC469 |
| 128 | unreachable |
| 129 | } |