brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 64db154 Raw
283 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s3 4define i1 @loadzext_i8i8(ptr %p) {5; CHECK-LABEL: loadzext_i8i8:6; CHECK:       // %bb.0:7; CHECK-NEXT:    ldrb w8, [x0]8; CHECK-NEXT:    ldrb w9, [x0, #1]9; CHECK-NEXT:    orr w8, w8, w910; CHECK-NEXT:    cmp w8, #011; CHECK-NEXT:    cset w0, eq12; CHECK-NEXT:    ret13  %a = load i8, ptr %p14  %q = getelementptr i8, ptr %p, i64 115  %b = load i8, ptr %q16  %az = zext i8 %a to i3217  %bz = zext i8 %b to i3218  %c = or i32 %az, %bz19  %d = icmp eq i32 %c, 020  ret i1 %d21}22 23define i1 @loadzext_c_i8i8(ptr %p) {24; CHECK-LABEL: loadzext_c_i8i8:25; CHECK:       // %bb.0:26; CHECK-NEXT:    ldrb w8, [x0]27; CHECK-NEXT:    ldrb w9, [x0, #1]28; CHECK-NEXT:    orr w8, w9, w829; CHECK-NEXT:    cmp w8, #030; CHECK-NEXT:    cset w0, eq31; CHECK-NEXT:    ret32  %a = load i8, ptr %p33  %q = getelementptr i8, ptr %p, i64 134  %b = load i8, ptr %q35  %az = zext i8 %a to i3236  %bz = zext i8 %b to i3237  %c = or i32 %bz, %az38  %d = icmp eq i32 %c, 039  ret i1 %d40}41 42define i1 @load_i8i8_shift(ptr %p) {43; CHECK-LABEL: load_i8i8_shift:44; CHECK:       // %bb.0:45; CHECK-NEXT:    ldrh w8, [x0]46; CHECK-NEXT:    cmp w8, #047; CHECK-NEXT:    cset w0, eq48; CHECK-NEXT:    ret49  %a = load i8, ptr %p50  %q = getelementptr i8, ptr %p, i64 151  %b = load i8, ptr %q52  %az = zext i8 %a to i3253  %bz = zext i8 %b to i3254  %bs = shl i32 %bz, 855  %c = or i32 %az, %bs56  %d = icmp eq i32 %c, 057  ret i1 %d58}59 60define i1 @loadzext_i8i8i8(ptr %p) {61; CHECK-LABEL: loadzext_i8i8i8:62; CHECK:       // %bb.0:63; CHECK-NEXT:    ldrb w8, [x0]64; CHECK-NEXT:    ldrb w9, [x0, #1]65; CHECK-NEXT:    ldrb w10, [x0, #2]66; CHECK-NEXT:    orr w8, w8, w967; CHECK-NEXT:    orr w8, w8, w1068; CHECK-NEXT:    cmp w8, #069; CHECK-NEXT:    cset w0, eq70; CHECK-NEXT:    ret71  %a = load i8, ptr %p72  %q = getelementptr i8, ptr %p, i64 173  %b = load i8, ptr %q74  %r = getelementptr i8, ptr %p, i64 275  %b2 = load i8, ptr %r76  %az = zext i8 %a to i3277  %bz = zext i8 %b to i3278  %b2z = zext i8 %b2 to i3279  %c = or i32 %az, %bz80  %c2 = or i32 %c, %b2z81  %d = icmp eq i32 %c2, 082  ret i1 %d83}84 85define i1 @loadzext_i8i8i8i8(ptr %p) {86; CHECK-LABEL: loadzext_i8i8i8i8:87; CHECK:       // %bb.0:88; CHECK-NEXT:    ldrb w8, [x0]89; CHECK-NEXT:    ldrb w9, [x0, #1]90; CHECK-NEXT:    ldrb w10, [x0, #2]91; CHECK-NEXT:    ldrb w11, [x0, #3]92; CHECK-NEXT:    orr w8, w8, w993; CHECK-NEXT:    orr w9, w10, w1194; CHECK-NEXT:    orr w8, w8, w995; CHECK-NEXT:    cmp w8, #096; CHECK-NEXT:    cset w0, eq97; CHECK-NEXT:    ret98  %a = load i8, ptr %p99  %q = getelementptr i8, ptr %p, i64 1100  %b = load i8, ptr %q101  %r = getelementptr i8, ptr %p, i64 2102  %b2 = load i8, ptr %r103  %s = getelementptr i8, ptr %p, i64 3104  %b3 = load i8, ptr %s105  %az = zext i8 %a to i32106  %bz = zext i8 %b to i32107  %b2z = zext i8 %b2 to i32108  %b3z = zext i8 %b3 to i32109  %c = or i32 %az, %bz110  %c2 = or i32 %c, %b2z111  %c3 = or i32 %c2, %b3z112  %d = icmp eq i32 %c3, 0113  ret i1 %d114}115 116define i1 @load_i8i8(ptr %p) {117; CHECK-LABEL: load_i8i8:118; CHECK:       // %bb.0:119; CHECK-NEXT:    ldrb w8, [x0]120; CHECK-NEXT:    ldrb w9, [x0, #1]121; CHECK-NEXT:    orr w8, w8, w9122; CHECK-NEXT:    cmp w8, #0123; CHECK-NEXT:    cset w0, eq124; CHECK-NEXT:    ret125  %a = load i8, ptr %p126  %q = getelementptr i8, ptr %p, i64 1127  %b = load i8, ptr %q128  %c = or i8 %a, %b129  %d = icmp eq i8 %c, 0130  ret i1 %d131}132 133define i1 @load_i16i16(ptr %p) {134; CHECK-LABEL: load_i16i16:135; CHECK:       // %bb.0:136; CHECK-NEXT:    ldrh w8, [x0]137; CHECK-NEXT:    ldrh w9, [x0, #2]138; CHECK-NEXT:    orr w8, w8, w9139; CHECK-NEXT:    cmp w8, #0140; CHECK-NEXT:    cset w0, eq141; CHECK-NEXT:    ret142  %a = load i16, ptr %p143  %q = getelementptr i8, ptr %p, i64 2144  %b = load i16, ptr %q145  %c = or i16 %a, %b146  %d = icmp eq i16 %c, 0147  ret i1 %d148}149 150define i1 @load_i32i32(ptr %p) {151; CHECK-LABEL: load_i32i32:152; CHECK:       // %bb.0:153; CHECK-NEXT:    ldp w8, w9, [x0]154; CHECK-NEXT:    orr w8, w8, w9155; CHECK-NEXT:    cmp w8, #0156; CHECK-NEXT:    cset w0, eq157; CHECK-NEXT:    ret158  %a = load i32, ptr %p159  %q = getelementptr i8, ptr %p, i64 4160  %b = load i32, ptr %q161  %c = or i32 %a, %b162  %d = icmp eq i32 %c, 0163  ret i1 %d164}165 166define i1 @load_i64i64(ptr %p) {167; CHECK-LABEL: load_i64i64:168; CHECK:       // %bb.0:169; CHECK-NEXT:    ldp x8, x9, [x0]170; CHECK-NEXT:    orr x8, x8, x9171; CHECK-NEXT:    cmp x8, #0172; CHECK-NEXT:    cset w0, eq173; CHECK-NEXT:    ret174  %a = load i64, ptr %p175  %q = getelementptr i8, ptr %p, i64 8176  %b = load i64, ptr %q177  %c = or i64 %a, %b178  %d = icmp eq i64 %c, 0179  ret i1 %d180}181 182define i1 @load_i8i16i8(ptr %p) {183; CHECK-LABEL: load_i8i16i8:184; CHECK:       // %bb.0:185; CHECK-NEXT:    ldrb w8, [x0]186; CHECK-NEXT:    ldrb w9, [x0, #3]187; CHECK-NEXT:    ldurh w10, [x0, #1]188; CHECK-NEXT:    orr w8, w8, w9189; CHECK-NEXT:    orr w8, w8, w10190; CHECK-NEXT:    cmp w8, #0191; CHECK-NEXT:    cset w0, eq192; CHECK-NEXT:    ret193  %l0 = load i8, ptr %p194  %q = getelementptr i8, ptr %p, i64 1195  %l1 = load i16, ptr %q196  %r = getelementptr i8, ptr %p, i64 3197  %l3 = load i8, ptr %r198  %c = or i8 %l0, %l3199  %d = zext i8 %c to i32200  %e = zext i16 %l1 to i32201  %f = or i32 %d, %e202  %g = icmp eq i32 %f, 0203  ret i1 %g204}205 206define i1 @loadzext_i8i8_wrongoff(ptr %p) {207; CHECK-LABEL: loadzext_i8i8_wrongoff:208; CHECK:       // %bb.0:209; CHECK-NEXT:    ldrb w8, [x0]210; CHECK-NEXT:    ldrb w9, [x0, #2]211; CHECK-NEXT:    orr w8, w8, w9212; CHECK-NEXT:    cmp w8, #0213; CHECK-NEXT:    cset w0, eq214; CHECK-NEXT:    ret215  %a = load i8, ptr %p216  %q = getelementptr i8, ptr %p, i64 2217  %b = load i8, ptr %q218  %az = zext i8 %a to i32219  %bz = zext i8 %b to i32220  %c = or i32 %az, %bz221  %d = icmp eq i32 %c, 0222  ret i1 %d223}224 225define i1 @loadzext_i16i16_wrongoff(ptr %p) {226; CHECK-LABEL: loadzext_i16i16_wrongoff:227; CHECK:       // %bb.0:228; CHECK-NEXT:    ldrh w8, [x0]229; CHECK-NEXT:    ldurh w9, [x0, #1]230; CHECK-NEXT:    orr w8, w8, w9231; CHECK-NEXT:    cmp w8, #0232; CHECK-NEXT:    cset w0, eq233; CHECK-NEXT:    ret234  %a = load i16, ptr %p235  %q = getelementptr i8, ptr %p, i64 1236  %b = load i16, ptr %q237  %az = zext i16 %a to i32238  %bz = zext i16 %b to i32239  %c = or i32 %az, %bz240  %d = icmp eq i32 %c, 0241  ret i1 %d242}243 244define i1 @loadzext_i16i16_store(ptr %p, ptr %q) {245; CHECK-LABEL: loadzext_i16i16_store:246; CHECK:       // %bb.0:247; CHECK-NEXT:    ldrh w8, [x0]248; CHECK-NEXT:    strb wzr, [x1]249; CHECK-NEXT:    ldrh w9, [x0, #2]250; CHECK-NEXT:    orr w8, w8, w9251; CHECK-NEXT:    cmp w8, #0252; CHECK-NEXT:    cset w0, eq253; CHECK-NEXT:    ret254  %a = load i16, ptr %p255  store i8 0, ptr %q256  %p2 = getelementptr i8, ptr %p, i64 2257  %b = load i16, ptr %p2258  %az = zext i16 %a to i32259  %bz = zext i16 %b to i32260  %c = or i32 %az, %bz261  %d = icmp eq i32 %c, 0262  ret i1 %d263}264 265define i1 @loadzext_i16i16_bases(ptr %p, ptr %q) {266; CHECK-LABEL: loadzext_i16i16_bases:267; CHECK:       // %bb.0:268; CHECK-NEXT:    ldrh w8, [x0]269; CHECK-NEXT:    ldrh w9, [x1, #2]270; CHECK-NEXT:    orr w8, w8, w9271; CHECK-NEXT:    cmp w8, #0272; CHECK-NEXT:    cset w0, eq273; CHECK-NEXT:    ret274  %a = load i16, ptr %p275  %p2 = getelementptr i8, ptr %q, i64 2276  %b = load i16, ptr %p2277  %az = zext i16 %a to i32278  %bz = zext i16 %b to i32279  %c = or i32 %az, %bz280  %d = icmp eq i32 %c, 0281  ret i1 %d282}283