brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · f7f0b68 Raw
147 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O0 | FileCheck %s3; RUN: llc -fast-isel=false < %s -O0 | FileCheck %s -check-prefixes NO-FAST-ISEL4 5target triple = "wasm32-unknown-unknown"6 7 8declare i32 @foo(i1 signext noundef, i32 noundef)9 10; callsite_signext and callsite_nosignext must emit equivalent codes11 12define i32 @callsite_nosignext() {13; CHECK-LABEL: callsite_nosignext:14; CHECK:         .functype callsite_nosignext () -> (i32)15; CHECK-NEXT:    .local i32, i32, i3216; CHECK-NEXT:  # %bb.0: # %start17; CHECK-NEXT:    i32.const 118; CHECK-NEXT:    local.set 019; CHECK-NEXT:    i32.const 020; CHECK-NEXT:    local.set 121; CHECK-NEXT:    i32.const 3122; CHECK-NEXT:    local.set 223; CHECK-NEXT:    local.get 024; CHECK-NEXT:    local.get 225; CHECK-NEXT:    i32.shl26; CHECK-NEXT:    local.get 227; CHECK-NEXT:    i32.shr_s28; CHECK-NEXT:    local.get 129; CHECK-NEXT:    call foo30; CHECK-NEXT:    return31;32; NO-FAST-ISEL-LABEL: callsite_nosignext:33; NO-FAST-ISEL:         .functype callsite_nosignext () -> (i32)34; NO-FAST-ISEL-NEXT:    .local i3235; NO-FAST-ISEL-NEXT:  # %bb.0: # %start36; NO-FAST-ISEL-NEXT:    i32.const 037; NO-FAST-ISEL-NEXT:    local.set 038; NO-FAST-ISEL-NEXT:    i32.const -139; NO-FAST-ISEL-NEXT:    local.get 040; NO-FAST-ISEL-NEXT:    call foo41; NO-FAST-ISEL-NEXT:    return42start:43  %0 = call i32 @foo(i1 1, i32 0)44  ret i32 %045}46 47define i32 @callsite_signext() {48; CHECK-LABEL: callsite_signext:49; CHECK:         .functype callsite_signext () -> (i32)50; CHECK-NEXT:    .local i32, i32, i3251; CHECK-NEXT:  # %bb.0: # %start52; CHECK-NEXT:    i32.const 153; CHECK-NEXT:    local.set 054; CHECK-NEXT:    i32.const 055; CHECK-NEXT:    local.set 156; CHECK-NEXT:    i32.const 3157; CHECK-NEXT:    local.set 258; CHECK-NEXT:    local.get 059; CHECK-NEXT:    local.get 260; CHECK-NEXT:    i32.shl61; CHECK-NEXT:    local.get 262; CHECK-NEXT:    i32.shr_s63; CHECK-NEXT:    local.get 164; CHECK-NEXT:    call foo65; CHECK-NEXT:    return66;67; NO-FAST-ISEL-LABEL: callsite_signext:68; NO-FAST-ISEL:         .functype callsite_signext () -> (i32)69; NO-FAST-ISEL-NEXT:    .local i3270; NO-FAST-ISEL-NEXT:  # %bb.0: # %start71; NO-FAST-ISEL-NEXT:    i32.const 072; NO-FAST-ISEL-NEXT:    local.set 073; NO-FAST-ISEL-NEXT:    i32.const -174; NO-FAST-ISEL-NEXT:    local.get 075; NO-FAST-ISEL-NEXT:    call foo76; NO-FAST-ISEL-NEXT:    return77start:78  %0 = call i32 @foo(i1 signext 1, i32 0)79  ret i32 %080}81 82declare i32 @foo2(i1 zeroext noundef, i32 noundef)83 84; callsite_zeroext and callsite_nozeroext must emit equivalent codes85 86define i32 @callsite_nozeroext() {87; CHECK-LABEL: callsite_nozeroext:88; CHECK:         .functype callsite_nozeroext () -> (i32)89; CHECK-NEXT:    .local i32, i3290; CHECK-NEXT:  # %bb.0: # %start91; CHECK-NEXT:    i32.const 192; CHECK-NEXT:    local.set 093; CHECK-NEXT:    i32.const 094; CHECK-NEXT:    local.set 195; CHECK-NEXT:    local.get 096; CHECK-NEXT:    i32.const 197; CHECK-NEXT:    i32.and98; CHECK-NEXT:    local.get 199; CHECK-NEXT:    call foo2100; CHECK-NEXT:    return101;102; NO-FAST-ISEL-LABEL: callsite_nozeroext:103; NO-FAST-ISEL:         .functype callsite_nozeroext () -> (i32)104; NO-FAST-ISEL-NEXT:    .local i32105; NO-FAST-ISEL-NEXT:  # %bb.0: # %start106; NO-FAST-ISEL-NEXT:    i32.const 0107; NO-FAST-ISEL-NEXT:    local.set 0108; NO-FAST-ISEL-NEXT:    i32.const 1109; NO-FAST-ISEL-NEXT:    local.get 0110; NO-FAST-ISEL-NEXT:    call foo2111; NO-FAST-ISEL-NEXT:    return112start:113  %0 = call i32 @foo2(i1 1, i32 0)114  ret i32 %0115}116 117define i32 @callsite_zeroext() {118; CHECK-LABEL: callsite_zeroext:119; CHECK:         .functype callsite_zeroext () -> (i32)120; CHECK-NEXT:    .local i32, i32121; CHECK-NEXT:  # %bb.0: # %start122; CHECK-NEXT:    i32.const 1123; CHECK-NEXT:    local.set 0124; CHECK-NEXT:    i32.const 0125; CHECK-NEXT:    local.set 1126; CHECK-NEXT:    local.get 0127; CHECK-NEXT:    i32.const 1128; CHECK-NEXT:    i32.and129; CHECK-NEXT:    local.get 1130; CHECK-NEXT:    call foo2131; CHECK-NEXT:    return132;133; NO-FAST-ISEL-LABEL: callsite_zeroext:134; NO-FAST-ISEL:         .functype callsite_zeroext () -> (i32)135; NO-FAST-ISEL-NEXT:    .local i32136; NO-FAST-ISEL-NEXT:  # %bb.0: # %start137; NO-FAST-ISEL-NEXT:    i32.const 0138; NO-FAST-ISEL-NEXT:    local.set 0139; NO-FAST-ISEL-NEXT:    i32.const 1140; NO-FAST-ISEL-NEXT:    local.get 0141; NO-FAST-ISEL-NEXT:    call foo2142; NO-FAST-ISEL-NEXT:    return143start:144  %0 = call i32 @foo2(i1 zeroext 1, i32 0)145  ret i32 %0146}147