brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · 879c56f Raw
384 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s3 4; shift left5 6define i32 @and_signbit_select_shl(i32 %x, i1 %cond, ptr %dst) {7; CHECK-LABEL: and_signbit_select_shl:8; CHECK:       // %bb.0:9; CHECK-NEXT:    and w8, w0, #0xff000010; CHECK-NEXT:    tst w1, #0x111; CHECK-NEXT:    csel w8, w8, w0, ne12; CHECK-NEXT:    lsl w0, w8, #813; CHECK-NEXT:    str w0, [x2]14; CHECK-NEXT:    ret15  %t0 = and i32 %x, 4294901760 ; 0xFFFF000016  %t1 = select i1 %cond, i32 %t0, i32 %x17  %r = shl i32 %t1, 818  store i32 %r, ptr %dst19  ret i32 %r20}21define i32 @and_nosignbit_select_shl(i32 %x, i1 %cond, ptr %dst) {22; CHECK-LABEL: and_nosignbit_select_shl:23; CHECK:       // %bb.0:24; CHECK-NEXT:    and w8, w0, #0xff000025; CHECK-NEXT:    tst w1, #0x126; CHECK-NEXT:    csel w8, w8, w0, ne27; CHECK-NEXT:    lsl w0, w8, #828; CHECK-NEXT:    str w0, [x2]29; CHECK-NEXT:    ret30  %t0 = and i32 %x, 2147418112 ; 0x7FFF000031  %t1 = select i1 %cond, i32 %t0, i32 %x32  %r = shl i32 %t1, 833  store i32 %r, ptr %dst34  ret i32 %r35}36 37define i32 @or_signbit_select_shl(i32 %x, i1 %cond, ptr %dst) {38; CHECK-LABEL: or_signbit_select_shl:39; CHECK:       // %bb.0:40; CHECK-NEXT:    orr w8, w0, #0xff000041; CHECK-NEXT:    tst w1, #0x142; CHECK-NEXT:    csel w8, w8, w0, ne43; CHECK-NEXT:    lsl w0, w8, #844; CHECK-NEXT:    str w0, [x2]45; CHECK-NEXT:    ret46  %t0 = or i32 %x, 4294901760 ; 0xFFFF000047  %t1 = select i1 %cond, i32 %t0, i32 %x48  %r = shl i32 %t1, 849  store i32 %r, ptr %dst50  ret i32 %r51}52define i32 @or_nosignbit_select_shl(i32 %x, i1 %cond, ptr %dst) {53; CHECK-LABEL: or_nosignbit_select_shl:54; CHECK:       // %bb.0:55; CHECK-NEXT:    orr w8, w0, #0xff000056; CHECK-NEXT:    tst w1, #0x157; CHECK-NEXT:    csel w8, w8, w0, ne58; CHECK-NEXT:    lsl w0, w8, #859; CHECK-NEXT:    str w0, [x2]60; CHECK-NEXT:    ret61  %t0 = or i32 %x, 2147418112 ; 0x7FFF000062  %t1 = select i1 %cond, i32 %t0, i32 %x63  %r = shl i32 %t1, 864  store i32 %r, ptr %dst65  ret i32 %r66}67 68define i32 @xor_signbit_select_shl(i32 %x, i1 %cond, ptr %dst) {69; CHECK-LABEL: xor_signbit_select_shl:70; CHECK:       // %bb.0:71; CHECK-NEXT:    eor w8, w0, #0xff000072; CHECK-NEXT:    tst w1, #0x173; CHECK-NEXT:    csel w8, w8, w0, ne74; CHECK-NEXT:    lsl w0, w8, #875; CHECK-NEXT:    str w0, [x2]76; CHECK-NEXT:    ret77  %t0 = xor i32 %x, 4294901760 ; 0xFFFF000078  %t1 = select i1 %cond, i32 %t0, i32 %x79  %r = shl i32 %t1, 880  store i32 %r, ptr %dst81  ret i32 %r82}83define i32 @xor_nosignbit_select_shl(i32 %x, i1 %cond, ptr %dst) {84; CHECK-LABEL: xor_nosignbit_select_shl:85; CHECK:       // %bb.0:86; CHECK-NEXT:    eor w8, w0, #0xff000087; CHECK-NEXT:    tst w1, #0x188; CHECK-NEXT:    csel w8, w8, w0, ne89; CHECK-NEXT:    lsl w0, w8, #890; CHECK-NEXT:    str w0, [x2]91; CHECK-NEXT:    ret92  %t0 = xor i32 %x, 2147418112 ; 0x7FFF000093  %t1 = select i1 %cond, i32 %t0, i32 %x94  %r = shl i32 %t1, 895  store i32 %r, ptr %dst96  ret i32 %r97}98 99define i32 @add_signbit_select_shl(i32 %x, i1 %cond, ptr %dst) {100; CHECK-LABEL: add_signbit_select_shl:101; CHECK:       // %bb.0:102; CHECK-NEXT:    sub w8, w0, #16, lsl #12 // =65536103; CHECK-NEXT:    tst w1, #0x1104; CHECK-NEXT:    csel w8, w8, w0, ne105; CHECK-NEXT:    lsl w0, w8, #8106; CHECK-NEXT:    str w0, [x2]107; CHECK-NEXT:    ret108  %t0 = add i32 %x, 4294901760 ; 0xFFFF0000109  %t1 = select i1 %cond, i32 %t0, i32 %x110  %r = shl i32 %t1, 8111  store i32 %r, ptr %dst112  ret i32 %r113}114define i32 @add_nosignbit_select_shl(i32 %x, i1 %cond, ptr %dst) {115; CHECK-LABEL: add_nosignbit_select_shl:116; CHECK:       // %bb.0:117; CHECK-NEXT:    mov w8, #2147418112118; CHECK-NEXT:    tst w1, #0x1119; CHECK-NEXT:    add w8, w0, w8120; CHECK-NEXT:    csel w8, w8, w0, ne121; CHECK-NEXT:    lsl w0, w8, #8122; CHECK-NEXT:    str w0, [x2]123; CHECK-NEXT:    ret124  %t0 = add i32 %x, 2147418112 ; 0x7FFF0000125  %t1 = select i1 %cond, i32 %t0, i32 %x126  %r = shl i32 %t1, 8127  store i32 %r, ptr %dst128  ret i32 %r129}130 131; logical shift right132 133define i32 @and_signbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {134; CHECK-LABEL: and_signbit_select_lshr:135; CHECK:       // %bb.0:136; CHECK-NEXT:    and w8, w0, #0xffff0000137; CHECK-NEXT:    tst w1, #0x1138; CHECK-NEXT:    csel w8, w8, w0, ne139; CHECK-NEXT:    lsr w0, w8, #8140; CHECK-NEXT:    str w0, [x2]141; CHECK-NEXT:    ret142  %t0 = and i32 %x, 4294901760 ; 0xFFFF0000143  %t1 = select i1 %cond, i32 %t0, i32 %x144  %r = lshr i32 %t1, 8145  store i32 %r, ptr %dst146  ret i32 %r147}148define i32 @and_nosignbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {149; CHECK-LABEL: and_nosignbit_select_lshr:150; CHECK:       // %bb.0:151; CHECK-NEXT:    and w8, w0, #0x7fff0000152; CHECK-NEXT:    tst w1, #0x1153; CHECK-NEXT:    csel w8, w8, w0, ne154; CHECK-NEXT:    lsr w0, w8, #8155; CHECK-NEXT:    str w0, [x2]156; CHECK-NEXT:    ret157  %t0 = and i32 %x, 2147418112 ; 0x7FFF0000158  %t1 = select i1 %cond, i32 %t0, i32 %x159  %r = lshr i32 %t1, 8160  store i32 %r, ptr %dst161  ret i32 %r162}163 164define i32 @or_signbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {165; CHECK-LABEL: or_signbit_select_lshr:166; CHECK:       // %bb.0:167; CHECK-NEXT:    orr w8, w0, #0xffff0000168; CHECK-NEXT:    tst w1, #0x1169; CHECK-NEXT:    csel w8, w8, w0, ne170; CHECK-NEXT:    lsr w0, w8, #8171; CHECK-NEXT:    str w0, [x2]172; CHECK-NEXT:    ret173  %t0 = or i32 %x, 4294901760 ; 0xFFFF0000174  %t1 = select i1 %cond, i32 %t0, i32 %x175  %r = lshr i32 %t1, 8176  store i32 %r, ptr %dst177  ret i32 %r178}179define i32 @or_nosignbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {180; CHECK-LABEL: or_nosignbit_select_lshr:181; CHECK:       // %bb.0:182; CHECK-NEXT:    orr w8, w0, #0x7fff0000183; CHECK-NEXT:    tst w1, #0x1184; CHECK-NEXT:    csel w8, w8, w0, ne185; CHECK-NEXT:    lsr w0, w8, #8186; CHECK-NEXT:    str w0, [x2]187; CHECK-NEXT:    ret188  %t0 = or i32 %x, 2147418112 ; 0x7FFF0000189  %t1 = select i1 %cond, i32 %t0, i32 %x190  %r = lshr i32 %t1, 8191  store i32 %r, ptr %dst192  ret i32 %r193}194 195define i32 @xor_signbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {196; CHECK-LABEL: xor_signbit_select_lshr:197; CHECK:       // %bb.0:198; CHECK-NEXT:    eor w8, w0, #0xffff0000199; CHECK-NEXT:    tst w1, #0x1200; CHECK-NEXT:    csel w8, w8, w0, ne201; CHECK-NEXT:    lsr w0, w8, #8202; CHECK-NEXT:    str w0, [x2]203; CHECK-NEXT:    ret204  %t0 = xor i32 %x, 4294901760 ; 0xFFFF0000205  %t1 = select i1 %cond, i32 %t0, i32 %x206  %r = lshr i32 %t1, 8207  store i32 %r, ptr %dst208  ret i32 %r209}210define i32 @xor_nosignbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {211; CHECK-LABEL: xor_nosignbit_select_lshr:212; CHECK:       // %bb.0:213; CHECK-NEXT:    eor w8, w0, #0x7fff0000214; CHECK-NEXT:    tst w1, #0x1215; CHECK-NEXT:    csel w8, w8, w0, ne216; CHECK-NEXT:    lsr w0, w8, #8217; CHECK-NEXT:    str w0, [x2]218; CHECK-NEXT:    ret219  %t0 = xor i32 %x, 2147418112 ; 0x7FFF0000220  %t1 = select i1 %cond, i32 %t0, i32 %x221  %r = lshr i32 %t1, 8222  store i32 %r, ptr %dst223  ret i32 %r224}225 226define i32 @add_signbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {227; CHECK-LABEL: add_signbit_select_lshr:228; CHECK:       // %bb.0:229; CHECK-NEXT:    sub w8, w0, #16, lsl #12 // =65536230; CHECK-NEXT:    tst w1, #0x1231; CHECK-NEXT:    csel w8, w8, w0, ne232; CHECK-NEXT:    lsr w0, w8, #8233; CHECK-NEXT:    str w0, [x2]234; CHECK-NEXT:    ret235  %t0 = add i32 %x, 4294901760 ; 0xFFFF0000236  %t1 = select i1 %cond, i32 %t0, i32 %x237  %r = lshr i32 %t1, 8238  store i32 %r, ptr %dst239  ret i32 %r240}241define i32 @add_nosignbit_select_lshr(i32 %x, i1 %cond, ptr %dst) {242; CHECK-LABEL: add_nosignbit_select_lshr:243; CHECK:       // %bb.0:244; CHECK-NEXT:    mov w8, #2147418112245; CHECK-NEXT:    tst w1, #0x1246; CHECK-NEXT:    add w8, w0, w8247; CHECK-NEXT:    csel w8, w8, w0, ne248; CHECK-NEXT:    lsr w0, w8, #8249; CHECK-NEXT:    str w0, [x2]250; CHECK-NEXT:    ret251  %t0 = add i32 %x, 2147418112 ; 0x7FFF0000252  %t1 = select i1 %cond, i32 %t0, i32 %x253  %r = lshr i32 %t1, 8254  store i32 %r, ptr %dst255  ret i32 %r256}257 258; arithmetic shift right259 260define i32 @and_signbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {261; CHECK-LABEL: and_signbit_select_ashr:262; CHECK:       // %bb.0:263; CHECK-NEXT:    and w8, w0, #0xffff0000264; CHECK-NEXT:    tst w1, #0x1265; CHECK-NEXT:    csel w8, w8, w0, ne266; CHECK-NEXT:    asr w0, w8, #8267; CHECK-NEXT:    str w0, [x2]268; CHECK-NEXT:    ret269  %t0 = and i32 %x, 4294901760 ; 0xFFFF0000270  %t1 = select i1 %cond, i32 %t0, i32 %x271  %r = ashr i32 %t1, 8272  store i32 %r, ptr %dst273  ret i32 %r274}275define i32 @and_nosignbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {276; CHECK-LABEL: and_nosignbit_select_ashr:277; CHECK:       // %bb.0:278; CHECK-NEXT:    and w8, w0, #0x7fff0000279; CHECK-NEXT:    tst w1, #0x1280; CHECK-NEXT:    csel w8, w8, w0, ne281; CHECK-NEXT:    asr w0, w8, #8282; CHECK-NEXT:    str w0, [x2]283; CHECK-NEXT:    ret284  %t0 = and i32 %x, 2147418112 ; 0x7FFF0000285  %t1 = select i1 %cond, i32 %t0, i32 %x286  %r = ashr i32 %t1, 8287  store i32 %r, ptr %dst288  ret i32 %r289}290 291define i32 @or_signbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {292; CHECK-LABEL: or_signbit_select_ashr:293; CHECK:       // %bb.0:294; CHECK-NEXT:    orr w8, w0, #0xffff0000295; CHECK-NEXT:    tst w1, #0x1296; CHECK-NEXT:    csel w8, w8, w0, ne297; CHECK-NEXT:    asr w0, w8, #8298; CHECK-NEXT:    str w0, [x2]299; CHECK-NEXT:    ret300  %t0 = or i32 %x, 4294901760 ; 0xFFFF0000301  %t1 = select i1 %cond, i32 %t0, i32 %x302  %r = ashr i32 %t1, 8303  store i32 %r, ptr %dst304  ret i32 %r305}306define i32 @or_nosignbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {307; CHECK-LABEL: or_nosignbit_select_ashr:308; CHECK:       // %bb.0:309; CHECK-NEXT:    orr w8, w0, #0x7fff0000310; CHECK-NEXT:    tst w1, #0x1311; CHECK-NEXT:    csel w8, w8, w0, ne312; CHECK-NEXT:    asr w0, w8, #8313; CHECK-NEXT:    str w0, [x2]314; CHECK-NEXT:    ret315  %t0 = or i32 %x, 2147418112 ; 0x7FFF0000316  %t1 = select i1 %cond, i32 %t0, i32 %x317  %r = ashr i32 %t1, 8318  store i32 %r, ptr %dst319  ret i32 %r320}321 322define i32 @xor_signbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {323; CHECK-LABEL: xor_signbit_select_ashr:324; CHECK:       // %bb.0:325; CHECK-NEXT:    eor w8, w0, #0xffff0000326; CHECK-NEXT:    tst w1, #0x1327; CHECK-NEXT:    csel w8, w8, w0, ne328; CHECK-NEXT:    asr w0, w8, #8329; CHECK-NEXT:    str w0, [x2]330; CHECK-NEXT:    ret331  %t0 = xor i32 %x, 4294901760 ; 0xFFFF0000332  %t1 = select i1 %cond, i32 %t0, i32 %x333  %r = ashr i32 %t1, 8334  store i32 %r, ptr %dst335  ret i32 %r336}337define i32 @xor_nosignbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {338; CHECK-LABEL: xor_nosignbit_select_ashr:339; CHECK:       // %bb.0:340; CHECK-NEXT:    eor w8, w0, #0x7fff0000341; CHECK-NEXT:    tst w1, #0x1342; CHECK-NEXT:    csel w8, w8, w0, ne343; CHECK-NEXT:    asr w0, w8, #8344; CHECK-NEXT:    str w0, [x2]345; CHECK-NEXT:    ret346  %t0 = xor i32 %x, 2147418112 ; 0x7FFF0000347  %t1 = select i1 %cond, i32 %t0, i32 %x348  %r = ashr i32 %t1, 8349  store i32 %r, ptr %dst350  ret i32 %r351}352 353define i32 @add_signbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {354; CHECK-LABEL: add_signbit_select_ashr:355; CHECK:       // %bb.0:356; CHECK-NEXT:    sub w8, w0, #16, lsl #12 // =65536357; CHECK-NEXT:    tst w1, #0x1358; CHECK-NEXT:    csel w8, w8, w0, ne359; CHECK-NEXT:    asr w0, w8, #8360; CHECK-NEXT:    str w0, [x2]361; CHECK-NEXT:    ret362  %t0 = add i32 %x, 4294901760 ; 0xFFFF0000363  %t1 = select i1 %cond, i32 %t0, i32 %x364  %r = ashr i32 %t1, 8365  store i32 %r, ptr %dst366  ret i32 %r367}368define i32 @add_nosignbit_select_ashr(i32 %x, i1 %cond, ptr %dst) {369; CHECK-LABEL: add_nosignbit_select_ashr:370; CHECK:       // %bb.0:371; CHECK-NEXT:    mov w8, #2147418112372; CHECK-NEXT:    tst w1, #0x1373; CHECK-NEXT:    add w8, w0, w8374; CHECK-NEXT:    csel w8, w8, w0, ne375; CHECK-NEXT:    asr w0, w8, #8376; CHECK-NEXT:    str w0, [x2]377; CHECK-NEXT:    ret378  %t0 = add i32 %x, 2147418112 ; 0x7FFF0000379  %t1 = select i1 %cond, i32 %t0, i32 %x380  %r = ashr i32 %t1, 8381  store i32 %r, ptr %dst382  ret i32 %r383}384