brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.1 KiB · 26c170b Raw
261 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4; shift left5 6define i32 @and_signbit_shl(i32 %x) {7; CHECK-LABEL: @and_signbit_shl(8; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 89; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], -1677721610; CHECK-NEXT:    ret i32 [[R]]11;12  %t0 = and i32 %x, 4294901760 ; 0xFFFF000013  %r = shl i32 %t0, 814  ret i32 %r15}16define i32 @and_nosignbit_shl(i32 %x) {17; CHECK-LABEL: @and_nosignbit_shl(18; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 819; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], -1677721620; CHECK-NEXT:    ret i32 [[R]]21;22  %t0 = and i32 %x, 2147418112 ; 0x7FFF000023  %r = shl i32 %t0, 824  ret i32 %r25}26 27define i32 @or_signbit_shl(i32 %x) {28; CHECK-LABEL: @or_signbit_shl(29; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 830; CHECK-NEXT:    [[R:%.*]] = or i32 [[T0]], -1677721631; CHECK-NEXT:    ret i32 [[R]]32;33  %t0 = or i32 %x, 4294901760 ; 0xFFFF000034  %r = shl i32 %t0, 835  ret i32 %r36}37define i32 @or_nosignbit_shl(i32 %x) {38; CHECK-LABEL: @or_nosignbit_shl(39; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 840; CHECK-NEXT:    [[R:%.*]] = or i32 [[T0]], -1677721641; CHECK-NEXT:    ret i32 [[R]]42;43  %t0 = or i32 %x, 2147418112 ; 0x7FFF000044  %r = shl i32 %t0, 845  ret i32 %r46}47 48define i32 @xor_signbit_shl(i32 %x) {49; CHECK-LABEL: @xor_signbit_shl(50; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 851; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], -1677721652; CHECK-NEXT:    ret i32 [[R]]53;54  %t0 = xor i32 %x, 4294901760 ; 0xFFFF000055  %r = shl i32 %t0, 856  ret i32 %r57}58define i32 @xor_nosignbit_shl(i32 %x) {59; CHECK-LABEL: @xor_nosignbit_shl(60; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 861; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], -1677721662; CHECK-NEXT:    ret i32 [[R]]63;64  %t0 = xor i32 %x, 2147418112 ; 0x7FFF000065  %r = shl i32 %t0, 866  ret i32 %r67}68 69define i32 @add_signbit_shl(i32 %x) {70; CHECK-LABEL: @add_signbit_shl(71; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 872; CHECK-NEXT:    [[R:%.*]] = add i32 [[T0]], -1677721673; CHECK-NEXT:    ret i32 [[R]]74;75  %t0 = add i32 %x, 4294901760 ; 0xFFFF000076  %r = shl i32 %t0, 877  ret i32 %r78}79define i32 @add_nosignbit_shl(i32 %x) {80; CHECK-LABEL: @add_nosignbit_shl(81; CHECK-NEXT:    [[T0:%.*]] = shl i32 [[X:%.*]], 882; CHECK-NEXT:    [[R:%.*]] = add i32 [[T0]], -1677721683; CHECK-NEXT:    ret i32 [[R]]84;85  %t0 = add i32 %x, 2147418112 ; 0x7FFF000086  %r = shl i32 %t0, 887  ret i32 %r88}89 90; logical shift right91 92define i32 @and_signbit_lshr(i32 %x) {93; CHECK-LABEL: @and_signbit_lshr(94; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 895; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], 1677696096; CHECK-NEXT:    ret i32 [[R]]97;98  %t0 = and i32 %x, 4294901760 ; 0xFFFF000099  %r = lshr i32 %t0, 8100  ret i32 %r101}102define i32 @and_nosignbit_lshr(i32 %x) {103; CHECK-LABEL: @and_nosignbit_lshr(104; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8105; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], 8388352106; CHECK-NEXT:    ret i32 [[R]]107;108  %t0 = and i32 %x, 2147418112 ; 0x7FFF0000109  %r = lshr i32 %t0, 8110  ret i32 %r111}112 113define i32 @or_signbit_lshr(i32 %x) {114; CHECK-LABEL: @or_signbit_lshr(115; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8116; CHECK-NEXT:    [[R:%.*]] = or i32 [[T0]], 16776960117; CHECK-NEXT:    ret i32 [[R]]118;119  %t0 = or i32 %x, 4294901760 ; 0xFFFF0000120  %r = lshr i32 %t0, 8121  ret i32 %r122}123define i32 @or_nosignbit_lshr(i32 %x) {124; CHECK-LABEL: @or_nosignbit_lshr(125; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8126; CHECK-NEXT:    [[R:%.*]] = or i32 [[T0]], 8388352127; CHECK-NEXT:    ret i32 [[R]]128;129  %t0 = or i32 %x, 2147418112 ; 0x7FFF0000130  %r = lshr i32 %t0, 8131  ret i32 %r132}133 134define i32 @xor_signbit_lshr(i32 %x) {135; CHECK-LABEL: @xor_signbit_lshr(136; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8137; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], 16776960138; CHECK-NEXT:    ret i32 [[R]]139;140  %t0 = xor i32 %x, 4294901760 ; 0xFFFF0000141  %r = lshr i32 %t0, 8142  ret i32 %r143}144define i32 @xor_nosignbit_lshr(i32 %x) {145; CHECK-LABEL: @xor_nosignbit_lshr(146; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8147; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], 8388352148; CHECK-NEXT:    ret i32 [[R]]149;150  %t0 = xor i32 %x, 2147418112 ; 0x7FFF0000151  %r = lshr i32 %t0, 8152  ret i32 %r153}154 155define i32 @add_signbit_lshr(i32 %x) {156; CHECK-LABEL: @add_signbit_lshr(157; CHECK-NEXT:    [[T0:%.*]] = add i32 [[X:%.*]], -65536158; CHECK-NEXT:    [[R:%.*]] = lshr i32 [[T0]], 8159; CHECK-NEXT:    ret i32 [[R]]160;161  %t0 = add i32 %x, 4294901760 ; 0xFFFF0000162  %r = lshr i32 %t0, 8163  ret i32 %r164}165define i32 @add_nosignbit_lshr(i32 %x) {166; CHECK-LABEL: @add_nosignbit_lshr(167; CHECK-NEXT:    [[T0:%.*]] = add i32 [[X:%.*]], 2147418112168; CHECK-NEXT:    [[R:%.*]] = lshr i32 [[T0]], 8169; CHECK-NEXT:    ret i32 [[R]]170;171  %t0 = add i32 %x, 2147418112 ; 0x7FFF0000172  %r = lshr i32 %t0, 8173  ret i32 %r174}175 176; arithmetic shift right177 178define i32 @and_signbit_ashr(i32 %x) {179; CHECK-LABEL: @and_signbit_ashr(180; CHECK-NEXT:    [[T0:%.*]] = ashr i32 [[X:%.*]], 8181; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], -256182; CHECK-NEXT:    ret i32 [[R]]183;184  %t0 = and i32 %x, 4294901760 ; 0xFFFF0000185  %r = ashr i32 %t0, 8186  ret i32 %r187}188define i32 @and_nosignbit_ashr(i32 %x) {189; CHECK-LABEL: @and_nosignbit_ashr(190; CHECK-NEXT:    [[T0:%.*]] = lshr i32 [[X:%.*]], 8191; CHECK-NEXT:    [[R:%.*]] = and i32 [[T0]], 8388352192; CHECK-NEXT:    ret i32 [[R]]193;194  %t0 = and i32 %x, 2147418112 ; 0x7FFF0000195  %r = ashr i32 %t0, 8196  ret i32 %r197}198 199define i32 @or_signbit_ashr(i32 %x) {200; CHECK-LABEL: @or_signbit_ashr(201; CHECK-NEXT:    [[TMP1:%.*]] = lshr i32 [[X:%.*]], 8202; CHECK-NEXT:    [[R:%.*]] = or i32 [[TMP1]], -256203; CHECK-NEXT:    ret i32 [[R]]204;205  %t0 = or i32 %x, 4294901760 ; 0xFFFF0000206  %r = ashr i32 %t0, 8207  ret i32 %r208}209define i32 @or_nosignbit_ashr(i32 %x) {210; CHECK-LABEL: @or_nosignbit_ashr(211; CHECK-NEXT:    [[T0:%.*]] = ashr i32 [[X:%.*]], 8212; CHECK-NEXT:    [[R:%.*]] = or i32 [[T0]], 8388352213; CHECK-NEXT:    ret i32 [[R]]214;215  %t0 = or i32 %x, 2147418112 ; 0x7FFF0000216  %r = ashr i32 %t0, 8217  ret i32 %r218}219 220define i32 @xor_signbit_ashr(i32 %x) {221; CHECK-LABEL: @xor_signbit_ashr(222; CHECK-NEXT:    [[T0:%.*]] = ashr i32 [[X:%.*]], 8223; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], -256224; CHECK-NEXT:    ret i32 [[R]]225;226  %t0 = xor i32 %x, 4294901760 ; 0xFFFF0000227  %r = ashr i32 %t0, 8228  ret i32 %r229}230define i32 @xor_nosignbit_ashr(i32 %x) {231; CHECK-LABEL: @xor_nosignbit_ashr(232; CHECK-NEXT:    [[T0:%.*]] = ashr i32 [[X:%.*]], 8233; CHECK-NEXT:    [[R:%.*]] = xor i32 [[T0]], 8388352234; CHECK-NEXT:    ret i32 [[R]]235;236  %t0 = xor i32 %x, 2147418112 ; 0x7FFF0000237  %r = ashr i32 %t0, 8238  ret i32 %r239}240 241define i32 @add_signbit_ashr(i32 %x) {242; CHECK-LABEL: @add_signbit_ashr(243; CHECK-NEXT:    [[T0:%.*]] = add i32 [[X:%.*]], -65536244; CHECK-NEXT:    [[R:%.*]] = ashr i32 [[T0]], 8245; CHECK-NEXT:    ret i32 [[R]]246;247  %t0 = add i32 %x, 4294901760 ; 0xFFFF0000248  %r = ashr i32 %t0, 8249  ret i32 %r250}251define i32 @add_nosignbit_ashr(i32 %x) {252; CHECK-LABEL: @add_nosignbit_ashr(253; CHECK-NEXT:    [[T0:%.*]] = add i32 [[X:%.*]], 2147418112254; CHECK-NEXT:    [[R:%.*]] = ashr i32 [[T0]], 8255; CHECK-NEXT:    ret i32 [[R]]256;257  %t0 = add i32 %x, 2147418112 ; 0x7FFF0000258  %r = ashr i32 %t0, 8259  ret i32 %r260}261