brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · 7cc5bc2 Raw
269 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \3; RUN:   -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-BE \4; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl5; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \6; RUN:   -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \7; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl8@glob = dso_local local_unnamed_addr global i8 0, align 19 10define dso_local signext i32 @test_ineuc(i8 zeroext %a, i8 zeroext %b) {11; CHECK-LABEL: test_ineuc:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    xor r3, r3, r414; CHECK-NEXT:    cntlzw r3, r315; CHECK-NEXT:    srwi r3, r3, 516; CHECK-NEXT:    xori r3, r3, 117; CHECK-NEXT:    blr18; CHECK-BE-LABEL: test_ineuc:19; CHECK-BE:       # %bb.0: # %entry20; CHECK-BE-NEXT:    xor r3, r3, r421; CHECK-BE-NEXT:    cntlzw r3, r322; CHECK-BE-NEXT:    srwi r3, r3, 523; CHECK-BE-NEXT:    xori r3, r3, 124; CHECK-BE-NEXT:    blr25;26; CHECK-LE-LABEL: test_ineuc:27; CHECK-LE:       # %bb.0: # %entry28; CHECK-LE-NEXT:    xor r3, r3, r429; CHECK-LE-NEXT:    cntlzw r3, r330; CHECK-LE-NEXT:    srwi r3, r3, 531; CHECK-LE-NEXT:    xori r3, r3, 132; CHECK-LE-NEXT:    blr33entry:34  %cmp = icmp ne i8 %a, %b35  %conv2 = zext i1 %cmp to i3236  ret i32 %conv237}38 39define dso_local signext i32 @test_ineuc_sext(i8 zeroext %a, i8 zeroext %b) {40; CHECK-LABEL: test_ineuc_sext:41; CHECK:       # %bb.0: # %entry42; CHECK-NEXT:    xor r3, r3, r443; CHECK-NEXT:    cntlzw r3, r344; CHECK-NEXT:    srwi r3, r3, 545; CHECK-NEXT:    xori r3, r3, 146; CHECK-NEXT:    neg r3, r347; CHECK-NEXT:    blr48; CHECK-BE-LABEL: test_ineuc_sext:49; CHECK-BE:       # %bb.0: # %entry50; CHECK-BE-NEXT:    xor r3, r3, r451; CHECK-BE-NEXT:    cntlzw r3, r352; CHECK-BE-NEXT:    srwi r3, r3, 553; CHECK-BE-NEXT:    xori r3, r3, 154; CHECK-BE-NEXT:    neg r3, r355; CHECK-BE-NEXT:    blr56;57; CHECK-LE-LABEL: test_ineuc_sext:58; CHECK-LE:       # %bb.0: # %entry59; CHECK-LE-NEXT:    xor r3, r3, r460; CHECK-LE-NEXT:    cntlzw r3, r361; CHECK-LE-NEXT:    srwi r3, r3, 562; CHECK-LE-NEXT:    xori r3, r3, 163; CHECK-LE-NEXT:    neg r3, r364; CHECK-LE-NEXT:    blr65entry:66  %cmp = icmp ne i8 %a, %b67  %sub = sext i1 %cmp to i3268  ret i32 %sub69}70 71define dso_local signext i32 @test_ineuc_z(i8 zeroext %a) {72; CHECK-LABEL: test_ineuc_z:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    cntlzw r3, r375; CHECK-NEXT:    srwi r3, r3, 576; CHECK-NEXT:    xori r3, r3, 177; CHECK-NEXT:    blr78; CHECK-BE-LABEL: test_ineuc_z:79; CHECK-BE:       # %bb.0: # %entry80; CHECK-BE-NEXT:    cntlzw r3, r381; CHECK-BE-NEXT:    srwi r3, r3, 582; CHECK-BE-NEXT:    xori r3, r3, 183; CHECK-BE-NEXT:    blr84;85; CHECK-LE-LABEL: test_ineuc_z:86; CHECK-LE:       # %bb.0: # %entry87; CHECK-LE-NEXT:    cntlzw r3, r388; CHECK-LE-NEXT:    srwi r3, r3, 589; CHECK-LE-NEXT:    xori r3, r3, 190; CHECK-LE-NEXT:    blr91entry:92  %cmp = icmp ne i8 %a, 093  %conv1 = zext i1 %cmp to i3294  ret i32 %conv195}96 97define dso_local signext i32 @test_ineuc_sext_z(i8 zeroext %a) {98; CHECK-LABEL: test_ineuc_sext_z:99; CHECK:       # %bb.0: # %entry100; CHECK-NEXT:    cntlzw r3, r3101; CHECK-NEXT:    srwi r3, r3, 5102; CHECK-NEXT:    xori r3, r3, 1103; CHECK-NEXT:    neg r3, r3104; CHECK-NEXT:    blr105; CHECK-BE-LABEL: test_ineuc_sext_z:106; CHECK-BE:       # %bb.0: # %entry107; CHECK-BE-NEXT:    cntlzw r3, r3108; CHECK-BE-NEXT:    srwi r3, r3, 5109; CHECK-BE-NEXT:    xori r3, r3, 1110; CHECK-BE-NEXT:    neg r3, r3111; CHECK-BE-NEXT:    blr112;113; CHECK-LE-LABEL: test_ineuc_sext_z:114; CHECK-LE:       # %bb.0: # %entry115; CHECK-LE-NEXT:    cntlzw r3, r3116; CHECK-LE-NEXT:    srwi r3, r3, 5117; CHECK-LE-NEXT:    xori r3, r3, 1118; CHECK-LE-NEXT:    neg r3, r3119; CHECK-LE-NEXT:    blr120entry:121  %cmp = icmp ne i8 %a, 0122  %sub = sext i1 %cmp to i32123  ret i32 %sub124}125 126define dso_local void @test_ineuc_store(i8 zeroext %a, i8 zeroext %b) {127; CHECK-LABEL: test_ineuc_store:128; CHECK:       # %bb.0: # %entry129; CHECK-NEXT:    xor r3, r3, r4130; CHECK-NEXT:    addis r5, r2, glob@toc@ha131; CHECK-NEXT:    cntlzw r3, r3132; CHECK-NEXT:    srwi r3, r3, 5133; CHECK-NEXT:    xori r3, r3, 1134; CHECK-NEXT:    stb r3, glob@toc@l(r5)135; CHECK-NEXT:    blr136; CHECK-BE-LABEL: test_ineuc_store:137; CHECK-BE:       # %bb.0: # %entry138; CHECK-BE-NEXT:    xor r3, r3, r4139; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha140; CHECK-BE-NEXT:    cntlzw r3, r3141; CHECK-BE-NEXT:    srwi r3, r3, 5142; CHECK-BE-NEXT:    xori r3, r3, 1143; CHECK-BE-NEXT:    stb r3, glob@toc@l(r4)144; CHECK-BE-NEXT:    blr145;146; CHECK-LE-LABEL: test_ineuc_store:147; CHECK-LE:       # %bb.0: # %entry148; CHECK-LE-NEXT:    xor r3, r3, r4149; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha150; CHECK-LE-NEXT:    cntlzw r3, r3151; CHECK-LE-NEXT:    srwi r3, r3, 5152; CHECK-LE-NEXT:    xori r3, r3, 1153; CHECK-LE-NEXT:    stb r3, glob@toc@l(r4)154; CHECK-LE-NEXT:    blr155entry:156  %cmp = icmp ne i8 %a, %b157  %conv3 = zext i1 %cmp to i8158  store i8 %conv3, ptr @glob, align 1159  ret void160}161 162define dso_local void @test_ineuc_sext_store(i8 zeroext %a, i8 zeroext %b) {163; CHECK-LABEL: test_ineuc_sext_store:164; CHECK:       # %bb.0: # %entry165; CHECK-NEXT:    xor r3, r3, r4166; CHECK-NEXT:    addis r5, r2, glob@toc@ha167; CHECK-NEXT:    cntlzw r3, r3168; CHECK-NEXT:    srwi r3, r3, 5169; CHECK-NEXT:    xori r3, r3, 1170; CHECK-NEXT:    neg r3, r3171; CHECK-NEXT:    stb r3, glob@toc@l(r5)172; CHECK-NEXT:    blr173; CHECK-BE-LABEL: test_ineuc_sext_store:174; CHECK-BE:       # %bb.0: # %entry175; CHECK-BE-NEXT:    xor r3, r3, r4176; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha177; CHECK-BE-NEXT:    cntlzw r3, r3178; CHECK-BE-NEXT:    srwi r3, r3, 5179; CHECK-BE-NEXT:    xori r3, r3, 1180; CHECK-BE-NEXT:    neg r3, r3181; CHECK-BE-NEXT:    stb r3, glob@toc@l(r4)182; CHECK-BE-NEXT:    blr183;184; CHECK-LE-LABEL: test_ineuc_sext_store:185; CHECK-LE:       # %bb.0: # %entry186; CHECK-LE-NEXT:    xor r3, r3, r4187; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha188; CHECK-LE-NEXT:    cntlzw r3, r3189; CHECK-LE-NEXT:    srwi r3, r3, 5190; CHECK-LE-NEXT:    xori r3, r3, 1191; CHECK-LE-NEXT:    neg r3, r3192; CHECK-LE-NEXT:    stb r3, glob@toc@l(r4)193; CHECK-LE-NEXT:    blr194entry:195  %cmp = icmp ne i8 %a, %b196  %conv3 = sext i1 %cmp to i8197  store i8 %conv3, ptr @glob, align 1198  ret void199}200 201define dso_local void @test_ineuc_z_store(i8 zeroext %a) {202; CHECK-LABEL: test_ineuc_z_store:203; CHECK:       # %bb.0: # %entry204; CHECK-NEXT:    cntlzw r3, r3205; CHECK-NEXT:    addis r4, r2, glob@toc@ha206; CHECK-NEXT:    srwi r3, r3, 5207; CHECK-NEXT:    xori r3, r3, 1208; CHECK-NEXT:    stb r3, glob@toc@l(r4)209; CHECK-NEXT:    blr210; CHECK-BE-LABEL: test_ineuc_z_store:211; CHECK-BE:       # %bb.0: # %entry212; CHECK-BE-NEXT:    cntlzw r3, r3213; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha214; CHECK-BE-NEXT:    srwi r3, r3, 5215; CHECK-BE-NEXT:    xori r3, r3, 1216; CHECK-BE-NEXT:    stb r3, glob@toc@l(r4)217; CHECK-BE-NEXT:    blr218;219; CHECK-LE-LABEL: test_ineuc_z_store:220; CHECK-LE:       # %bb.0: # %entry221; CHECK-LE-NEXT:    cntlzw r3, r3222; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha223; CHECK-LE-NEXT:    srwi r3, r3, 5224; CHECK-LE-NEXT:    xori r3, r3, 1225; CHECK-LE-NEXT:    stb r3, glob@toc@l(r4)226; CHECK-LE-NEXT:    blr227entry:228  %cmp = icmp ne i8 %a, 0229  %conv2 = zext i1 %cmp to i8230  store i8 %conv2, ptr @glob, align 1231  ret void232}233 234define dso_local void @test_ineuc_sext_z_store(i8 zeroext %a) {235; CHECK-LABEL: test_ineuc_sext_z_store:236; CHECK:       # %bb.0: # %entry237; CHECK-NEXT:    cntlzw r3, r3238; CHECK-NEXT:    addis r4, r2, glob@toc@ha239; CHECK-NEXT:    srwi r3, r3, 5240; CHECK-NEXT:    xori r3, r3, 1241; CHECK-NEXT:    neg r3, r3242; CHECK-NEXT:    stb r3, glob@toc@l(r4)243; CHECK-NEXT:    blr244; CHECK-BE-LABEL: test_ineuc_sext_z_store:245; CHECK-BE:       # %bb.0: # %entry246; CHECK-BE-NEXT:    cntlzw r3, r3247; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha248; CHECK-BE-NEXT:    srwi r3, r3, 5249; CHECK-BE-NEXT:    xori r3, r3, 1250; CHECK-BE-NEXT:    neg r3, r3251; CHECK-BE-NEXT:    stb r3, glob@toc@l(r4)252; CHECK-BE-NEXT:    blr253;254; CHECK-LE-LABEL: test_ineuc_sext_z_store:255; CHECK-LE:       # %bb.0: # %entry256; CHECK-LE-NEXT:    cntlzw r3, r3257; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha258; CHECK-LE-NEXT:    srwi r3, r3, 5259; CHECK-LE-NEXT:    xori r3, r3, 1260; CHECK-LE-NEXT:    neg r3, r3261; CHECK-LE-NEXT:    stb r3, glob@toc@l(r4)262; CHECK-LE-NEXT:    blr263entry:264  %cmp = icmp ne i8 %a, 0265  %conv2 = sext i1 %cmp to i8266  store i8 %conv2, ptr @glob, align 1267  ret void268}269