1; NOTE: Assertions have been autogenerated by update_test_checks.py 2; RUN: opt -instsimplify -S < %s | FileCheck %s 3 4define i64 @test0() { 5; CHECK-LABEL: @test0( 6; CHECK: ret i64 undef 7; 8 %r = mul i64 undef, undef 9 ret i64 %r 10} 11 12define i64 @test1() { 13; CHECK-LABEL: @test1( 14; CHECK: ret i64 undef 15; 16 %r = mul i64 3, undef 17 ret i64 %r 18} 19 20define i64 @test2() { 21; CHECK-LABEL: @test2( 22; CHECK: ret i64 undef 23; 24 %r = mul i64 undef, 3 25 ret i64 %r 26} 27 28define i64 @test3() { 29; CHECK-LABEL: @test3( 30; CHECK: ret i64 0 31; 32 %r = mul i64 undef, 6 33 ret i64 %r 34} 35 36define i64 @test4() { 37; CHECK-LABEL: @test4( 38; CHECK: ret i64 0 39; 40 %r = mul i64 6, undef 41 ret i64 %r 42} 43 44define i64 @test5() { 45; CHECK-LABEL: @test5( 46; CHECK: ret i64 undef 47; 48 %r = and i64 undef, undef 49 ret i64 %r 50} 51 52define i64 @test6() { 53; CHECK-LABEL: @test6( 54; CHECK: ret i64 undef 55; 56 %r = or i64 undef, undef 57 ret i64 %r 58} 59 60define i64 @test7() { 61; CHECK-LABEL: @test7( 62; CHECK: ret i64 undef 63; 64 %r = udiv i64 undef, 1 65 ret i64 %r 66} 67 68define i64 @test8() { 69; CHECK-LABEL: @test8( 70; CHECK: ret i64 undef 71; 72 %r = sdiv i64 undef, 1 73 ret i64 %r 74} 75 76define i64 @test9() { 77; CHECK-LABEL: @test9( 78; CHECK: ret i64 0 79; 80 %r = urem i64 undef, 1 81 ret i64 %r 82} 83 84define i64 @test10() { 85; CHECK-LABEL: @test10( 86; CHECK: ret i64 0 87; 88 %r = srem i64 undef, 1 89 ret i64 %r 90} 91 92define i64 @test11() { 93; CHECK-LABEL: @test11( 94; CHECK: ret i64 undef 95; 96 %r = shl i64 undef, undef 97 ret i64 %r 98} 99 100define i64 @test11b(i64 %a) { 101; CHECK-LABEL: @test11b( 102; CHECK: ret i64 undef 103; 104 %r = shl i64 %a, undef 105 ret i64 %r 106} 107 108define i64 @test12() { 109; CHECK-LABEL: @test12( 110; CHECK: ret i64 undef 111; 112 %r = ashr i64 undef, undef 113 ret i64 %r 114} 115 116define i64 @test12b(i64 %a) { 117; CHECK-LABEL: @test12b( 118; CHECK: ret i64 undef 119; 120 %r = ashr i64 %a, undef 121 ret i64 %r 122} 123 124define i64 @test13() { 125; CHECK-LABEL: @test13( 126; CHECK: ret i64 undef 127; 128 %r = lshr i64 undef, undef 129 ret i64 %r 130} 131 132define i64 @test13b(i64 %a) { 133; CHECK-LABEL: @test13b( 134; CHECK: ret i64 undef 135; 136 %r = lshr i64 %a, undef 137 ret i64 %r 138} 139 140define i1 @test14() { 141; CHECK-LABEL: @test14( 142; CHECK: ret i1 undef 143; 144 %r = icmp slt i64 undef, undef 145 ret i1 %r 146} 147 148define i1 @test15() { 149; CHECK-LABEL: @test15( 150; CHECK: ret i1 undef 151; 152 %r = icmp ult i64 undef, undef 153 ret i1 %r 154} 155 156define i64 @test16(i64 %a) { 157; CHECK-LABEL: @test16( 158; CHECK: ret i64 undef 159; 160 %r = select i1 undef, i64 %a, i64 undef 161 ret i64 %r 162} 163 164define i64 @test17(i64 %a) { 165; CHECK-LABEL: @test17( 166; CHECK: ret i64 undef 167; 168 %r = select i1 undef, i64 undef, i64 %a 169 ret i64 %r 170} 171 172define i64 @test18(i64 %a) { 173; CHECK-LABEL: @test18( 174; CHECK: [[R:%.*]] = call i64 undef(i64 %a) 175; CHECK-NEXT: ret i64 undef 176; 177 %r = call i64 (i64) undef(i64 %a) 178 ret i64 %r 179} 180 181define <4 x i8> @test19(<4 x i8> %a) { 182; CHECK-LABEL: @test19( 183; CHECK: ret <4 x i8> undef 184; 185 %b = shl <4 x i8> %a, <i8 8, i8 9, i8 undef, i8 -1> 186 ret <4 x i8> %b 187} 188 189define i32 @test20(i32 %a) { 190; CHECK-LABEL: @test20( 191; CHECK: ret i32 undef 192; 193 %b = udiv i32 %a, 0 194 ret i32 %b 195} 196 197define i32 @test21(i32 %a) { 198; CHECK-LABEL: @test21( 199; CHECK: ret i32 undef 200; 201 %b = sdiv i32 %a, 0 202 ret i32 %b 203} 204 205define i32 @test22(i32 %a) { 206; CHECK-LABEL: @test22( 207; CHECK: ret i32 undef 208; 209 %b = ashr exact i32 undef, %a 210 ret i32 %b 211} 212 213define i32 @test23(i32 %a) { 214; CHECK-LABEL: @test23( 215; CHECK: ret i32 undef 216; 217 %b = lshr exact i32 undef, %a 218 ret i32 %b 219} 220 221define i32 @test24() { 222; CHECK-LABEL: @test24( 223; CHECK: ret i32 undef 224; 225 %b = udiv i32 undef, 0 226 ret i32 %b 227} 228 229define i32 @test25() { 230; CHECK-LABEL: @test25( 231; CHECK: ret i32 undef 232; 233 %b = lshr i32 0, undef 234 ret i32 %b 235} 236 237define i32 @test26() { 238; CHECK-LABEL: @test26( 239; CHECK: ret i32 undef 240; 241 %b = ashr i32 0, undef 242 ret i32 %b 243} 244 245define i32 @test27() { 246; CHECK-LABEL: @test27( 247; CHECK: ret i32 undef 248; 249 %b = shl i32 0, undef 250 ret i32 %b 251} 252 253define i32 @test28(i32 %a) { 254; CHECK-LABEL: @test28( 255; CHECK: ret i32 undef 256; 257 %b = shl nsw i32 undef, %a 258 ret i32 %b 259} 260 261define i32 @test29(i32 %a) { 262; CHECK-LABEL: @test29( 263; CHECK: ret i32 undef 264; 265 %b = shl nuw i32 undef, %a 266 ret i32 %b 267} 268 269define i32 @test30(i32 %a) { 270; CHECK-LABEL: @test30( 271; CHECK: ret i32 undef 272; 273 %b = shl nsw nuw i32 undef, %a 274 ret i32 %b 275} 276 277define i32 @test31(i32 %a) { 278; CHECK-LABEL: @test31( 279; CHECK: ret i32 0 280; 281 %b = shl i32 undef, %a 282 ret i32 %b 283} 284 285define i32 @test32(i32 %a) { 286; CHECK-LABEL: @test32( 287; CHECK: ret i32 undef 288; 289 %b = shl i32 undef, 0 290 ret i32 %b 291} 292 293define i32 @test33(i32 %a) { 294; CHECK-LABEL: @test33( 295; CHECK: ret i32 undef 296; 297 %b = ashr i32 undef, 0 298 ret i32 %b 299} 300 301define i32 @test34(i32 %a) { 302; CHECK-LABEL: @test34( 303; CHECK: ret i32 undef 304; 305 %b = lshr i32 undef, 0 306 ret i32 %b 307} 308 309define i32 @test35(<4 x i32> %V) { 310; CHECK-LABEL: @test35( 311; CHECK: ret i32 undef 312; 313 %b = extractelement <4 x i32> %V, i32 4 314 ret i32 %b 315} 316 317define i32 @test36(i32 %V) { 318; CHECK-LABEL: @test36( 319; CHECK: ret i32 undef 320; 321 %b = extractelement <4 x i32> undef, i32 %V 322 ret i32 %b 323} 324 325define i32 @test37() { 326; CHECK-LABEL: @test37( 327; CHECK: ret i32 undef 328; 329 %b = udiv i32 undef, undef 330 ret i32 %b 331} 332 333define i32 @test38(i32 %a) { 334; CHECK-LABEL: @test38( 335; CHECK: ret i32 undef 336; 337 %b = udiv i32 %a, undef 338 ret i32 %b 339} 340 341define i32 @test39() { 342; CHECK-LABEL: @test39( 343; CHECK: ret i32 undef 344; 345 %b = udiv i32 0, undef 346 ret i32 %b 347} 348