brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · e0f40d1 Raw
341 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s3; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=znver1 | FileCheck --check-prefix=CHECK-AMD %s4 5; Check that we get a fast sequence of nops on each platform.6 7define void @nop_test() {8; CHECK-LABEL: nop_test:9; CHECK:       ## %bb.0: ## %entry10; CHECK-NEXT:    pushq %rbp11; CHECK-NEXT:    .cfi_def_cfa_offset 1612; CHECK-NEXT:    .cfi_offset %rbp, -1613; CHECK-NEXT:    movq %rsp, %rbp14; CHECK-NEXT:    .cfi_def_cfa_register %rbp15; CHECK-NEXT:  Ltmp0:16; CHECK-NEXT:  Ltmp1:17; CHECK-NEXT:    nop18; CHECK-NEXT:  Ltmp2:19; CHECK-NEXT:    xchgw %ax, %ax20; CHECK-NEXT:  Ltmp3:21; CHECK-NEXT:    nopl (%rax)22; CHECK-NEXT:  Ltmp4:23; CHECK-NEXT:    nopl 8(%rax)24; CHECK-NEXT:  Ltmp5:25; CHECK-NEXT:    nopl 8(%rax,%rax)26; CHECK-NEXT:  Ltmp6:27; CHECK-NEXT:    nopw 8(%rax,%rax)28; CHECK-NEXT:  Ltmp7:29; CHECK-NEXT:    nopl 512(%rax)30; CHECK-NEXT:  Ltmp8:31; CHECK-NEXT:    nopl 512(%rax,%rax)32; CHECK-NEXT:  Ltmp9:33; CHECK-NEXT:    nopw 512(%rax,%rax)34; CHECK-NEXT:  Ltmp10:35; CHECK-NEXT:    nopw %cs:512(%rax,%rax)36; CHECK-NEXT:  Ltmp11:37; CHECK-NEXT:    nopw %cs:512(%rax,%rax)38; CHECK-NEXT:    nop39; CHECK-NEXT:  Ltmp12:40; CHECK-NEXT:    nopw %cs:512(%rax,%rax)41; CHECK-NEXT:    xchgw %ax, %ax42; CHECK-NEXT:  Ltmp13:43; CHECK-NEXT:    nopw %cs:512(%rax,%rax)44; CHECK-NEXT:    nopl (%rax)45; CHECK-NEXT:  Ltmp14:46; CHECK-NEXT:    nopw %cs:512(%rax,%rax)47; CHECK-NEXT:    nopl 8(%rax)48; CHECK-NEXT:  Ltmp15:49; CHECK-NEXT:    nopw %cs:512(%rax,%rax)50; CHECK-NEXT:    nopl 8(%rax,%rax)51; CHECK-NEXT:  Ltmp16:52; CHECK-NEXT:    nopw %cs:512(%rax,%rax)53; CHECK-NEXT:    nopw 8(%rax,%rax)54; CHECK-NEXT:  Ltmp17:55; CHECK-NEXT:    nopw %cs:512(%rax,%rax)56; CHECK-NEXT:    nopl 512(%rax)57; CHECK-NEXT:  Ltmp18:58; CHECK-NEXT:    nopw %cs:512(%rax,%rax)59; CHECK-NEXT:    nopl 512(%rax,%rax)60; CHECK-NEXT:  Ltmp19:61; CHECK-NEXT:    nopw %cs:512(%rax,%rax)62; CHECK-NEXT:    nopw 512(%rax,%rax)63; CHECK-NEXT:  Ltmp20:64; CHECK-NEXT:    nopw %cs:512(%rax,%rax)65; CHECK-NEXT:    nopw %cs:512(%rax,%rax)66; CHECK-NEXT:  Ltmp21:67; CHECK-NEXT:    nopw %cs:512(%rax,%rax)68; CHECK-NEXT:    nopw %cs:512(%rax,%rax)69; CHECK-NEXT:    nop70; CHECK-NEXT:  Ltmp22:71; CHECK-NEXT:    nopw %cs:512(%rax,%rax)72; CHECK-NEXT:    nopw %cs:512(%rax,%rax)73; CHECK-NEXT:    xchgw %ax, %ax74; CHECK-NEXT:  Ltmp23:75; CHECK-NEXT:    nopw %cs:512(%rax,%rax)76; CHECK-NEXT:    nopw %cs:512(%rax,%rax)77; CHECK-NEXT:    nopl (%rax)78; CHECK-NEXT:  Ltmp24:79; CHECK-NEXT:    nopw %cs:512(%rax,%rax)80; CHECK-NEXT:    nopw %cs:512(%rax,%rax)81; CHECK-NEXT:    nopl 8(%rax)82; CHECK-NEXT:  Ltmp25:83; CHECK-NEXT:    nopw %cs:512(%rax,%rax)84; CHECK-NEXT:    nopw %cs:512(%rax,%rax)85; CHECK-NEXT:    nopl 8(%rax,%rax)86; CHECK-NEXT:  Ltmp26:87; CHECK-NEXT:    nopw %cs:512(%rax,%rax)88; CHECK-NEXT:    nopw %cs:512(%rax,%rax)89; CHECK-NEXT:    nopw 8(%rax,%rax)90; CHECK-NEXT:  Ltmp27:91; CHECK-NEXT:    nopw %cs:512(%rax,%rax)92; CHECK-NEXT:    nopw %cs:512(%rax,%rax)93; CHECK-NEXT:    nopl 512(%rax)94; CHECK-NEXT:  Ltmp28:95; CHECK-NEXT:    nopw %cs:512(%rax,%rax)96; CHECK-NEXT:    nopw %cs:512(%rax,%rax)97; CHECK-NEXT:    nopl 512(%rax,%rax)98; CHECK-NEXT:  Ltmp29:99; CHECK-NEXT:    nopw %cs:512(%rax,%rax)100; CHECK-NEXT:    nopw %cs:512(%rax,%rax)101; CHECK-NEXT:    nopw 512(%rax,%rax)102; CHECK-NEXT:  Ltmp30:103; CHECK-NEXT:    nopw %cs:512(%rax,%rax)104; CHECK-NEXT:    nopw %cs:512(%rax,%rax)105; CHECK-NEXT:    nopw %cs:512(%rax,%rax)106; CHECK-NEXT:  Ltmp31:107; CHECK-NEXT:    popq %rbp108; CHECK-NEXT:    retq109;110; CHECK-AMD-LABEL: nop_test:111; CHECK-AMD:       ## %bb.0: ## %entry112; CHECK-AMD-NEXT:    pushq %rbp113; CHECK-AMD-NEXT:    .cfi_def_cfa_offset 16114; CHECK-AMD-NEXT:    .cfi_offset %rbp, -16115; CHECK-AMD-NEXT:    movq %rsp, %rbp116; CHECK-AMD-NEXT:    .cfi_def_cfa_register %rbp117; CHECK-AMD-NEXT:  Ltmp0:118; CHECK-AMD-NEXT:  Ltmp1:119; CHECK-AMD-NEXT:    nop120; CHECK-AMD-NEXT:  Ltmp2:121; CHECK-AMD-NEXT:    xchgw %ax, %ax122; CHECK-AMD-NEXT:  Ltmp3:123; CHECK-AMD-NEXT:    nopl (%rax)124; CHECK-AMD-NEXT:  Ltmp4:125; CHECK-AMD-NEXT:    nopl 8(%rax)126; CHECK-AMD-NEXT:  Ltmp5:127; CHECK-AMD-NEXT:    nopl 8(%rax,%rax)128; CHECK-AMD-NEXT:  Ltmp6:129; CHECK-AMD-NEXT:    nopw 8(%rax,%rax)130; CHECK-AMD-NEXT:  Ltmp7:131; CHECK-AMD-NEXT:    nopl 512(%rax)132; CHECK-AMD-NEXT:  Ltmp8:133; CHECK-AMD-NEXT:    nopl 512(%rax,%rax)134; CHECK-AMD-NEXT:  Ltmp9:135; CHECK-AMD-NEXT:    nopw 512(%rax,%rax)136; CHECK-AMD-NEXT:  Ltmp10:137; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)138; CHECK-AMD-NEXT:  Ltmp11:139; CHECK-AMD-NEXT:    .byte 102140; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)141; CHECK-AMD-NEXT:  Ltmp12:142; CHECK-AMD-NEXT:    .byte 102143; CHECK-AMD-NEXT:    .byte 102144; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)145; CHECK-AMD-NEXT:  Ltmp13:146; CHECK-AMD-NEXT:    .byte 102147; CHECK-AMD-NEXT:    .byte 102148; CHECK-AMD-NEXT:    .byte 102149; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)150; CHECK-AMD-NEXT:  Ltmp14:151; CHECK-AMD-NEXT:    .byte 102152; CHECK-AMD-NEXT:    .byte 102153; CHECK-AMD-NEXT:    .byte 102154; CHECK-AMD-NEXT:    .byte 102155; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)156; CHECK-AMD-NEXT:  Ltmp15:157; CHECK-AMD-NEXT:    .byte 102158; CHECK-AMD-NEXT:    .byte 102159; CHECK-AMD-NEXT:    .byte 102160; CHECK-AMD-NEXT:    .byte 102161; CHECK-AMD-NEXT:    .byte 102162; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)163; CHECK-AMD-NEXT:  Ltmp16:164; CHECK-AMD-NEXT:    .byte 102165; CHECK-AMD-NEXT:    .byte 102166; CHECK-AMD-NEXT:    .byte 102167; CHECK-AMD-NEXT:    .byte 102168; CHECK-AMD-NEXT:    .byte 102169; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)170; CHECK-AMD-NEXT:    nop171; CHECK-AMD-NEXT:  Ltmp17:172; CHECK-AMD-NEXT:    .byte 102173; CHECK-AMD-NEXT:    .byte 102174; CHECK-AMD-NEXT:    .byte 102175; CHECK-AMD-NEXT:    .byte 102176; CHECK-AMD-NEXT:    .byte 102177; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)178; CHECK-AMD-NEXT:    xchgw %ax, %ax179; CHECK-AMD-NEXT:  Ltmp18:180; CHECK-AMD-NEXT:    .byte 102181; CHECK-AMD-NEXT:    .byte 102182; CHECK-AMD-NEXT:    .byte 102183; CHECK-AMD-NEXT:    .byte 102184; CHECK-AMD-NEXT:    .byte 102185; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)186; CHECK-AMD-NEXT:    nopl (%rax)187; CHECK-AMD-NEXT:  Ltmp19:188; CHECK-AMD-NEXT:    .byte 102189; CHECK-AMD-NEXT:    .byte 102190; CHECK-AMD-NEXT:    .byte 102191; CHECK-AMD-NEXT:    .byte 102192; CHECK-AMD-NEXT:    .byte 102193; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)194; CHECK-AMD-NEXT:    nopl 8(%rax)195; CHECK-AMD-NEXT:  Ltmp20:196; CHECK-AMD-NEXT:    .byte 102197; CHECK-AMD-NEXT:    .byte 102198; CHECK-AMD-NEXT:    .byte 102199; CHECK-AMD-NEXT:    .byte 102200; CHECK-AMD-NEXT:    .byte 102201; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)202; CHECK-AMD-NEXT:    nopl 8(%rax,%rax)203; CHECK-AMD-NEXT:  Ltmp21:204; CHECK-AMD-NEXT:    .byte 102205; CHECK-AMD-NEXT:    .byte 102206; CHECK-AMD-NEXT:    .byte 102207; CHECK-AMD-NEXT:    .byte 102208; CHECK-AMD-NEXT:    .byte 102209; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)210; CHECK-AMD-NEXT:    nopw 8(%rax,%rax)211; CHECK-AMD-NEXT:  Ltmp22:212; CHECK-AMD-NEXT:    .byte 102213; CHECK-AMD-NEXT:    .byte 102214; CHECK-AMD-NEXT:    .byte 102215; CHECK-AMD-NEXT:    .byte 102216; CHECK-AMD-NEXT:    .byte 102217; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)218; CHECK-AMD-NEXT:    nopl 512(%rax)219; CHECK-AMD-NEXT:  Ltmp23:220; CHECK-AMD-NEXT:    .byte 102221; CHECK-AMD-NEXT:    .byte 102222; CHECK-AMD-NEXT:    .byte 102223; CHECK-AMD-NEXT:    .byte 102224; CHECK-AMD-NEXT:    .byte 102225; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)226; CHECK-AMD-NEXT:    nopl 512(%rax,%rax)227; CHECK-AMD-NEXT:  Ltmp24:228; CHECK-AMD-NEXT:    .byte 102229; CHECK-AMD-NEXT:    .byte 102230; CHECK-AMD-NEXT:    .byte 102231; CHECK-AMD-NEXT:    .byte 102232; CHECK-AMD-NEXT:    .byte 102233; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)234; CHECK-AMD-NEXT:    nopw 512(%rax,%rax)235; CHECK-AMD-NEXT:  Ltmp25:236; CHECK-AMD-NEXT:    .byte 102237; CHECK-AMD-NEXT:    .byte 102238; CHECK-AMD-NEXT:    .byte 102239; CHECK-AMD-NEXT:    .byte 102240; CHECK-AMD-NEXT:    .byte 102241; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)242; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)243; CHECK-AMD-NEXT:  Ltmp26:244; CHECK-AMD-NEXT:    .byte 102245; CHECK-AMD-NEXT:    .byte 102246; CHECK-AMD-NEXT:    .byte 102247; CHECK-AMD-NEXT:    .byte 102248; CHECK-AMD-NEXT:    .byte 102249; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)250; CHECK-AMD-NEXT:    .byte 102251; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)252; CHECK-AMD-NEXT:  Ltmp27:253; CHECK-AMD-NEXT:    .byte 102254; CHECK-AMD-NEXT:    .byte 102255; CHECK-AMD-NEXT:    .byte 102256; CHECK-AMD-NEXT:    .byte 102257; CHECK-AMD-NEXT:    .byte 102258; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)259; CHECK-AMD-NEXT:    .byte 102260; CHECK-AMD-NEXT:    .byte 102261; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)262; CHECK-AMD-NEXT:  Ltmp28:263; CHECK-AMD-NEXT:    .byte 102264; CHECK-AMD-NEXT:    .byte 102265; CHECK-AMD-NEXT:    .byte 102266; CHECK-AMD-NEXT:    .byte 102267; CHECK-AMD-NEXT:    .byte 102268; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)269; CHECK-AMD-NEXT:    .byte 102270; CHECK-AMD-NEXT:    .byte 102271; CHECK-AMD-NEXT:    .byte 102272; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)273; CHECK-AMD-NEXT:  Ltmp29:274; CHECK-AMD-NEXT:    .byte 102275; CHECK-AMD-NEXT:    .byte 102276; CHECK-AMD-NEXT:    .byte 102277; CHECK-AMD-NEXT:    .byte 102278; CHECK-AMD-NEXT:    .byte 102279; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)280; CHECK-AMD-NEXT:    .byte 102281; CHECK-AMD-NEXT:    .byte 102282; CHECK-AMD-NEXT:    .byte 102283; CHECK-AMD-NEXT:    .byte 102284; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)285; CHECK-AMD-NEXT:  Ltmp30:286; CHECK-AMD-NEXT:    .byte 102287; CHECK-AMD-NEXT:    .byte 102288; CHECK-AMD-NEXT:    .byte 102289; CHECK-AMD-NEXT:    .byte 102290; CHECK-AMD-NEXT:    .byte 102291; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)292; CHECK-AMD-NEXT:    .byte 102293; CHECK-AMD-NEXT:    .byte 102294; CHECK-AMD-NEXT:    .byte 102295; CHECK-AMD-NEXT:    .byte 102296; CHECK-AMD-NEXT:    .byte 102297; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)298; CHECK-AMD-NEXT:  Ltmp31:299; CHECK-AMD-NEXT:    popq %rbp300; CHECK-AMD-NEXT:    retq301entry:302  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)303  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  1, i32  1)304  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)305  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  3, i32  3)306  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)307  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  5, i32  5)308  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)309  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  7, i32  7)310  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)311  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  9, i32  9)312  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)313  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 11, i32 11)314  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)315  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 13, i32 13)316  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)317  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 15)318  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)319  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 17)320  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)321  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 19, i32 19)322  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)323  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 21, i32 21)324  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)325  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 23, i32 23)326  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)327  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 25, i32 25)328  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)329  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 27, i32 27)330  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)331  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 29, i32 29)332  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)333; Add an extra stackmap with a zero-length shadow to thwart the shadow334; optimization. This will force all 15 bytes of the previous shadow to be335; padded with nops.336  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)337  ret void338}339 340declare void @llvm.experimental.stackmap(i64, i32, ...)341