923 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+bmi,+tbm < %s | FileCheck %s3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-unknown"6 7; Stack reload folding tests.8;9; By including a nop call with sideeffects we can force a partial register spill of the10; relevant registers and check that the reload is correctly folded into the instruction.11 12define i32 @stack_fold_bextri_u32(i32 %a0) {13; CHECK-LABEL: stack_fold_bextri_u32:14; CHECK: # %bb.0:15; CHECK-NEXT: pushq %rbp16; CHECK-NEXT: .cfi_def_cfa_offset 1617; CHECK-NEXT: pushq %r1518; CHECK-NEXT: .cfi_def_cfa_offset 2419; CHECK-NEXT: pushq %r1420; CHECK-NEXT: .cfi_def_cfa_offset 3221; CHECK-NEXT: pushq %r1322; CHECK-NEXT: .cfi_def_cfa_offset 4023; CHECK-NEXT: pushq %r1224; CHECK-NEXT: .cfi_def_cfa_offset 4825; CHECK-NEXT: pushq %rbx26; CHECK-NEXT: .cfi_def_cfa_offset 5627; CHECK-NEXT: .cfi_offset %rbx, -5628; CHECK-NEXT: .cfi_offset %r12, -4829; CHECK-NEXT: .cfi_offset %r13, -4030; CHECK-NEXT: .cfi_offset %r14, -3231; CHECK-NEXT: .cfi_offset %r15, -2432; CHECK-NEXT: .cfi_offset %rbp, -1633; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill34; CHECK-NEXT: #APP35; CHECK-NEXT: nop36; CHECK-NEXT: #NO_APP37; CHECK-NEXT: bextrl $3841, {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload38; CHECK-NEXT: # imm = 0xF0139; CHECK-NEXT: popq %rbx40; CHECK-NEXT: .cfi_def_cfa_offset 4841; CHECK-NEXT: popq %r1242; CHECK-NEXT: .cfi_def_cfa_offset 4043; CHECK-NEXT: popq %r1344; CHECK-NEXT: .cfi_def_cfa_offset 3245; CHECK-NEXT: popq %r1446; CHECK-NEXT: .cfi_def_cfa_offset 2447; CHECK-NEXT: popq %r1548; CHECK-NEXT: .cfi_def_cfa_offset 1649; CHECK-NEXT: popq %rbp50; CHECK-NEXT: .cfi_def_cfa_offset 851; CHECK-NEXT: retq52 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()53 %2 = tail call i32 @llvm.x86.tbm.bextri.u32(i32 %a0, i32 3841)54 ret i32 %255}56declare i32 @llvm.x86.tbm.bextri.u32(i32, i32)57 58define i64 @stack_fold_bextri_u64(i64 %a0) {59; CHECK-LABEL: stack_fold_bextri_u64:60; CHECK: # %bb.0:61; CHECK-NEXT: pushq %rbp62; CHECK-NEXT: .cfi_def_cfa_offset 1663; CHECK-NEXT: pushq %r1564; CHECK-NEXT: .cfi_def_cfa_offset 2465; CHECK-NEXT: pushq %r1466; CHECK-NEXT: .cfi_def_cfa_offset 3267; CHECK-NEXT: pushq %r1368; CHECK-NEXT: .cfi_def_cfa_offset 4069; CHECK-NEXT: pushq %r1270; CHECK-NEXT: .cfi_def_cfa_offset 4871; CHECK-NEXT: pushq %rbx72; CHECK-NEXT: .cfi_def_cfa_offset 5673; CHECK-NEXT: .cfi_offset %rbx, -5674; CHECK-NEXT: .cfi_offset %r12, -4875; CHECK-NEXT: .cfi_offset %r13, -4076; CHECK-NEXT: .cfi_offset %r14, -3277; CHECK-NEXT: .cfi_offset %r15, -2478; CHECK-NEXT: .cfi_offset %rbp, -1679; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill80; CHECK-NEXT: #APP81; CHECK-NEXT: nop82; CHECK-NEXT: #NO_APP83; CHECK-NEXT: bextrq $3841, {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload84; CHECK-NEXT: # imm = 0xF0185; CHECK-NEXT: popq %rbx86; CHECK-NEXT: .cfi_def_cfa_offset 4887; CHECK-NEXT: popq %r1288; CHECK-NEXT: .cfi_def_cfa_offset 4089; CHECK-NEXT: popq %r1390; CHECK-NEXT: .cfi_def_cfa_offset 3291; CHECK-NEXT: popq %r1492; CHECK-NEXT: .cfi_def_cfa_offset 2493; CHECK-NEXT: popq %r1594; CHECK-NEXT: .cfi_def_cfa_offset 1695; CHECK-NEXT: popq %rbp96; CHECK-NEXT: .cfi_def_cfa_offset 897; CHECK-NEXT: retq98 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()99 %2 = tail call i64 @llvm.x86.tbm.bextri.u64(i64 %a0, i64 3841)100 ret i64 %2101}102declare i64 @llvm.x86.tbm.bextri.u64(i64, i64)103 104define i32 @stack_fold_blcfill_u32(i32 %a0) {105; CHECK-LABEL: stack_fold_blcfill_u32:106; CHECK: # %bb.0:107; CHECK-NEXT: pushq %rbp108; CHECK-NEXT: .cfi_def_cfa_offset 16109; CHECK-NEXT: pushq %r15110; CHECK-NEXT: .cfi_def_cfa_offset 24111; CHECK-NEXT: pushq %r14112; CHECK-NEXT: .cfi_def_cfa_offset 32113; CHECK-NEXT: pushq %r13114; CHECK-NEXT: .cfi_def_cfa_offset 40115; CHECK-NEXT: pushq %r12116; CHECK-NEXT: .cfi_def_cfa_offset 48117; CHECK-NEXT: pushq %rbx118; CHECK-NEXT: .cfi_def_cfa_offset 56119; CHECK-NEXT: .cfi_offset %rbx, -56120; CHECK-NEXT: .cfi_offset %r12, -48121; CHECK-NEXT: .cfi_offset %r13, -40122; CHECK-NEXT: .cfi_offset %r14, -32123; CHECK-NEXT: .cfi_offset %r15, -24124; CHECK-NEXT: .cfi_offset %rbp, -16125; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill126; CHECK-NEXT: #APP127; CHECK-NEXT: nop128; CHECK-NEXT: #NO_APP129; CHECK-NEXT: blcfilll {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload130; CHECK-NEXT: popq %rbx131; CHECK-NEXT: .cfi_def_cfa_offset 48132; CHECK-NEXT: popq %r12133; CHECK-NEXT: .cfi_def_cfa_offset 40134; CHECK-NEXT: popq %r13135; CHECK-NEXT: .cfi_def_cfa_offset 32136; CHECK-NEXT: popq %r14137; CHECK-NEXT: .cfi_def_cfa_offset 24138; CHECK-NEXT: popq %r15139; CHECK-NEXT: .cfi_def_cfa_offset 16140; CHECK-NEXT: popq %rbp141; CHECK-NEXT: .cfi_def_cfa_offset 8142; CHECK-NEXT: retq143 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()144 %2 = add i32 %a0, 1145 %3 = and i32 %a0, %2146 ret i32 %3147}148 149define i64 @stack_fold_blcfill_u64(i64 %a0) {150; CHECK-LABEL: stack_fold_blcfill_u64:151; CHECK: # %bb.0:152; CHECK-NEXT: pushq %rbp153; CHECK-NEXT: .cfi_def_cfa_offset 16154; CHECK-NEXT: pushq %r15155; CHECK-NEXT: .cfi_def_cfa_offset 24156; CHECK-NEXT: pushq %r14157; CHECK-NEXT: .cfi_def_cfa_offset 32158; CHECK-NEXT: pushq %r13159; CHECK-NEXT: .cfi_def_cfa_offset 40160; CHECK-NEXT: pushq %r12161; CHECK-NEXT: .cfi_def_cfa_offset 48162; CHECK-NEXT: pushq %rbx163; CHECK-NEXT: .cfi_def_cfa_offset 56164; CHECK-NEXT: .cfi_offset %rbx, -56165; CHECK-NEXT: .cfi_offset %r12, -48166; CHECK-NEXT: .cfi_offset %r13, -40167; CHECK-NEXT: .cfi_offset %r14, -32168; CHECK-NEXT: .cfi_offset %r15, -24169; CHECK-NEXT: .cfi_offset %rbp, -16170; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill171; CHECK-NEXT: #APP172; CHECK-NEXT: nop173; CHECK-NEXT: #NO_APP174; CHECK-NEXT: blcfillq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload175; CHECK-NEXT: popq %rbx176; CHECK-NEXT: .cfi_def_cfa_offset 48177; CHECK-NEXT: popq %r12178; CHECK-NEXT: .cfi_def_cfa_offset 40179; CHECK-NEXT: popq %r13180; CHECK-NEXT: .cfi_def_cfa_offset 32181; CHECK-NEXT: popq %r14182; CHECK-NEXT: .cfi_def_cfa_offset 24183; CHECK-NEXT: popq %r15184; CHECK-NEXT: .cfi_def_cfa_offset 16185; CHECK-NEXT: popq %rbp186; CHECK-NEXT: .cfi_def_cfa_offset 8187; CHECK-NEXT: retq188 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()189 %2 = add i64 %a0, 1190 %3 = and i64 %a0, %2191 ret i64 %3192}193 194define i32 @stack_fold_blci_u32(i32 %a0) {195; CHECK-LABEL: stack_fold_blci_u32:196; CHECK: # %bb.0:197; CHECK-NEXT: pushq %rbp198; CHECK-NEXT: .cfi_def_cfa_offset 16199; CHECK-NEXT: pushq %r15200; CHECK-NEXT: .cfi_def_cfa_offset 24201; CHECK-NEXT: pushq %r14202; CHECK-NEXT: .cfi_def_cfa_offset 32203; CHECK-NEXT: pushq %r13204; CHECK-NEXT: .cfi_def_cfa_offset 40205; CHECK-NEXT: pushq %r12206; CHECK-NEXT: .cfi_def_cfa_offset 48207; CHECK-NEXT: pushq %rbx208; CHECK-NEXT: .cfi_def_cfa_offset 56209; CHECK-NEXT: .cfi_offset %rbx, -56210; CHECK-NEXT: .cfi_offset %r12, -48211; CHECK-NEXT: .cfi_offset %r13, -40212; CHECK-NEXT: .cfi_offset %r14, -32213; CHECK-NEXT: .cfi_offset %r15, -24214; CHECK-NEXT: .cfi_offset %rbp, -16215; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill216; CHECK-NEXT: #APP217; CHECK-NEXT: nop218; CHECK-NEXT: #NO_APP219; CHECK-NEXT: blcil {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload220; CHECK-NEXT: popq %rbx221; CHECK-NEXT: .cfi_def_cfa_offset 48222; CHECK-NEXT: popq %r12223; CHECK-NEXT: .cfi_def_cfa_offset 40224; CHECK-NEXT: popq %r13225; CHECK-NEXT: .cfi_def_cfa_offset 32226; CHECK-NEXT: popq %r14227; CHECK-NEXT: .cfi_def_cfa_offset 24228; CHECK-NEXT: popq %r15229; CHECK-NEXT: .cfi_def_cfa_offset 16230; CHECK-NEXT: popq %rbp231; CHECK-NEXT: .cfi_def_cfa_offset 8232; CHECK-NEXT: retq233 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()234 %2 = add i32 %a0, 1235 %3 = xor i32 %2, -1236 %4 = or i32 %a0, %3237 ret i32 %4238}239 240define i64 @stack_fold_blci_u64(i64 %a0) {241; CHECK-LABEL: stack_fold_blci_u64:242; CHECK: # %bb.0:243; CHECK-NEXT: pushq %rbp244; CHECK-NEXT: .cfi_def_cfa_offset 16245; CHECK-NEXT: pushq %r15246; CHECK-NEXT: .cfi_def_cfa_offset 24247; CHECK-NEXT: pushq %r14248; CHECK-NEXT: .cfi_def_cfa_offset 32249; CHECK-NEXT: pushq %r13250; CHECK-NEXT: .cfi_def_cfa_offset 40251; CHECK-NEXT: pushq %r12252; CHECK-NEXT: .cfi_def_cfa_offset 48253; CHECK-NEXT: pushq %rbx254; CHECK-NEXT: .cfi_def_cfa_offset 56255; CHECK-NEXT: .cfi_offset %rbx, -56256; CHECK-NEXT: .cfi_offset %r12, -48257; CHECK-NEXT: .cfi_offset %r13, -40258; CHECK-NEXT: .cfi_offset %r14, -32259; CHECK-NEXT: .cfi_offset %r15, -24260; CHECK-NEXT: .cfi_offset %rbp, -16261; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill262; CHECK-NEXT: #APP263; CHECK-NEXT: nop264; CHECK-NEXT: #NO_APP265; CHECK-NEXT: blciq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload266; CHECK-NEXT: popq %rbx267; CHECK-NEXT: .cfi_def_cfa_offset 48268; CHECK-NEXT: popq %r12269; CHECK-NEXT: .cfi_def_cfa_offset 40270; CHECK-NEXT: popq %r13271; CHECK-NEXT: .cfi_def_cfa_offset 32272; CHECK-NEXT: popq %r14273; CHECK-NEXT: .cfi_def_cfa_offset 24274; CHECK-NEXT: popq %r15275; CHECK-NEXT: .cfi_def_cfa_offset 16276; CHECK-NEXT: popq %rbp277; CHECK-NEXT: .cfi_def_cfa_offset 8278; CHECK-NEXT: retq279 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()280 %2 = add i64 %a0, 1281 %3 = xor i64 %2, -1282 %4 = or i64 %a0, %3283 ret i64 %4284}285 286define i32 @stack_fold_blcic_u32(i32 %a0) {287; CHECK-LABEL: stack_fold_blcic_u32:288; CHECK: # %bb.0:289; CHECK-NEXT: pushq %rbp290; CHECK-NEXT: .cfi_def_cfa_offset 16291; CHECK-NEXT: pushq %r15292; CHECK-NEXT: .cfi_def_cfa_offset 24293; CHECK-NEXT: pushq %r14294; CHECK-NEXT: .cfi_def_cfa_offset 32295; CHECK-NEXT: pushq %r13296; CHECK-NEXT: .cfi_def_cfa_offset 40297; CHECK-NEXT: pushq %r12298; CHECK-NEXT: .cfi_def_cfa_offset 48299; CHECK-NEXT: pushq %rbx300; CHECK-NEXT: .cfi_def_cfa_offset 56301; CHECK-NEXT: .cfi_offset %rbx, -56302; CHECK-NEXT: .cfi_offset %r12, -48303; CHECK-NEXT: .cfi_offset %r13, -40304; CHECK-NEXT: .cfi_offset %r14, -32305; CHECK-NEXT: .cfi_offset %r15, -24306; CHECK-NEXT: .cfi_offset %rbp, -16307; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill308; CHECK-NEXT: #APP309; CHECK-NEXT: nop310; CHECK-NEXT: #NO_APP311; CHECK-NEXT: blcicl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload312; CHECK-NEXT: popq %rbx313; CHECK-NEXT: .cfi_def_cfa_offset 48314; CHECK-NEXT: popq %r12315; CHECK-NEXT: .cfi_def_cfa_offset 40316; CHECK-NEXT: popq %r13317; CHECK-NEXT: .cfi_def_cfa_offset 32318; CHECK-NEXT: popq %r14319; CHECK-NEXT: .cfi_def_cfa_offset 24320; CHECK-NEXT: popq %r15321; CHECK-NEXT: .cfi_def_cfa_offset 16322; CHECK-NEXT: popq %rbp323; CHECK-NEXT: .cfi_def_cfa_offset 8324; CHECK-NEXT: retq325 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()326 %2 = add i32 %a0, 1327 %3 = xor i32 %a0, -1328 %4 = and i32 %2, %3329 ret i32 %4330}331 332define i64 @stack_fold_blcic_u64(i64 %a0) {333; CHECK-LABEL: stack_fold_blcic_u64:334; CHECK: # %bb.0:335; CHECK-NEXT: pushq %rbp336; CHECK-NEXT: .cfi_def_cfa_offset 16337; CHECK-NEXT: pushq %r15338; CHECK-NEXT: .cfi_def_cfa_offset 24339; CHECK-NEXT: pushq %r14340; CHECK-NEXT: .cfi_def_cfa_offset 32341; CHECK-NEXT: pushq %r13342; CHECK-NEXT: .cfi_def_cfa_offset 40343; CHECK-NEXT: pushq %r12344; CHECK-NEXT: .cfi_def_cfa_offset 48345; CHECK-NEXT: pushq %rbx346; CHECK-NEXT: .cfi_def_cfa_offset 56347; CHECK-NEXT: .cfi_offset %rbx, -56348; CHECK-NEXT: .cfi_offset %r12, -48349; CHECK-NEXT: .cfi_offset %r13, -40350; CHECK-NEXT: .cfi_offset %r14, -32351; CHECK-NEXT: .cfi_offset %r15, -24352; CHECK-NEXT: .cfi_offset %rbp, -16353; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill354; CHECK-NEXT: #APP355; CHECK-NEXT: nop356; CHECK-NEXT: #NO_APP357; CHECK-NEXT: blcicq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload358; CHECK-NEXT: popq %rbx359; CHECK-NEXT: .cfi_def_cfa_offset 48360; CHECK-NEXT: popq %r12361; CHECK-NEXT: .cfi_def_cfa_offset 40362; CHECK-NEXT: popq %r13363; CHECK-NEXT: .cfi_def_cfa_offset 32364; CHECK-NEXT: popq %r14365; CHECK-NEXT: .cfi_def_cfa_offset 24366; CHECK-NEXT: popq %r15367; CHECK-NEXT: .cfi_def_cfa_offset 16368; CHECK-NEXT: popq %rbp369; CHECK-NEXT: .cfi_def_cfa_offset 8370; CHECK-NEXT: retq371 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()372 %2 = add i64 %a0, 1373 %3 = xor i64 %a0, -1374 %4 = and i64 %2, %3375 ret i64 %4376}377 378define i32 @stack_fold_blcmsk_u32(i32 %a0) {379; CHECK-LABEL: stack_fold_blcmsk_u32:380; CHECK: # %bb.0:381; CHECK-NEXT: pushq %rbp382; CHECK-NEXT: .cfi_def_cfa_offset 16383; CHECK-NEXT: pushq %r15384; CHECK-NEXT: .cfi_def_cfa_offset 24385; CHECK-NEXT: pushq %r14386; CHECK-NEXT: .cfi_def_cfa_offset 32387; CHECK-NEXT: pushq %r13388; CHECK-NEXT: .cfi_def_cfa_offset 40389; CHECK-NEXT: pushq %r12390; CHECK-NEXT: .cfi_def_cfa_offset 48391; CHECK-NEXT: pushq %rbx392; CHECK-NEXT: .cfi_def_cfa_offset 56393; CHECK-NEXT: .cfi_offset %rbx, -56394; CHECK-NEXT: .cfi_offset %r12, -48395; CHECK-NEXT: .cfi_offset %r13, -40396; CHECK-NEXT: .cfi_offset %r14, -32397; CHECK-NEXT: .cfi_offset %r15, -24398; CHECK-NEXT: .cfi_offset %rbp, -16399; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill400; CHECK-NEXT: #APP401; CHECK-NEXT: nop402; CHECK-NEXT: #NO_APP403; CHECK-NEXT: blcmskl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload404; CHECK-NEXT: popq %rbx405; CHECK-NEXT: .cfi_def_cfa_offset 48406; CHECK-NEXT: popq %r12407; CHECK-NEXT: .cfi_def_cfa_offset 40408; CHECK-NEXT: popq %r13409; CHECK-NEXT: .cfi_def_cfa_offset 32410; CHECK-NEXT: popq %r14411; CHECK-NEXT: .cfi_def_cfa_offset 24412; CHECK-NEXT: popq %r15413; CHECK-NEXT: .cfi_def_cfa_offset 16414; CHECK-NEXT: popq %rbp415; CHECK-NEXT: .cfi_def_cfa_offset 8416; CHECK-NEXT: retq417 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()418 %2 = add i32 %a0, 1419 %3 = xor i32 %a0, %2420 ret i32 %3421}422 423define i64 @stack_fold_blcmsk_u64(i64 %a0) {424; CHECK-LABEL: stack_fold_blcmsk_u64:425; CHECK: # %bb.0:426; CHECK-NEXT: pushq %rbp427; CHECK-NEXT: .cfi_def_cfa_offset 16428; CHECK-NEXT: pushq %r15429; CHECK-NEXT: .cfi_def_cfa_offset 24430; CHECK-NEXT: pushq %r14431; CHECK-NEXT: .cfi_def_cfa_offset 32432; CHECK-NEXT: pushq %r13433; CHECK-NEXT: .cfi_def_cfa_offset 40434; CHECK-NEXT: pushq %r12435; CHECK-NEXT: .cfi_def_cfa_offset 48436; CHECK-NEXT: pushq %rbx437; CHECK-NEXT: .cfi_def_cfa_offset 56438; CHECK-NEXT: .cfi_offset %rbx, -56439; CHECK-NEXT: .cfi_offset %r12, -48440; CHECK-NEXT: .cfi_offset %r13, -40441; CHECK-NEXT: .cfi_offset %r14, -32442; CHECK-NEXT: .cfi_offset %r15, -24443; CHECK-NEXT: .cfi_offset %rbp, -16444; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill445; CHECK-NEXT: #APP446; CHECK-NEXT: nop447; CHECK-NEXT: #NO_APP448; CHECK-NEXT: blcmskq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload449; CHECK-NEXT: popq %rbx450; CHECK-NEXT: .cfi_def_cfa_offset 48451; CHECK-NEXT: popq %r12452; CHECK-NEXT: .cfi_def_cfa_offset 40453; CHECK-NEXT: popq %r13454; CHECK-NEXT: .cfi_def_cfa_offset 32455; CHECK-NEXT: popq %r14456; CHECK-NEXT: .cfi_def_cfa_offset 24457; CHECK-NEXT: popq %r15458; CHECK-NEXT: .cfi_def_cfa_offset 16459; CHECK-NEXT: popq %rbp460; CHECK-NEXT: .cfi_def_cfa_offset 8461; CHECK-NEXT: retq462 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()463 %2 = add i64 %a0, 1464 %3 = xor i64 %a0, %2465 ret i64 %3466}467 468define i32 @stack_fold_blcs_u32(i32 %a0) {469; CHECK-LABEL: stack_fold_blcs_u32:470; CHECK: # %bb.0:471; CHECK-NEXT: pushq %rbp472; CHECK-NEXT: .cfi_def_cfa_offset 16473; CHECK-NEXT: pushq %r15474; CHECK-NEXT: .cfi_def_cfa_offset 24475; CHECK-NEXT: pushq %r14476; CHECK-NEXT: .cfi_def_cfa_offset 32477; CHECK-NEXT: pushq %r13478; CHECK-NEXT: .cfi_def_cfa_offset 40479; CHECK-NEXT: pushq %r12480; CHECK-NEXT: .cfi_def_cfa_offset 48481; CHECK-NEXT: pushq %rbx482; CHECK-NEXT: .cfi_def_cfa_offset 56483; CHECK-NEXT: .cfi_offset %rbx, -56484; CHECK-NEXT: .cfi_offset %r12, -48485; CHECK-NEXT: .cfi_offset %r13, -40486; CHECK-NEXT: .cfi_offset %r14, -32487; CHECK-NEXT: .cfi_offset %r15, -24488; CHECK-NEXT: .cfi_offset %rbp, -16489; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill490; CHECK-NEXT: #APP491; CHECK-NEXT: nop492; CHECK-NEXT: #NO_APP493; CHECK-NEXT: blcsl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload494; CHECK-NEXT: popq %rbx495; CHECK-NEXT: .cfi_def_cfa_offset 48496; CHECK-NEXT: popq %r12497; CHECK-NEXT: .cfi_def_cfa_offset 40498; CHECK-NEXT: popq %r13499; CHECK-NEXT: .cfi_def_cfa_offset 32500; CHECK-NEXT: popq %r14501; CHECK-NEXT: .cfi_def_cfa_offset 24502; CHECK-NEXT: popq %r15503; CHECK-NEXT: .cfi_def_cfa_offset 16504; CHECK-NEXT: popq %rbp505; CHECK-NEXT: .cfi_def_cfa_offset 8506; CHECK-NEXT: retq507 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()508 %2 = add i32 %a0, 1509 %3 = or i32 %a0, %2510 ret i32 %3511}512 513define i64 @stack_fold_blcs_u64(i64 %a0) {514; CHECK-LABEL: stack_fold_blcs_u64:515; CHECK: # %bb.0:516; CHECK-NEXT: pushq %rbp517; CHECK-NEXT: .cfi_def_cfa_offset 16518; CHECK-NEXT: pushq %r15519; CHECK-NEXT: .cfi_def_cfa_offset 24520; CHECK-NEXT: pushq %r14521; CHECK-NEXT: .cfi_def_cfa_offset 32522; CHECK-NEXT: pushq %r13523; CHECK-NEXT: .cfi_def_cfa_offset 40524; CHECK-NEXT: pushq %r12525; CHECK-NEXT: .cfi_def_cfa_offset 48526; CHECK-NEXT: pushq %rbx527; CHECK-NEXT: .cfi_def_cfa_offset 56528; CHECK-NEXT: .cfi_offset %rbx, -56529; CHECK-NEXT: .cfi_offset %r12, -48530; CHECK-NEXT: .cfi_offset %r13, -40531; CHECK-NEXT: .cfi_offset %r14, -32532; CHECK-NEXT: .cfi_offset %r15, -24533; CHECK-NEXT: .cfi_offset %rbp, -16534; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill535; CHECK-NEXT: #APP536; CHECK-NEXT: nop537; CHECK-NEXT: #NO_APP538; CHECK-NEXT: blcsq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload539; CHECK-NEXT: popq %rbx540; CHECK-NEXT: .cfi_def_cfa_offset 48541; CHECK-NEXT: popq %r12542; CHECK-NEXT: .cfi_def_cfa_offset 40543; CHECK-NEXT: popq %r13544; CHECK-NEXT: .cfi_def_cfa_offset 32545; CHECK-NEXT: popq %r14546; CHECK-NEXT: .cfi_def_cfa_offset 24547; CHECK-NEXT: popq %r15548; CHECK-NEXT: .cfi_def_cfa_offset 16549; CHECK-NEXT: popq %rbp550; CHECK-NEXT: .cfi_def_cfa_offset 8551; CHECK-NEXT: retq552 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()553 %2 = add i64 %a0, 1554 %3 = or i64 %a0, %2555 ret i64 %3556}557 558define i32 @stack_fold_blsfill_u32(i32 %a0) {559; CHECK-LABEL: stack_fold_blsfill_u32:560; CHECK: # %bb.0:561; CHECK-NEXT: pushq %rbp562; CHECK-NEXT: .cfi_def_cfa_offset 16563; CHECK-NEXT: pushq %r15564; CHECK-NEXT: .cfi_def_cfa_offset 24565; CHECK-NEXT: pushq %r14566; CHECK-NEXT: .cfi_def_cfa_offset 32567; CHECK-NEXT: pushq %r13568; CHECK-NEXT: .cfi_def_cfa_offset 40569; CHECK-NEXT: pushq %r12570; CHECK-NEXT: .cfi_def_cfa_offset 48571; CHECK-NEXT: pushq %rbx572; CHECK-NEXT: .cfi_def_cfa_offset 56573; CHECK-NEXT: .cfi_offset %rbx, -56574; CHECK-NEXT: .cfi_offset %r12, -48575; CHECK-NEXT: .cfi_offset %r13, -40576; CHECK-NEXT: .cfi_offset %r14, -32577; CHECK-NEXT: .cfi_offset %r15, -24578; CHECK-NEXT: .cfi_offset %rbp, -16579; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill580; CHECK-NEXT: #APP581; CHECK-NEXT: nop582; CHECK-NEXT: #NO_APP583; CHECK-NEXT: blsfilll {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload584; CHECK-NEXT: popq %rbx585; CHECK-NEXT: .cfi_def_cfa_offset 48586; CHECK-NEXT: popq %r12587; CHECK-NEXT: .cfi_def_cfa_offset 40588; CHECK-NEXT: popq %r13589; CHECK-NEXT: .cfi_def_cfa_offset 32590; CHECK-NEXT: popq %r14591; CHECK-NEXT: .cfi_def_cfa_offset 24592; CHECK-NEXT: popq %r15593; CHECK-NEXT: .cfi_def_cfa_offset 16594; CHECK-NEXT: popq %rbp595; CHECK-NEXT: .cfi_def_cfa_offset 8596; CHECK-NEXT: retq597 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()598 %2 = sub i32 %a0, 1599 %3 = or i32 %a0, %2600 ret i32 %3601}602 603define i64 @stack_fold_blsfill_u64(i64 %a0) {604; CHECK-LABEL: stack_fold_blsfill_u64:605; CHECK: # %bb.0:606; CHECK-NEXT: pushq %rbp607; CHECK-NEXT: .cfi_def_cfa_offset 16608; CHECK-NEXT: pushq %r15609; CHECK-NEXT: .cfi_def_cfa_offset 24610; CHECK-NEXT: pushq %r14611; CHECK-NEXT: .cfi_def_cfa_offset 32612; CHECK-NEXT: pushq %r13613; CHECK-NEXT: .cfi_def_cfa_offset 40614; CHECK-NEXT: pushq %r12615; CHECK-NEXT: .cfi_def_cfa_offset 48616; CHECK-NEXT: pushq %rbx617; CHECK-NEXT: .cfi_def_cfa_offset 56618; CHECK-NEXT: .cfi_offset %rbx, -56619; CHECK-NEXT: .cfi_offset %r12, -48620; CHECK-NEXT: .cfi_offset %r13, -40621; CHECK-NEXT: .cfi_offset %r14, -32622; CHECK-NEXT: .cfi_offset %r15, -24623; CHECK-NEXT: .cfi_offset %rbp, -16624; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill625; CHECK-NEXT: #APP626; CHECK-NEXT: nop627; CHECK-NEXT: #NO_APP628; CHECK-NEXT: blsfillq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload629; CHECK-NEXT: popq %rbx630; CHECK-NEXT: .cfi_def_cfa_offset 48631; CHECK-NEXT: popq %r12632; CHECK-NEXT: .cfi_def_cfa_offset 40633; CHECK-NEXT: popq %r13634; CHECK-NEXT: .cfi_def_cfa_offset 32635; CHECK-NEXT: popq %r14636; CHECK-NEXT: .cfi_def_cfa_offset 24637; CHECK-NEXT: popq %r15638; CHECK-NEXT: .cfi_def_cfa_offset 16639; CHECK-NEXT: popq %rbp640; CHECK-NEXT: .cfi_def_cfa_offset 8641; CHECK-NEXT: retq642 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()643 %2 = sub i64 %a0, 1644 %3 = or i64 %a0, %2645 ret i64 %3646}647 648define i32 @stack_fold_blsic_u32(i32 %a0) {649; CHECK-LABEL: stack_fold_blsic_u32:650; CHECK: # %bb.0:651; CHECK-NEXT: pushq %rbp652; CHECK-NEXT: .cfi_def_cfa_offset 16653; CHECK-NEXT: pushq %r15654; CHECK-NEXT: .cfi_def_cfa_offset 24655; CHECK-NEXT: pushq %r14656; CHECK-NEXT: .cfi_def_cfa_offset 32657; CHECK-NEXT: pushq %r13658; CHECK-NEXT: .cfi_def_cfa_offset 40659; CHECK-NEXT: pushq %r12660; CHECK-NEXT: .cfi_def_cfa_offset 48661; CHECK-NEXT: pushq %rbx662; CHECK-NEXT: .cfi_def_cfa_offset 56663; CHECK-NEXT: .cfi_offset %rbx, -56664; CHECK-NEXT: .cfi_offset %r12, -48665; CHECK-NEXT: .cfi_offset %r13, -40666; CHECK-NEXT: .cfi_offset %r14, -32667; CHECK-NEXT: .cfi_offset %r15, -24668; CHECK-NEXT: .cfi_offset %rbp, -16669; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill670; CHECK-NEXT: #APP671; CHECK-NEXT: nop672; CHECK-NEXT: #NO_APP673; CHECK-NEXT: blsicl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload674; CHECK-NEXT: popq %rbx675; CHECK-NEXT: .cfi_def_cfa_offset 48676; CHECK-NEXT: popq %r12677; CHECK-NEXT: .cfi_def_cfa_offset 40678; CHECK-NEXT: popq %r13679; CHECK-NEXT: .cfi_def_cfa_offset 32680; CHECK-NEXT: popq %r14681; CHECK-NEXT: .cfi_def_cfa_offset 24682; CHECK-NEXT: popq %r15683; CHECK-NEXT: .cfi_def_cfa_offset 16684; CHECK-NEXT: popq %rbp685; CHECK-NEXT: .cfi_def_cfa_offset 8686; CHECK-NEXT: retq687 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()688 %2 = sub i32 %a0, 1689 %3 = xor i32 %a0, -1690 %4 = or i32 %2, %3691 ret i32 %4692}693 694define i64 @stack_fold_blsic_u64(i64 %a0) {695; CHECK-LABEL: stack_fold_blsic_u64:696; CHECK: # %bb.0:697; CHECK-NEXT: pushq %rbp698; CHECK-NEXT: .cfi_def_cfa_offset 16699; CHECK-NEXT: pushq %r15700; CHECK-NEXT: .cfi_def_cfa_offset 24701; CHECK-NEXT: pushq %r14702; CHECK-NEXT: .cfi_def_cfa_offset 32703; CHECK-NEXT: pushq %r13704; CHECK-NEXT: .cfi_def_cfa_offset 40705; CHECK-NEXT: pushq %r12706; CHECK-NEXT: .cfi_def_cfa_offset 48707; CHECK-NEXT: pushq %rbx708; CHECK-NEXT: .cfi_def_cfa_offset 56709; CHECK-NEXT: .cfi_offset %rbx, -56710; CHECK-NEXT: .cfi_offset %r12, -48711; CHECK-NEXT: .cfi_offset %r13, -40712; CHECK-NEXT: .cfi_offset %r14, -32713; CHECK-NEXT: .cfi_offset %r15, -24714; CHECK-NEXT: .cfi_offset %rbp, -16715; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill716; CHECK-NEXT: #APP717; CHECK-NEXT: nop718; CHECK-NEXT: #NO_APP719; CHECK-NEXT: blsicq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload720; CHECK-NEXT: popq %rbx721; CHECK-NEXT: .cfi_def_cfa_offset 48722; CHECK-NEXT: popq %r12723; CHECK-NEXT: .cfi_def_cfa_offset 40724; CHECK-NEXT: popq %r13725; CHECK-NEXT: .cfi_def_cfa_offset 32726; CHECK-NEXT: popq %r14727; CHECK-NEXT: .cfi_def_cfa_offset 24728; CHECK-NEXT: popq %r15729; CHECK-NEXT: .cfi_def_cfa_offset 16730; CHECK-NEXT: popq %rbp731; CHECK-NEXT: .cfi_def_cfa_offset 8732; CHECK-NEXT: retq733 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()734 %2 = sub i64 %a0, 1735 %3 = xor i64 %a0, -1736 %4 = or i64 %2, %3737 ret i64 %4738}739 740define i32 @stack_fold_t1mskc_u32(i32 %a0) {741; CHECK-LABEL: stack_fold_t1mskc_u32:742; CHECK: # %bb.0:743; CHECK-NEXT: pushq %rbp744; CHECK-NEXT: .cfi_def_cfa_offset 16745; CHECK-NEXT: pushq %r15746; CHECK-NEXT: .cfi_def_cfa_offset 24747; CHECK-NEXT: pushq %r14748; CHECK-NEXT: .cfi_def_cfa_offset 32749; CHECK-NEXT: pushq %r13750; CHECK-NEXT: .cfi_def_cfa_offset 40751; CHECK-NEXT: pushq %r12752; CHECK-NEXT: .cfi_def_cfa_offset 48753; CHECK-NEXT: pushq %rbx754; CHECK-NEXT: .cfi_def_cfa_offset 56755; CHECK-NEXT: .cfi_offset %rbx, -56756; CHECK-NEXT: .cfi_offset %r12, -48757; CHECK-NEXT: .cfi_offset %r13, -40758; CHECK-NEXT: .cfi_offset %r14, -32759; CHECK-NEXT: .cfi_offset %r15, -24760; CHECK-NEXT: .cfi_offset %rbp, -16761; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill762; CHECK-NEXT: #APP763; CHECK-NEXT: nop764; CHECK-NEXT: #NO_APP765; CHECK-NEXT: t1mskcl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload766; CHECK-NEXT: popq %rbx767; CHECK-NEXT: .cfi_def_cfa_offset 48768; CHECK-NEXT: popq %r12769; CHECK-NEXT: .cfi_def_cfa_offset 40770; CHECK-NEXT: popq %r13771; CHECK-NEXT: .cfi_def_cfa_offset 32772; CHECK-NEXT: popq %r14773; CHECK-NEXT: .cfi_def_cfa_offset 24774; CHECK-NEXT: popq %r15775; CHECK-NEXT: .cfi_def_cfa_offset 16776; CHECK-NEXT: popq %rbp777; CHECK-NEXT: .cfi_def_cfa_offset 8778; CHECK-NEXT: retq779 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()780 %2 = add i32 %a0, 1781 %3 = xor i32 %a0, -1782 %4 = or i32 %2, %3783 ret i32 %4784}785 786define i64 @stack_fold_t1mskc_u64(i64 %a0) {787; CHECK-LABEL: stack_fold_t1mskc_u64:788; CHECK: # %bb.0:789; CHECK-NEXT: pushq %rbp790; CHECK-NEXT: .cfi_def_cfa_offset 16791; CHECK-NEXT: pushq %r15792; CHECK-NEXT: .cfi_def_cfa_offset 24793; CHECK-NEXT: pushq %r14794; CHECK-NEXT: .cfi_def_cfa_offset 32795; CHECK-NEXT: pushq %r13796; CHECK-NEXT: .cfi_def_cfa_offset 40797; CHECK-NEXT: pushq %r12798; CHECK-NEXT: .cfi_def_cfa_offset 48799; CHECK-NEXT: pushq %rbx800; CHECK-NEXT: .cfi_def_cfa_offset 56801; CHECK-NEXT: .cfi_offset %rbx, -56802; CHECK-NEXT: .cfi_offset %r12, -48803; CHECK-NEXT: .cfi_offset %r13, -40804; CHECK-NEXT: .cfi_offset %r14, -32805; CHECK-NEXT: .cfi_offset %r15, -24806; CHECK-NEXT: .cfi_offset %rbp, -16807; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill808; CHECK-NEXT: #APP809; CHECK-NEXT: nop810; CHECK-NEXT: #NO_APP811; CHECK-NEXT: t1mskcq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload812; CHECK-NEXT: popq %rbx813; CHECK-NEXT: .cfi_def_cfa_offset 48814; CHECK-NEXT: popq %r12815; CHECK-NEXT: .cfi_def_cfa_offset 40816; CHECK-NEXT: popq %r13817; CHECK-NEXT: .cfi_def_cfa_offset 32818; CHECK-NEXT: popq %r14819; CHECK-NEXT: .cfi_def_cfa_offset 24820; CHECK-NEXT: popq %r15821; CHECK-NEXT: .cfi_def_cfa_offset 16822; CHECK-NEXT: popq %rbp823; CHECK-NEXT: .cfi_def_cfa_offset 8824; CHECK-NEXT: retq825 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()826 %2 = add i64 %a0, 1827 %3 = xor i64 %a0, -1828 %4 = or i64 %2, %3829 ret i64 %4830}831 832define i32 @stack_fold_tzmsk_u32(i32 %a0) {833; CHECK-LABEL: stack_fold_tzmsk_u32:834; CHECK: # %bb.0:835; CHECK-NEXT: pushq %rbp836; CHECK-NEXT: .cfi_def_cfa_offset 16837; CHECK-NEXT: pushq %r15838; CHECK-NEXT: .cfi_def_cfa_offset 24839; CHECK-NEXT: pushq %r14840; CHECK-NEXT: .cfi_def_cfa_offset 32841; CHECK-NEXT: pushq %r13842; CHECK-NEXT: .cfi_def_cfa_offset 40843; CHECK-NEXT: pushq %r12844; CHECK-NEXT: .cfi_def_cfa_offset 48845; CHECK-NEXT: pushq %rbx846; CHECK-NEXT: .cfi_def_cfa_offset 56847; CHECK-NEXT: .cfi_offset %rbx, -56848; CHECK-NEXT: .cfi_offset %r12, -48849; CHECK-NEXT: .cfi_offset %r13, -40850; CHECK-NEXT: .cfi_offset %r14, -32851; CHECK-NEXT: .cfi_offset %r15, -24852; CHECK-NEXT: .cfi_offset %rbp, -16853; CHECK-NEXT: movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill854; CHECK-NEXT: #APP855; CHECK-NEXT: nop856; CHECK-NEXT: #NO_APP857; CHECK-NEXT: tzmskl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Folded Reload858; CHECK-NEXT: popq %rbx859; CHECK-NEXT: .cfi_def_cfa_offset 48860; CHECK-NEXT: popq %r12861; CHECK-NEXT: .cfi_def_cfa_offset 40862; CHECK-NEXT: popq %r13863; CHECK-NEXT: .cfi_def_cfa_offset 32864; CHECK-NEXT: popq %r14865; CHECK-NEXT: .cfi_def_cfa_offset 24866; CHECK-NEXT: popq %r15867; CHECK-NEXT: .cfi_def_cfa_offset 16868; CHECK-NEXT: popq %rbp869; CHECK-NEXT: .cfi_def_cfa_offset 8870; CHECK-NEXT: retq871 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()872 %2 = sub i32 %a0, 1873 %3 = xor i32 %a0, -1874 %4 = and i32 %2, %3875 ret i32 %4876}877 878define i64 @stack_fold_tzmsk_u64(i64 %a0) {879; CHECK-LABEL: stack_fold_tzmsk_u64:880; CHECK: # %bb.0:881; CHECK-NEXT: pushq %rbp882; CHECK-NEXT: .cfi_def_cfa_offset 16883; CHECK-NEXT: pushq %r15884; CHECK-NEXT: .cfi_def_cfa_offset 24885; CHECK-NEXT: pushq %r14886; CHECK-NEXT: .cfi_def_cfa_offset 32887; CHECK-NEXT: pushq %r13888; CHECK-NEXT: .cfi_def_cfa_offset 40889; CHECK-NEXT: pushq %r12890; CHECK-NEXT: .cfi_def_cfa_offset 48891; CHECK-NEXT: pushq %rbx892; CHECK-NEXT: .cfi_def_cfa_offset 56893; CHECK-NEXT: .cfi_offset %rbx, -56894; CHECK-NEXT: .cfi_offset %r12, -48895; CHECK-NEXT: .cfi_offset %r13, -40896; CHECK-NEXT: .cfi_offset %r14, -32897; CHECK-NEXT: .cfi_offset %r15, -24898; CHECK-NEXT: .cfi_offset %rbp, -16899; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill900; CHECK-NEXT: #APP901; CHECK-NEXT: nop902; CHECK-NEXT: #NO_APP903; CHECK-NEXT: tzmskq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload904; CHECK-NEXT: popq %rbx905; CHECK-NEXT: .cfi_def_cfa_offset 48906; CHECK-NEXT: popq %r12907; CHECK-NEXT: .cfi_def_cfa_offset 40908; CHECK-NEXT: popq %r13909; CHECK-NEXT: .cfi_def_cfa_offset 32910; CHECK-NEXT: popq %r14911; CHECK-NEXT: .cfi_def_cfa_offset 24912; CHECK-NEXT: popq %r15913; CHECK-NEXT: .cfi_def_cfa_offset 16914; CHECK-NEXT: popq %rbp915; CHECK-NEXT: .cfi_def_cfa_offset 8916; CHECK-NEXT: retq917 %1 = tail call i64 asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()918 %2 = sub i64 %a0, 1919 %3 = xor i64 %a0, -1920 %4 = and i64 %2, %3921 ret i64 %4922}923