brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.7 KiB · 2fb4410 Raw
380 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s3 4define i1000 @square(i1000 %A) nounwind {5; CHECK-LABEL: square:6; CHECK:       # %bb.0:7; CHECK-NEXT:    pushq %rbp8; CHECK-NEXT:    pushq %r159; CHECK-NEXT:    pushq %r1410; CHECK-NEXT:    pushq %r1311; CHECK-NEXT:    pushq %r1212; CHECK-NEXT:    pushq %rbx13; CHECK-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill14; CHECK-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill15; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi16; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rbx17; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1518; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1419; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %r1220; CHECK-NEXT:    bswapq %r1221; CHECK-NEXT:    movq %r12, %r1022; CHECK-NEXT:    shrq $4, %r1023; CHECK-NEXT:    movabsq $1085102592571150095, %rsi # imm = 0xF0F0F0F0F0F0F0F24; CHECK-NEXT:    andq %rsi, %r1025; CHECK-NEXT:    andq %rsi, %r1226; CHECK-NEXT:    shlq $4, %r1227; CHECK-NEXT:    orq %r10, %r1228; CHECK-NEXT:    movabsq $3689348814741910323, %r10 # imm = 0x333333333333333329; CHECK-NEXT:    movq %r12, %r1330; CHECK-NEXT:    andq %r10, %r1331; CHECK-NEXT:    shrq $2, %r1232; CHECK-NEXT:    andq %r10, %r1233; CHECK-NEXT:    leaq (%r12,%r13,4), %r1234; CHECK-NEXT:    movabsq $6148914691230924800, %r13 # imm = 0x555555555500000035; CHECK-NEXT:    movq %r12, %rbp36; CHECK-NEXT:    andq %r13, %rbp37; CHECK-NEXT:    shrq %r1238; CHECK-NEXT:    andq %r13, %r1239; CHECK-NEXT:    leaq (%r12,%rbp,2), %rax40; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill41; CHECK-NEXT:    bswapq %r1442; CHECK-NEXT:    movq %r14, %r1243; CHECK-NEXT:    shrq $4, %r1244; CHECK-NEXT:    andq %rsi, %r1245; CHECK-NEXT:    andq %rsi, %r1446; CHECK-NEXT:    shlq $4, %r1447; CHECK-NEXT:    orq %r12, %r1448; CHECK-NEXT:    movq %r14, %r1249; CHECK-NEXT:    andq %r10, %r1250; CHECK-NEXT:    shrq $2, %r1451; CHECK-NEXT:    andq %r10, %r1452; CHECK-NEXT:    leaq (%r14,%r12,4), %r1253; CHECK-NEXT:    movabsq $6148914691236517205, %r14 # imm = 0x555555555555555554; CHECK-NEXT:    movq %r12, %r1355; CHECK-NEXT:    andq %r14, %r1356; CHECK-NEXT:    shrq %r1257; CHECK-NEXT:    andq %r14, %r1258; CHECK-NEXT:    leaq (%r12,%r13,2), %rax59; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill60; CHECK-NEXT:    bswapq %r1561; CHECK-NEXT:    movq %r15, %r1262; CHECK-NEXT:    shrq $4, %r1263; CHECK-NEXT:    andq %rsi, %r1264; CHECK-NEXT:    andq %rsi, %r1565; CHECK-NEXT:    shlq $4, %r1566; CHECK-NEXT:    orq %r12, %r1567; CHECK-NEXT:    movq %r15, %r1268; CHECK-NEXT:    andq %r10, %r1269; CHECK-NEXT:    shrq $2, %r1570; CHECK-NEXT:    andq %r10, %r1571; CHECK-NEXT:    leaq (%r15,%r12,4), %r1572; CHECK-NEXT:    movq %r15, %r1273; CHECK-NEXT:    andq %r14, %r1274; CHECK-NEXT:    shrq %r1575; CHECK-NEXT:    andq %r14, %r1576; CHECK-NEXT:    leaq (%r15,%r12,2), %rax77; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill78; CHECK-NEXT:    bswapq %rbx79; CHECK-NEXT:    movq %rbx, %r1580; CHECK-NEXT:    shrq $4, %r1581; CHECK-NEXT:    andq %rsi, %r1582; CHECK-NEXT:    andq %rsi, %rbx83; CHECK-NEXT:    shlq $4, %rbx84; CHECK-NEXT:    orq %r15, %rbx85; CHECK-NEXT:    movq %rbx, %r1586; CHECK-NEXT:    andq %r10, %r1587; CHECK-NEXT:    shrq $2, %rbx88; CHECK-NEXT:    andq %r10, %rbx89; CHECK-NEXT:    leaq (%rbx,%r15,4), %rbx90; CHECK-NEXT:    movq %rbx, %r1591; CHECK-NEXT:    andq %r14, %r1592; CHECK-NEXT:    shrq %rbx93; CHECK-NEXT:    andq %r14, %rbx94; CHECK-NEXT:    leaq (%rbx,%r15,2), %rax95; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill96; CHECK-NEXT:    bswapq %rdi97; CHECK-NEXT:    movq %rdi, %rbx98; CHECK-NEXT:    shrq $4, %rbx99; CHECK-NEXT:    andq %rsi, %rbx100; CHECK-NEXT:    andq %rsi, %rdi101; CHECK-NEXT:    shlq $4, %rdi102; CHECK-NEXT:    orq %rbx, %rdi103; CHECK-NEXT:    movq %rdi, %rbx104; CHECK-NEXT:    andq %r10, %rbx105; CHECK-NEXT:    shrq $2, %rdi106; CHECK-NEXT:    andq %r10, %rdi107; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi108; CHECK-NEXT:    movq %rdi, %rbx109; CHECK-NEXT:    andq %r14, %rbx110; CHECK-NEXT:    shrq %rdi111; CHECK-NEXT:    andq %r14, %rdi112; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax113; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill114; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi115; CHECK-NEXT:    bswapq %rdi116; CHECK-NEXT:    movq %rdi, %rbx117; CHECK-NEXT:    shrq $4, %rbx118; CHECK-NEXT:    andq %rsi, %rbx119; CHECK-NEXT:    andq %rsi, %rdi120; CHECK-NEXT:    shlq $4, %rdi121; CHECK-NEXT:    orq %rbx, %rdi122; CHECK-NEXT:    movq %rdi, %rbx123; CHECK-NEXT:    andq %r10, %rbx124; CHECK-NEXT:    shrq $2, %rdi125; CHECK-NEXT:    andq %r10, %rdi126; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi127; CHECK-NEXT:    movq %rdi, %rbx128; CHECK-NEXT:    andq %r14, %rbx129; CHECK-NEXT:    shrq %rdi130; CHECK-NEXT:    andq %r14, %rdi131; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax132; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill133; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi134; CHECK-NEXT:    bswapq %rdi135; CHECK-NEXT:    movq %rdi, %rbx136; CHECK-NEXT:    shrq $4, %rbx137; CHECK-NEXT:    andq %rsi, %rbx138; CHECK-NEXT:    andq %rsi, %rdi139; CHECK-NEXT:    shlq $4, %rdi140; CHECK-NEXT:    orq %rbx, %rdi141; CHECK-NEXT:    movq %rdi, %rbx142; CHECK-NEXT:    andq %r10, %rbx143; CHECK-NEXT:    shrq $2, %rdi144; CHECK-NEXT:    andq %r10, %rdi145; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi146; CHECK-NEXT:    movq %rdi, %rbx147; CHECK-NEXT:    andq %r14, %rbx148; CHECK-NEXT:    shrq %rdi149; CHECK-NEXT:    andq %r14, %rdi150; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax151; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill152; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi153; CHECK-NEXT:    bswapq %rdi154; CHECK-NEXT:    movq %rdi, %rbx155; CHECK-NEXT:    shrq $4, %rbx156; CHECK-NEXT:    andq %rsi, %rbx157; CHECK-NEXT:    andq %rsi, %rdi158; CHECK-NEXT:    shlq $4, %rdi159; CHECK-NEXT:    orq %rbx, %rdi160; CHECK-NEXT:    movq %rdi, %rbx161; CHECK-NEXT:    andq %r10, %rbx162; CHECK-NEXT:    shrq $2, %rdi163; CHECK-NEXT:    andq %r10, %rdi164; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi165; CHECK-NEXT:    movq %rdi, %rbx166; CHECK-NEXT:    andq %r14, %rbx167; CHECK-NEXT:    shrq %rdi168; CHECK-NEXT:    andq %r14, %rdi169; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax170; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill171; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi172; CHECK-NEXT:    bswapq %rdi173; CHECK-NEXT:    movq %rdi, %rbx174; CHECK-NEXT:    shrq $4, %rbx175; CHECK-NEXT:    andq %rsi, %rbx176; CHECK-NEXT:    andq %rsi, %rdi177; CHECK-NEXT:    shlq $4, %rdi178; CHECK-NEXT:    orq %rbx, %rdi179; CHECK-NEXT:    movq %rdi, %rbx180; CHECK-NEXT:    andq %r10, %rbx181; CHECK-NEXT:    shrq $2, %rdi182; CHECK-NEXT:    andq %r10, %rdi183; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi184; CHECK-NEXT:    movq %rdi, %rbx185; CHECK-NEXT:    andq %r14, %rbx186; CHECK-NEXT:    shrq %rdi187; CHECK-NEXT:    andq %r14, %rdi188; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax189; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill190; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi191; CHECK-NEXT:    bswapq %rdi192; CHECK-NEXT:    movq %rdi, %rbx193; CHECK-NEXT:    shrq $4, %rbx194; CHECK-NEXT:    andq %rsi, %rbx195; CHECK-NEXT:    andq %rsi, %rdi196; CHECK-NEXT:    shlq $4, %rdi197; CHECK-NEXT:    orq %rbx, %rdi198; CHECK-NEXT:    movq %rdi, %rbx199; CHECK-NEXT:    andq %r10, %rbx200; CHECK-NEXT:    shrq $2, %rdi201; CHECK-NEXT:    andq %r10, %rdi202; CHECK-NEXT:    leaq (%rdi,%rbx,4), %rdi203; CHECK-NEXT:    movq %rdi, %rbx204; CHECK-NEXT:    andq %r14, %rbx205; CHECK-NEXT:    shrq %rdi206; CHECK-NEXT:    andq %r14, %rdi207; CHECK-NEXT:    leaq (%rdi,%rbx,2), %rax208; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill209; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rdi210; CHECK-NEXT:    bswapq %rdi211; CHECK-NEXT:    movq %rdi, %rax212; CHECK-NEXT:    shrq $4, %rax213; CHECK-NEXT:    andq %rsi, %rax214; CHECK-NEXT:    andq %rsi, %rdi215; CHECK-NEXT:    shlq $4, %rdi216; CHECK-NEXT:    orq %rax, %rdi217; CHECK-NEXT:    movq %rdi, %rax218; CHECK-NEXT:    andq %r10, %rax219; CHECK-NEXT:    shrq $2, %rdi220; CHECK-NEXT:    andq %r10, %rdi221; CHECK-NEXT:    leaq (%rdi,%rax,4), %rax222; CHECK-NEXT:    movq %rax, %rdi223; CHECK-NEXT:    andq %r14, %rdi224; CHECK-NEXT:    shrq %rax225; CHECK-NEXT:    andq %r14, %rax226; CHECK-NEXT:    leaq (%rax,%rdi,2), %rdi227; CHECK-NEXT:    bswapq %r9228; CHECK-NEXT:    movq %r9, %rax229; CHECK-NEXT:    shrq $4, %rax230; CHECK-NEXT:    andq %rsi, %rax231; CHECK-NEXT:    andq %rsi, %r9232; CHECK-NEXT:    shlq $4, %r9233; CHECK-NEXT:    orq %rax, %r9234; CHECK-NEXT:    movq %r9, %rax235; CHECK-NEXT:    andq %r10, %rax236; CHECK-NEXT:    shrq $2, %r9237; CHECK-NEXT:    andq %r10, %r9238; CHECK-NEXT:    leaq (%r9,%rax,4), %rax239; CHECK-NEXT:    movq %rax, %r9240; CHECK-NEXT:    andq %r14, %r9241; CHECK-NEXT:    shrq %rax242; CHECK-NEXT:    andq %r14, %rax243; CHECK-NEXT:    leaq (%rax,%r9,2), %rax244; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill245; CHECK-NEXT:    bswapq %r8246; CHECK-NEXT:    movq %r8, %rax247; CHECK-NEXT:    shrq $4, %rax248; CHECK-NEXT:    andq %rsi, %rax249; CHECK-NEXT:    andq %rsi, %r8250; CHECK-NEXT:    shlq $4, %r8251; CHECK-NEXT:    orq %rax, %r8252; CHECK-NEXT:    movq %r8, %rax253; CHECK-NEXT:    andq %r10, %rax254; CHECK-NEXT:    shrq $2, %r8255; CHECK-NEXT:    andq %r10, %r8256; CHECK-NEXT:    leaq (%r8,%rax,4), %rax257; CHECK-NEXT:    movq %rax, %r8258; CHECK-NEXT:    andq %r14, %r8259; CHECK-NEXT:    shrq %rax260; CHECK-NEXT:    andq %r14, %rax261; CHECK-NEXT:    leaq (%rax,%r8,2), %rax262; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill263; CHECK-NEXT:    bswapq %rcx264; CHECK-NEXT:    movq %rcx, %rax265; CHECK-NEXT:    shrq $4, %rax266; CHECK-NEXT:    andq %rsi, %rax267; CHECK-NEXT:    andq %rsi, %rcx268; CHECK-NEXT:    shlq $4, %rcx269; CHECK-NEXT:    orq %rax, %rcx270; CHECK-NEXT:    movq %rcx, %rax271; CHECK-NEXT:    andq %r10, %rax272; CHECK-NEXT:    shrq $2, %rcx273; CHECK-NEXT:    andq %r10, %rcx274; CHECK-NEXT:    leaq (%rcx,%rax,4), %rax275; CHECK-NEXT:    movq %rax, %rcx276; CHECK-NEXT:    andq %r14, %rcx277; CHECK-NEXT:    shrq %rax278; CHECK-NEXT:    andq %r14, %rax279; CHECK-NEXT:    leaq (%rax,%rcx,2), %rbx280; CHECK-NEXT:    bswapq %rdx281; CHECK-NEXT:    movq %rdx, %rax282; CHECK-NEXT:    shrq $4, %rax283; CHECK-NEXT:    andq %rsi, %rax284; CHECK-NEXT:    andq %rsi, %rdx285; CHECK-NEXT:    shlq $4, %rdx286; CHECK-NEXT:    orq %rax, %rdx287; CHECK-NEXT:    movq %rdx, %rax288; CHECK-NEXT:    andq %r10, %rax289; CHECK-NEXT:    shrq $2, %rdx290; CHECK-NEXT:    andq %r10, %rdx291; CHECK-NEXT:    leaq (%rdx,%rax,4), %rax292; CHECK-NEXT:    movq %rax, %rdx293; CHECK-NEXT:    andq %r14, %rdx294; CHECK-NEXT:    shrq %rax295; CHECK-NEXT:    andq %r14, %rax296; CHECK-NEXT:    leaq (%rax,%rdx,2), %rdx297; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload298; CHECK-NEXT:    bswapq %rcx299; CHECK-NEXT:    movq %rcx, %rax300; CHECK-NEXT:    shrq $4, %rax301; CHECK-NEXT:    andq %rsi, %rax302; CHECK-NEXT:    andq %rsi, %rcx303; CHECK-NEXT:    shlq $4, %rcx304; CHECK-NEXT:    orq %rax, %rcx305; CHECK-NEXT:    movq %rcx, %rax306; CHECK-NEXT:    andq %r10, %rax307; CHECK-NEXT:    shrq $2, %rcx308; CHECK-NEXT:    andq %r10, %rcx309; CHECK-NEXT:    leaq (%rcx,%rax,4), %rax310; CHECK-NEXT:    movq %rax, %rsi311; CHECK-NEXT:    andq %r14, %rsi312; CHECK-NEXT:    shrq %rax313; CHECK-NEXT:    andq %r14, %rax314; CHECK-NEXT:    leaq (%rax,%rsi,2), %rsi315; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r10 # 8-byte Reload316; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload317; CHECK-NEXT:    shrdq $24, %rax, %r10318; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload319; CHECK-NEXT:    shrdq $24, %rcx, %rax320; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill321; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload322; CHECK-NEXT:    shrdq $24, %rbp, %rcx323; CHECK-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill324; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r13 # 8-byte Reload325; CHECK-NEXT:    shrdq $24, %r13, %rbp326; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r12 # 8-byte Reload327; CHECK-NEXT:    shrdq $24, %r12, %r13328; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r15 # 8-byte Reload329; CHECK-NEXT:    shrdq $24, %r15, %r12330; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Reload331; CHECK-NEXT:    shrdq $24, %r14, %r15332; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload333; CHECK-NEXT:    shrdq $24, %r11, %r14334; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r9 # 8-byte Reload335; CHECK-NEXT:    shrdq $24, %r9, %r11336; CHECK-NEXT:    movq %rdi, %r8337; CHECK-NEXT:    shrdq $24, %rdi, %r9338; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload339; CHECK-NEXT:    shrdq $24, %rdi, %r8340; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload341; CHECK-NEXT:    shrdq $24, %rcx, %rdi342; CHECK-NEXT:    shrdq $24, %rbx, %rcx343; CHECK-NEXT:    shrdq $24, %rdx, %rbx344; CHECK-NEXT:    shrdq $24, %rsi, %rdx345; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload346; CHECK-NEXT:    movq %rdx, 112(%rax)347; CHECK-NEXT:    movq %rbx, 104(%rax)348; CHECK-NEXT:    movq %rcx, 96(%rax)349; CHECK-NEXT:    movq %rdi, 88(%rax)350; CHECK-NEXT:    movq %r8, 80(%rax)351; CHECK-NEXT:    movq %r9, 72(%rax)352; CHECK-NEXT:    movq %r11, 64(%rax)353; CHECK-NEXT:    movq %r14, 56(%rax)354; CHECK-NEXT:    movq %r15, 48(%rax)355; CHECK-NEXT:    movq %r12, 40(%rax)356; CHECK-NEXT:    movq %r13, 32(%rax)357; CHECK-NEXT:    movq %rbp, 24(%rax)358; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload359; CHECK-NEXT:    movq %rcx, 16(%rax)360; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload361; CHECK-NEXT:    movq %rcx, 8(%rax)362; CHECK-NEXT:    movq %r10, (%rax)363; CHECK-NEXT:    movq %rsi, %rcx364; CHECK-NEXT:    shrq $56, %rsi365; CHECK-NEXT:    movb %sil, 124(%rax)366; CHECK-NEXT:    shrq $24, %rcx367; CHECK-NEXT:    movl %ecx, 120(%rax)368; CHECK-NEXT:    popq %rbx369; CHECK-NEXT:    popq %r12370; CHECK-NEXT:    popq %r13371; CHECK-NEXT:    popq %r14372; CHECK-NEXT:    popq %r15373; CHECK-NEXT:    popq %rbp374; CHECK-NEXT:    retq375  %Z = call i1000 @llvm.bitreverse.i1000(i1000 %A)376  ret i1000 %Z377}378 379declare i1000 @llvm.bitreverse.i1000(i1000)380