brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · 22077f5 Raw
270 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 9@glob = dso_local local_unnamed_addr global i16 0, align 210 11define dso_local signext i32 @test_ineus(i16 zeroext %a, i16 zeroext %b) {12; CHECK-LABEL: test_ineus:13; CHECK:       # %bb.0: # %entry14; CHECK-NEXT:    xor r3, r3, r415; CHECK-NEXT:    cntlzw r3, r316; CHECK-NEXT:    srwi r3, r3, 517; CHECK-NEXT:    xori r3, r3, 118; CHECK-NEXT:    blr19; CHECK-BE-LABEL: test_ineus:20; CHECK-BE:       # %bb.0: # %entry21; CHECK-BE-NEXT:    xor r3, r3, r422; CHECK-BE-NEXT:    cntlzw r3, r323; CHECK-BE-NEXT:    srwi r3, r3, 524; CHECK-BE-NEXT:    xori r3, r3, 125; CHECK-BE-NEXT:    blr26;27; CHECK-LE-LABEL: test_ineus:28; CHECK-LE:       # %bb.0: # %entry29; CHECK-LE-NEXT:    xor r3, r3, r430; CHECK-LE-NEXT:    cntlzw r3, r331; CHECK-LE-NEXT:    srwi r3, r3, 532; CHECK-LE-NEXT:    xori r3, r3, 133; CHECK-LE-NEXT:    blr34entry:35  %cmp = icmp ne i16 %a, %b36  %conv2 = zext i1 %cmp to i3237  ret i32 %conv238}39 40define dso_local signext i32 @test_ineus_sext(i16 zeroext %a, i16 zeroext %b) {41; CHECK-LABEL: test_ineus_sext:42; CHECK:       # %bb.0: # %entry43; CHECK-NEXT:    xor r3, r3, r444; CHECK-NEXT:    cntlzw r3, r345; CHECK-NEXT:    srwi r3, r3, 546; CHECK-NEXT:    xori r3, r3, 147; CHECK-NEXT:    neg r3, r348; CHECK-NEXT:    blr49; CHECK-BE-LABEL: test_ineus_sext:50; CHECK-BE:       # %bb.0: # %entry51; CHECK-BE-NEXT:    xor r3, r3, r452; CHECK-BE-NEXT:    cntlzw r3, r353; CHECK-BE-NEXT:    srwi r3, r3, 554; CHECK-BE-NEXT:    xori r3, r3, 155; CHECK-BE-NEXT:    neg r3, r356; CHECK-BE-NEXT:    blr57;58; CHECK-LE-LABEL: test_ineus_sext:59; CHECK-LE:       # %bb.0: # %entry60; CHECK-LE-NEXT:    xor r3, r3, r461; CHECK-LE-NEXT:    cntlzw r3, r362; CHECK-LE-NEXT:    srwi r3, r3, 563; CHECK-LE-NEXT:    xori r3, r3, 164; CHECK-LE-NEXT:    neg r3, r365; CHECK-LE-NEXT:    blr66entry:67  %cmp = icmp ne i16 %a, %b68  %sub = sext i1 %cmp to i3269  ret i32 %sub70}71 72define dso_local signext i32 @test_ineus_z(i16 zeroext %a) {73; CHECK-LABEL: test_ineus_z:74; CHECK:       # %bb.0: # %entry75; CHECK-NEXT:    cntlzw r3, r376; CHECK-NEXT:    srwi r3, r3, 577; CHECK-NEXT:    xori r3, r3, 178; CHECK-NEXT:    blr79; CHECK-BE-LABEL: test_ineus_z:80; CHECK-BE:       # %bb.0: # %entry81; CHECK-BE-NEXT:    cntlzw r3, r382; CHECK-BE-NEXT:    srwi r3, r3, 583; CHECK-BE-NEXT:    xori r3, r3, 184; CHECK-BE-NEXT:    blr85;86; CHECK-LE-LABEL: test_ineus_z:87; CHECK-LE:       # %bb.0: # %entry88; CHECK-LE-NEXT:    cntlzw r3, r389; CHECK-LE-NEXT:    srwi r3, r3, 590; CHECK-LE-NEXT:    xori r3, r3, 191; CHECK-LE-NEXT:    blr92entry:93  %cmp = icmp ne i16 %a, 094  %conv1 = zext i1 %cmp to i3295  ret i32 %conv196}97 98define dso_local signext i32 @test_ineus_sext_z(i16 zeroext %a) {99; CHECK-LABEL: test_ineus_sext_z:100; CHECK:       # %bb.0: # %entry101; CHECK-NEXT:    cntlzw r3, r3102; CHECK-NEXT:    srwi r3, r3, 5103; CHECK-NEXT:    xori r3, r3, 1104; CHECK-NEXT:    neg r3, r3105; CHECK-NEXT:    blr106; CHECK-BE-LABEL: test_ineus_sext_z:107; CHECK-BE:       # %bb.0: # %entry108; CHECK-BE-NEXT:    cntlzw r3, r3109; CHECK-BE-NEXT:    srwi r3, r3, 5110; CHECK-BE-NEXT:    xori r3, r3, 1111; CHECK-BE-NEXT:    neg r3, r3112; CHECK-BE-NEXT:    blr113;114; CHECK-LE-LABEL: test_ineus_sext_z:115; CHECK-LE:       # %bb.0: # %entry116; CHECK-LE-NEXT:    cntlzw r3, r3117; CHECK-LE-NEXT:    srwi r3, r3, 5118; CHECK-LE-NEXT:    xori r3, r3, 1119; CHECK-LE-NEXT:    neg r3, r3120; CHECK-LE-NEXT:    blr121entry:122  %cmp = icmp ne i16 %a, 0123  %sub = sext i1 %cmp to i32124  ret i32 %sub125}126 127define dso_local void @test_ineus_store(i16 zeroext %a, i16 zeroext %b) {128; CHECK-LABEL: test_ineus_store:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    xor r3, r3, r4131; CHECK-NEXT:    addis r5, r2, glob@toc@ha132; CHECK-NEXT:    cntlzw r3, r3133; CHECK-NEXT:    srwi r3, r3, 5134; CHECK-NEXT:    xori r3, r3, 1135; CHECK-NEXT:    sth r3, glob@toc@l(r5)136; CHECK-NEXT:    blr137; CHECK-BE-LABEL: test_ineus_store:138; CHECK-BE:       # %bb.0: # %entry139; CHECK-BE-NEXT:    xor r3, r3, r4140; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha141; CHECK-BE-NEXT:    cntlzw r3, r3142; CHECK-BE-NEXT:    srwi r3, r3, 5143; CHECK-BE-NEXT:    xori r3, r3, 1144; CHECK-BE-NEXT:    sth r3, glob@toc@l(r4)145; CHECK-BE-NEXT:    blr146;147; CHECK-LE-LABEL: test_ineus_store:148; CHECK-LE:       # %bb.0: # %entry149; CHECK-LE-NEXT:    xor r3, r3, r4150; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha151; CHECK-LE-NEXT:    cntlzw r3, r3152; CHECK-LE-NEXT:    srwi r3, r3, 5153; CHECK-LE-NEXT:    xori r3, r3, 1154; CHECK-LE-NEXT:    sth r3, glob@toc@l(r4)155; CHECK-LE-NEXT:    blr156entry:157  %cmp = icmp ne i16 %a, %b158  %conv3 = zext i1 %cmp to i16159  store i16 %conv3, ptr @glob, align 2160  ret void161}162 163define dso_local void @test_ineus_sext_store(i16 zeroext %a, i16 zeroext %b) {164; CHECK-LABEL: test_ineus_sext_store:165; CHECK:       # %bb.0: # %entry166; CHECK-NEXT:    xor r3, r3, r4167; CHECK-NEXT:    addis r5, r2, glob@toc@ha168; CHECK-NEXT:    cntlzw r3, r3169; CHECK-NEXT:    srwi r3, r3, 5170; CHECK-NEXT:    xori r3, r3, 1171; CHECK-NEXT:    neg r3, r3172; CHECK-NEXT:    sth r3, glob@toc@l(r5)173; CHECK-NEXT:    blr174; CHECK-BE-LABEL: test_ineus_sext_store:175; CHECK-BE:       # %bb.0: # %entry176; CHECK-BE-NEXT:    xor r3, r3, r4177; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha178; CHECK-BE-NEXT:    cntlzw r3, r3179; CHECK-BE-NEXT:    srwi r3, r3, 5180; CHECK-BE-NEXT:    xori r3, r3, 1181; CHECK-BE-NEXT:    neg r3, r3182; CHECK-BE-NEXT:    sth r3, glob@toc@l(r4)183; CHECK-BE-NEXT:    blr184;185; CHECK-LE-LABEL: test_ineus_sext_store:186; CHECK-LE:       # %bb.0: # %entry187; CHECK-LE-NEXT:    xor r3, r3, r4188; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha189; CHECK-LE-NEXT:    cntlzw r3, r3190; CHECK-LE-NEXT:    srwi r3, r3, 5191; CHECK-LE-NEXT:    xori r3, r3, 1192; CHECK-LE-NEXT:    neg r3, r3193; CHECK-LE-NEXT:    sth r3, glob@toc@l(r4)194; CHECK-LE-NEXT:    blr195entry:196  %cmp = icmp ne i16 %a, %b197  %conv3 = sext i1 %cmp to i16198  store i16 %conv3, ptr @glob, align 2199  ret void200}201 202define dso_local void @test_ineus_z_store(i16 zeroext %a) {203; CHECK-LABEL: test_ineus_z_store:204; CHECK:       # %bb.0: # %entry205; CHECK-NEXT:    cntlzw r3, r3206; CHECK-NEXT:    addis r4, r2, glob@toc@ha207; CHECK-NEXT:    srwi r3, r3, 5208; CHECK-NEXT:    xori r3, r3, 1209; CHECK-NEXT:    sth r3, glob@toc@l(r4)210; CHECK-NEXT:    blr211; CHECK-BE-LABEL: test_ineus_z_store:212; CHECK-BE:       # %bb.0: # %entry213; CHECK-BE-NEXT:    cntlzw r3, r3214; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha215; CHECK-BE-NEXT:    srwi r3, r3, 5216; CHECK-BE-NEXT:    xori r3, r3, 1217; CHECK-BE-NEXT:    sth r3, glob@toc@l(r4)218; CHECK-BE-NEXT:    blr219;220; CHECK-LE-LABEL: test_ineus_z_store:221; CHECK-LE:       # %bb.0: # %entry222; CHECK-LE-NEXT:    cntlzw r3, r3223; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha224; CHECK-LE-NEXT:    srwi r3, r3, 5225; CHECK-LE-NEXT:    xori r3, r3, 1226; CHECK-LE-NEXT:    sth r3, glob@toc@l(r4)227; CHECK-LE-NEXT:    blr228entry:229  %cmp = icmp ne i16 %a, 0230  %conv2 = zext i1 %cmp to i16231  store i16 %conv2, ptr @glob, align 2232  ret void233}234 235define dso_local void @test_ineus_sext_z_store(i16 zeroext %a) {236; CHECK-LABEL: test_ineus_sext_z_store:237; CHECK:       # %bb.0: # %entry238; CHECK-NEXT:    cntlzw r3, r3239; CHECK-NEXT:    addis r4, r2, glob@toc@ha240; CHECK-NEXT:    srwi r3, r3, 5241; CHECK-NEXT:    xori r3, r3, 1242; CHECK-NEXT:    neg r3, r3243; CHECK-NEXT:    sth r3, glob@toc@l(r4)244; CHECK-NEXT:    blr245; CHECK-BE-LABEL: test_ineus_sext_z_store:246; CHECK-BE:       # %bb.0: # %entry247; CHECK-BE-NEXT:    cntlzw r3, r3248; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha249; CHECK-BE-NEXT:    srwi r3, r3, 5250; CHECK-BE-NEXT:    xori r3, r3, 1251; CHECK-BE-NEXT:    neg r3, r3252; CHECK-BE-NEXT:    sth r3, glob@toc@l(r4)253; CHECK-BE-NEXT:    blr254;255; CHECK-LE-LABEL: test_ineus_sext_z_store:256; CHECK-LE:       # %bb.0: # %entry257; CHECK-LE-NEXT:    cntlzw r3, r3258; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha259; CHECK-LE-NEXT:    srwi r3, r3, 5260; CHECK-LE-NEXT:    xori r3, r3, 1261; CHECK-LE-NEXT:    neg r3, r3262; CHECK-LE-NEXT:    sth r3, glob@toc@l(r4)263; CHECK-LE-NEXT:    blr264entry:265  %cmp = icmp ne i16 %a, 0266  %conv2 = sext i1 %cmp to i16267  store i16 %conv2, ptr @glob, align 2268  ret void269}270