brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · bb26c8f Raw
274 lines · plain
1; RUN: llc < %s -O0 -mtriple=x86_64-- -mcpu=corei7 -verify-machineinstrs | FileCheck %s --check-prefix X642; RUN: llc < %s -O0 -mtriple=i686-- -mcpu=corei7 -verify-machineinstrs | FileCheck %s --check-prefix X323 4@sc8 = external dso_local global i85 6define void @atomic_fetch_add8() nounwind {7; X64-LABEL:   atomic_fetch_add8:8; X32-LABEL:   atomic_fetch_add8:9entry:10; 32-bit11  %t1 = atomicrmw add  ptr @sc8, i8 1 acquire12; X64:       lock13; X64:       incb14; X32:       lock15; X32:       incb16  %t2 = atomicrmw add  ptr @sc8, i8 3 acquire17; X64:       lock18; X64:       addb $319; X32:       lock20; X32:       addb $321  %t3 = atomicrmw add  ptr @sc8, i8 5 acquire22; X64:       lock23; X64:       xaddb24; X32:       lock25; X32:       xaddb26  %t4 = atomicrmw add  ptr @sc8, i8 %t3 acquire27; X64:       lock28; X64:       addb29; X32:       lock30; X32:       addb31  ret void32; X64:       ret33; X32:       ret34}35 36define void @atomic_fetch_sub8() nounwind {37; X64-LABEL:   atomic_fetch_sub8:38; X32-LABEL:   atomic_fetch_sub8:39  %t1 = atomicrmw sub  ptr @sc8, i8 1 acquire40; X64:       lock41; X64:       decb42; X32:       lock43; X32:       decb44  %t2 = atomicrmw sub  ptr @sc8, i8 3 acquire45; X64:       lock46; X64:       subb $347; X32:       lock48; X32:       subb $349  %t3 = atomicrmw sub  ptr @sc8, i8 5 acquire50; X64:       lock51; X64:       xaddb52; X32:       lock53; X32:       xaddb54  %t4 = atomicrmw sub  ptr @sc8, i8 %t3 acquire55; X64:       lock56; X64:       subb57; X32:       lock58; X32:       subb59  ret void60; X64:       ret61; X32:       ret62}63 64define void @atomic_fetch_and8() nounwind {65; X64-LABEL:   atomic_fetch_and8:66; X32-LABEL:   atomic_fetch_and8:67  %t1 = atomicrmw and  ptr @sc8, i8 3 acquire68; X64:       lock69; X64:       andb $370; X32:       lock71; X32:       andb $372  %t2 = atomicrmw and  ptr @sc8, i8 5 acquire73; X64:       andb74; X64:       lock75; X64:       cmpxchgb76; X32:       andb77; X32:       lock78; X32:       cmpxchgb79  %t3 = atomicrmw and  ptr @sc8, i8 %t2 acquire80; X64:       lock81; X64:       andb82; X32:       lock83; X32:       andb84  ret void85; X64:       ret86; X32:       ret87}88 89define void @atomic_fetch_or8() nounwind {90; X64-LABEL:   atomic_fetch_or8:91; X32-LABEL:   atomic_fetch_or8:92  %t1 = atomicrmw or   ptr @sc8, i8 3 acquire93; X64:       lock94; X64:       orb $395; X32:       lock96; X32:       orb $397  %t2 = atomicrmw or   ptr @sc8, i8 5 acquire98; X64:       orb99; X64:       lock100; X64:       cmpxchgb101; X32:       orb102; X32:       lock103; X32:       cmpxchgb104  %t3 = atomicrmw or   ptr @sc8, i8 %t2 acquire105; X64:       lock106; X64:       orb107; X32:       lock108; X32:       orb109  ret void110; X64:       ret111; X32:       ret112}113 114define void @atomic_fetch_xor8() nounwind {115; X64-LABEL:   atomic_fetch_xor8:116; X32-LABEL:   atomic_fetch_xor8:117  %t1 = atomicrmw xor  ptr @sc8, i8 3 acquire118; X64:       lock119; X64:       xorb $3120; X32:       lock121; X32:       xorb $3122  %t2 = atomicrmw xor  ptr @sc8, i8 5 acquire123; X64:       xorb124; X64:       lock125; X64:       cmpxchgb126; X32:       xorb127; X32:       lock128; X32:       cmpxchgb129  %t3 = atomicrmw xor  ptr @sc8, i8 %t2 acquire130; X64:       lock131; X64:       xorb132; X32:       lock133; X32:       xorb134  ret void135; X64:       ret136; X32:       ret137}138 139define void @atomic_fetch_nand8(i8 %x) nounwind {140; X64-LABEL:   atomic_fetch_nand8:141; X32-LABEL:   atomic_fetch_nand8:142  %t1 = atomicrmw nand ptr @sc8, i8 %x acquire143; X64:       andb144; X64:       notb145; X64:       lock146; X64:       cmpxchgb147; X32:       andb148; X32:       notb149; X32:       lock150; X32:       cmpxchgb151  ret void152; X64:       ret153; X32:       ret154}155 156define void @atomic_fetch_max8(i8 %x) nounwind {157; X64-LABEL:   atomic_fetch_max8:158; X32-LABEL:   atomic_fetch_max8:159  %t1 = atomicrmw max  ptr @sc8, i8 %x acquire160; X64:       movb161; X64:       movb162; X64:       subb163; X64:       lock164; X64:       cmpxchgb165 166; X32:       movb167; X32:       movb168; X32:       subb169; X32:       lock170; X32:       cmpxchgb171  ret void172; X64:       ret173; X32:       ret174}175 176define void @atomic_fetch_min8(i8 %x) nounwind {177; X64-LABEL:   atomic_fetch_min8:178; X32-LABEL:   atomic_fetch_min8:179  %t1 = atomicrmw min  ptr @sc8, i8 %x acquire180; X64:       movb181; X64:       movb182; X64:       subb183; X64:       lock184; X64:       cmpxchgb185 186; X32:       movb187; X32:       movb188; X32:       subb189; X32:       lock190; X32:       cmpxchgb191  ret void192; X64:       ret193; X32:       ret194}195 196define void @atomic_fetch_umax8(i8 %x) nounwind {197; X64-LABEL:   atomic_fetch_umax8:198; X32-LABEL:   atomic_fetch_umax8:199  %t1 = atomicrmw umax ptr @sc8, i8 %x acquire200; X64:       movb201; X64:       movb202; X64:       subb203; X64:       lock204; X64:       cmpxchgb205 206; X32:       movb207; X32:       movb208; X32:       subb209; X32:       lock210; X32:       cmpxchgb211  ret void212; X64:       ret213; X32:       ret214}215 216define void @atomic_fetch_umin8(i8 %x) nounwind {217; X64-LABEL:   atomic_fetch_umin8:218; X32-LABEL:   atomic_fetch_umin8:219  %t1 = atomicrmw umin ptr @sc8, i8 %x acquire220; X64:       movb221; X64:       movb222; X64:       subb223; X64:       lock224; X64:       cmpxchgb225 226; X32:       movb227; X32:       movb228; X32:       subb229; X32:       lock230; X32:       cmpxchgb231  ret void232; X64:       ret233; X32:       ret234}235 236define void @atomic_fetch_cmpxchg8() nounwind {237; X64-LABEL:   atomic_fetch_cmpxchg8:238; X32-LABEL:   atomic_fetch_cmpxchg8:239  %t1 = cmpxchg ptr @sc8, i8 0, i8 1 acquire acquire240; X64:       lock241; X64:       cmpxchgb242; X32:       lock243; X32:       cmpxchgb244  ret void245; X64:       ret246; X32:       ret247}248 249define void @atomic_fetch_store8(i8 %x) nounwind {250; X64-LABEL:   atomic_fetch_store8:251; X32-LABEL:   atomic_fetch_store8:252  store atomic i8 %x, ptr @sc8 release, align 4253; X64-NOT:   lock254; X64:       movb255; X32-NOT:   lock256; X32:       movb257  ret void258; X64:       ret259; X32:       ret260}261 262define void @atomic_fetch_swap8(i8 %x) nounwind {263; X64-LABEL:   atomic_fetch_swap8:264; X32-LABEL:   atomic_fetch_swap8:265  %t1 = atomicrmw xchg ptr @sc8, i8 %x acquire266; X64-NOT:   lock267; X64:       xchgb268; X32-NOT:   lock269; X32:       xchgb270  ret void271; X64:       ret272; X32:       ret273}274