brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · c6cb877 Raw
376 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -verify-machineinstrs | FileCheck %s3; RUN: llc < %s -mtriple=x86_64-- -mattr=slow-incdec -verify-machineinstrs | FileCheck %s --check-prefix SLOW_INC4 5; rdar://71037046 7define void @sub1(ptr nocapture %p, i32 %v) nounwind ssp {8; CHECK-LABEL: sub1:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    lock subl %esi, (%rdi)11; CHECK-NEXT:    retq12;13; SLOW_INC-LABEL: sub1:14; SLOW_INC:       # %bb.0: # %entry15; SLOW_INC-NEXT:    lock subl %esi, (%rdi)16; SLOW_INC-NEXT:    retq17entry:18  %0 = atomicrmw sub ptr %p, i32 %v monotonic19  ret void20}21 22define void @inc4(ptr nocapture %p) nounwind ssp {23; CHECK-LABEL: inc4:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    lock incq (%rdi)26; CHECK-NEXT:    retq27;28; SLOW_INC-LABEL: inc4:29; SLOW_INC:       # %bb.0: # %entry30; SLOW_INC-NEXT:    lock addq $1, (%rdi)31; SLOW_INC-NEXT:    retq32entry:33  %0 = atomicrmw add ptr %p, i64 1 monotonic34  ret void35}36 37define void @add8(ptr nocapture %p) nounwind ssp {38; CHECK-LABEL: add8:39; CHECK:       # %bb.0: # %entry40; CHECK-NEXT:    lock addq $2, (%rdi)41; CHECK-NEXT:    retq42;43; SLOW_INC-LABEL: add8:44; SLOW_INC:       # %bb.0: # %entry45; SLOW_INC-NEXT:    lock addq $2, (%rdi)46; SLOW_INC-NEXT:    retq47entry:48  %0 = atomicrmw add ptr %p, i64 2 monotonic49  ret void50}51 52define void @add4(ptr nocapture %p, i32 %v) nounwind ssp {53; CHECK-LABEL: add4:54; CHECK:       # %bb.0: # %entry55; CHECK-NEXT:    movslq %esi, %rax56; CHECK-NEXT:    lock addq %rax, (%rdi)57; CHECK-NEXT:    retq58;59; SLOW_INC-LABEL: add4:60; SLOW_INC:       # %bb.0: # %entry61; SLOW_INC-NEXT:    movslq %esi, %rax62; SLOW_INC-NEXT:    lock addq %rax, (%rdi)63; SLOW_INC-NEXT:    retq64entry:65  %0 = sext i32 %v to i64		; <i64> [#uses=1]66  %1 = atomicrmw add ptr %p, i64 %0 monotonic67  ret void68}69 70define void @inc3(ptr nocapture %p) nounwind ssp {71; CHECK-LABEL: inc3:72; CHECK:       # %bb.0: # %entry73; CHECK-NEXT:    lock incb (%rdi)74; CHECK-NEXT:    retq75;76; SLOW_INC-LABEL: inc3:77; SLOW_INC:       # %bb.0: # %entry78; SLOW_INC-NEXT:    lock addb $1, (%rdi)79; SLOW_INC-NEXT:    retq80entry:81  %0 = atomicrmw add ptr %p, i8 1 monotonic82  ret void83}84 85define void @add7(ptr nocapture %p) nounwind ssp {86; CHECK-LABEL: add7:87; CHECK:       # %bb.0: # %entry88; CHECK-NEXT:    lock addb $2, (%rdi)89; CHECK-NEXT:    retq90;91; SLOW_INC-LABEL: add7:92; SLOW_INC:       # %bb.0: # %entry93; SLOW_INC-NEXT:    lock addb $2, (%rdi)94; SLOW_INC-NEXT:    retq95entry:96  %0 = atomicrmw add ptr %p, i8 2 monotonic97  ret void98}99 100define void @add3(ptr nocapture %p, i32 %v) nounwind ssp {101; CHECK-LABEL: add3:102; CHECK:       # %bb.0: # %entry103; CHECK-NEXT:    lock addb %sil, (%rdi)104; CHECK-NEXT:    retq105;106; SLOW_INC-LABEL: add3:107; SLOW_INC:       # %bb.0: # %entry108; SLOW_INC-NEXT:    lock addb %sil, (%rdi)109; SLOW_INC-NEXT:    retq110entry:111  %0 = trunc i32 %v to i8		; <i8> [#uses=1]112  %1 = atomicrmw add ptr %p, i8 %0 monotonic113  ret void114}115 116define void @inc2(ptr nocapture %p) nounwind ssp {117; CHECK-LABEL: inc2:118; CHECK:       # %bb.0: # %entry119; CHECK-NEXT:    lock incw (%rdi)120; CHECK-NEXT:    retq121;122; SLOW_INC-LABEL: inc2:123; SLOW_INC:       # %bb.0: # %entry124; SLOW_INC-NEXT:    lock addw $1, (%rdi)125; SLOW_INC-NEXT:    retq126entry:127  %0 = atomicrmw add ptr %p, i16 1 monotonic128  ret void129}130 131define void @add6(ptr nocapture %p) nounwind ssp {132; CHECK-LABEL: add6:133; CHECK:       # %bb.0: # %entry134; CHECK-NEXT:    lock addw $2, (%rdi)135; CHECK-NEXT:    retq136;137; SLOW_INC-LABEL: add6:138; SLOW_INC:       # %bb.0: # %entry139; SLOW_INC-NEXT:    lock addw $2, (%rdi)140; SLOW_INC-NEXT:    retq141entry:142  %0 = atomicrmw add ptr %p, i16 2 monotonic143  ret void144}145 146define void @add2(ptr nocapture %p, i32 %v) nounwind ssp {147; CHECK-LABEL: add2:148; CHECK:       # %bb.0: # %entry149; CHECK-NEXT:    lock addw %si, (%rdi)150; CHECK-NEXT:    retq151;152; SLOW_INC-LABEL: add2:153; SLOW_INC:       # %bb.0: # %entry154; SLOW_INC-NEXT:    lock addw %si, (%rdi)155; SLOW_INC-NEXT:    retq156entry:157	%0 = trunc i32 %v to i16		; <i16> [#uses=1]158  %1 = atomicrmw add ptr %p, i16 %0 monotonic159  ret void160}161 162define void @inc1(ptr nocapture %p) nounwind ssp {163; CHECK-LABEL: inc1:164; CHECK:       # %bb.0: # %entry165; CHECK-NEXT:    lock incl (%rdi)166; CHECK-NEXT:    retq167;168; SLOW_INC-LABEL: inc1:169; SLOW_INC:       # %bb.0: # %entry170; SLOW_INC-NEXT:    lock addl $1, (%rdi)171; SLOW_INC-NEXT:    retq172entry:173  %0 = atomicrmw add ptr %p, i32 1 monotonic174  ret void175}176 177define void @add5(ptr nocapture %p) nounwind ssp {178; CHECK-LABEL: add5:179; CHECK:       # %bb.0: # %entry180; CHECK-NEXT:    lock addl $2, (%rdi)181; CHECK-NEXT:    retq182;183; SLOW_INC-LABEL: add5:184; SLOW_INC:       # %bb.0: # %entry185; SLOW_INC-NEXT:    lock addl $2, (%rdi)186; SLOW_INC-NEXT:    retq187entry:188  %0 = atomicrmw add ptr %p, i32 2 monotonic189  ret void190}191 192define void @add1(ptr nocapture %p, i32 %v) nounwind ssp {193; CHECK-LABEL: add1:194; CHECK:       # %bb.0: # %entry195; CHECK-NEXT:    lock addl %esi, (%rdi)196; CHECK-NEXT:    retq197;198; SLOW_INC-LABEL: add1:199; SLOW_INC:       # %bb.0: # %entry200; SLOW_INC-NEXT:    lock addl %esi, (%rdi)201; SLOW_INC-NEXT:    retq202entry:203  %0 = atomicrmw add ptr %p, i32 %v monotonic204  ret void205}206 207define void @dec4(ptr nocapture %p) nounwind ssp {208; CHECK-LABEL: dec4:209; CHECK:       # %bb.0: # %entry210; CHECK-NEXT:    lock decq (%rdi)211; CHECK-NEXT:    retq212;213; SLOW_INC-LABEL: dec4:214; SLOW_INC:       # %bb.0: # %entry215; SLOW_INC-NEXT:    lock subq $1, (%rdi)216; SLOW_INC-NEXT:    retq217entry:218  %0 = atomicrmw sub ptr %p, i64 1 monotonic219  ret void220}221 222define void @sub8(ptr nocapture %p) nounwind ssp {223; CHECK-LABEL: sub8:224; CHECK:       # %bb.0: # %entry225; CHECK-NEXT:    lock subq $2, (%rdi)226; CHECK-NEXT:    retq227;228; SLOW_INC-LABEL: sub8:229; SLOW_INC:       # %bb.0: # %entry230; SLOW_INC-NEXT:    lock subq $2, (%rdi)231; SLOW_INC-NEXT:    retq232entry:233  %0 = atomicrmw sub ptr %p, i64 2 monotonic234  ret void235}236 237define void @sub4(ptr nocapture %p, i32 %v) nounwind ssp {238; CHECK-LABEL: sub4:239; CHECK:       # %bb.0: # %entry240; CHECK-NEXT:    movslq %esi, %rax241; CHECK-NEXT:    lock subq %rax, (%rdi)242; CHECK-NEXT:    retq243;244; SLOW_INC-LABEL: sub4:245; SLOW_INC:       # %bb.0: # %entry246; SLOW_INC-NEXT:    movslq %esi, %rax247; SLOW_INC-NEXT:    lock subq %rax, (%rdi)248; SLOW_INC-NEXT:    retq249entry:250	%0 = sext i32 %v to i64		; <i64> [#uses=1]251  %1 = atomicrmw sub ptr %p, i64 %0 monotonic252  ret void253}254 255define void @dec3(ptr nocapture %p) nounwind ssp {256; CHECK-LABEL: dec3:257; CHECK:       # %bb.0: # %entry258; CHECK-NEXT:    lock decb (%rdi)259; CHECK-NEXT:    retq260;261; SLOW_INC-LABEL: dec3:262; SLOW_INC:       # %bb.0: # %entry263; SLOW_INC-NEXT:    lock subb $1, (%rdi)264; SLOW_INC-NEXT:    retq265entry:266  %0 = atomicrmw sub ptr %p, i8 1 monotonic267  ret void268}269 270define void @sub7(ptr nocapture %p) nounwind ssp {271; CHECK-LABEL: sub7:272; CHECK:       # %bb.0: # %entry273; CHECK-NEXT:    lock subb $2, (%rdi)274; CHECK-NEXT:    retq275;276; SLOW_INC-LABEL: sub7:277; SLOW_INC:       # %bb.0: # %entry278; SLOW_INC-NEXT:    lock subb $2, (%rdi)279; SLOW_INC-NEXT:    retq280entry:281  %0 = atomicrmw sub ptr %p, i8 2 monotonic282  ret void283}284 285define void @sub3(ptr nocapture %p, i32 %v) nounwind ssp {286; CHECK-LABEL: sub3:287; CHECK:       # %bb.0: # %entry288; CHECK-NEXT:    lock subb %sil, (%rdi)289; CHECK-NEXT:    retq290;291; SLOW_INC-LABEL: sub3:292; SLOW_INC:       # %bb.0: # %entry293; SLOW_INC-NEXT:    lock subb %sil, (%rdi)294; SLOW_INC-NEXT:    retq295entry:296	%0 = trunc i32 %v to i8		; <i8> [#uses=1]297  %1 = atomicrmw sub ptr %p, i8 %0 monotonic298  ret void299}300 301define void @dec2(ptr nocapture %p) nounwind ssp {302; CHECK-LABEL: dec2:303; CHECK:       # %bb.0: # %entry304; CHECK-NEXT:    lock decw (%rdi)305; CHECK-NEXT:    retq306;307; SLOW_INC-LABEL: dec2:308; SLOW_INC:       # %bb.0: # %entry309; SLOW_INC-NEXT:    lock subw $1, (%rdi)310; SLOW_INC-NEXT:    retq311entry:312  %0 = atomicrmw sub ptr %p, i16 1 monotonic313  ret void314}315 316define void @sub6(ptr nocapture %p) nounwind ssp {317; CHECK-LABEL: sub6:318; CHECK:       # %bb.0: # %entry319; CHECK-NEXT:    lock subw $2, (%rdi)320; CHECK-NEXT:    retq321;322; SLOW_INC-LABEL: sub6:323; SLOW_INC:       # %bb.0: # %entry324; SLOW_INC-NEXT:    lock subw $2, (%rdi)325; SLOW_INC-NEXT:    retq326entry:327  %0 = atomicrmw sub ptr %p, i16 2 monotonic328  ret void329}330 331define void @sub2(ptr nocapture %p, i32 %v) nounwind ssp {332; CHECK-LABEL: sub2:333; CHECK:       # %bb.0: # %entry334; CHECK-NEXT:    lock subw %si, (%rdi)335; CHECK-NEXT:    retq336;337; SLOW_INC-LABEL: sub2:338; SLOW_INC:       # %bb.0: # %entry339; SLOW_INC-NEXT:    lock subw %si, (%rdi)340; SLOW_INC-NEXT:    retq341entry:342	%0 = trunc i32 %v to i16		; <i16> [#uses=1]343  %1 = atomicrmw sub ptr %p, i16 %0 monotonic344  ret void345}346 347define void @dec1(ptr nocapture %p) nounwind ssp {348; CHECK-LABEL: dec1:349; CHECK:       # %bb.0: # %entry350; CHECK-NEXT:    lock decl (%rdi)351; CHECK-NEXT:    retq352;353; SLOW_INC-LABEL: dec1:354; SLOW_INC:       # %bb.0: # %entry355; SLOW_INC-NEXT:    lock subl $1, (%rdi)356; SLOW_INC-NEXT:    retq357entry:358  %0 = atomicrmw sub ptr %p, i32 1 monotonic359  ret void360}361 362define void @sub5(ptr nocapture %p) nounwind ssp {363; CHECK-LABEL: sub5:364; CHECK:       # %bb.0: # %entry365; CHECK-NEXT:    lock subl $2, (%rdi)366; CHECK-NEXT:    retq367;368; SLOW_INC-LABEL: sub5:369; SLOW_INC:       # %bb.0: # %entry370; SLOW_INC-NEXT:    lock subl $2, (%rdi)371; SLOW_INC-NEXT:    retq372entry:373  %0 = atomicrmw sub ptr %p, i32 2 monotonic374  ret void375}376