brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 2b692bf Raw
224 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s -check-prefix=X643; RUN: llc < %s -mtriple=i686-apple-darwin   | FileCheck %s -check-prefix=X864 5; rdar://73292066 7; In 32-bit the partial register stall would degrade performance.8 9define zeroext i16 @test1(i16 zeroext %c, i16 zeroext %k) nounwind ssp {10; X64-LABEL: test1:11; X64:       ## %bb.0: ## %entry12; X64-NEXT:    movl %esi, %eax13; X64-NEXT:    incl %esi14; X64-NEXT:    cmpw %di, %ax15; X64-NEXT:    jne LBB0_216; X64-NEXT:  ## %bb.1: ## %bb17; X64-NEXT:    pushq %rbx18; X64-NEXT:    movzwl %si, %ebx19; X64-NEXT:    movl %ebx, %edi20; X64-NEXT:    callq _foo21; X64-NEXT:    movl %ebx, %eax22; X64-NEXT:    popq %rbx23; X64-NEXT:    retq24; X64-NEXT:  LBB0_2: ## %bb125; X64-NEXT:    movzwl %si, %eax26; X64-NEXT:    retq27;28; X86-LABEL: test1:29; X86:       ## %bb.0: ## %entry30; X86-NEXT:    pushl %esi31; X86-NEXT:    subl $8, %esp32; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax33; X86-NEXT:    movl %eax, %ecx34; X86-NEXT:    incl %eax35; X86-NEXT:    cmpw {{[0-9]+}}(%esp), %cx36; X86-NEXT:    jne LBB0_237; X86-NEXT:  ## %bb.1: ## %bb38; X86-NEXT:    movzwl %ax, %esi39; X86-NEXT:    movl %esi, (%esp)40; X86-NEXT:    calll _foo41; X86-NEXT:    movl %esi, %eax42; X86-NEXT:    jmp LBB0_343; X86-NEXT:  LBB0_2: ## %bb144; X86-NEXT:    movzwl %ax, %eax45; X86-NEXT:  LBB0_3: ## %bb146; X86-NEXT:    addl $8, %esp47; X86-NEXT:    popl %esi48; X86-NEXT:    retl49entry:50  %0 = icmp eq i16 %k, %c51  %1 = add i16 %k, 152  br i1 %0, label %bb, label %bb153 54bb:55  tail call void @foo(i16 zeroext %1) nounwind56  ret i16 %157 58bb1:59  ret i16 %160}61 62define zeroext i16 @test2(i16 zeroext %c, i16 zeroext %k) nounwind ssp {63; X64-LABEL: test2:64; X64:       ## %bb.0: ## %entry65; X64-NEXT:    movl %esi, %eax66; X64-NEXT:    decl %esi67; X64-NEXT:    cmpw %di, %ax68; X64-NEXT:    jne LBB1_269; X64-NEXT:  ## %bb.1: ## %bb70; X64-NEXT:    pushq %rbx71; X64-NEXT:    movzwl %si, %ebx72; X64-NEXT:    movl %ebx, %edi73; X64-NEXT:    callq _foo74; X64-NEXT:    movl %ebx, %eax75; X64-NEXT:    popq %rbx76; X64-NEXT:    retq77; X64-NEXT:  LBB1_2: ## %bb178; X64-NEXT:    movzwl %si, %eax79; X64-NEXT:    retq80;81; X86-LABEL: test2:82; X86:       ## %bb.0: ## %entry83; X86-NEXT:    pushl %esi84; X86-NEXT:    subl $8, %esp85; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax86; X86-NEXT:    movl %eax, %ecx87; X86-NEXT:    decl %eax88; X86-NEXT:    cmpw {{[0-9]+}}(%esp), %cx89; X86-NEXT:    jne LBB1_290; X86-NEXT:  ## %bb.1: ## %bb91; X86-NEXT:    movzwl %ax, %esi92; X86-NEXT:    movl %esi, (%esp)93; X86-NEXT:    calll _foo94; X86-NEXT:    movl %esi, %eax95; X86-NEXT:    jmp LBB1_396; X86-NEXT:  LBB1_2: ## %bb197; X86-NEXT:    movzwl %ax, %eax98; X86-NEXT:  LBB1_3: ## %bb199; X86-NEXT:    addl $8, %esp100; X86-NEXT:    popl %esi101; X86-NEXT:    retl102entry:103  %0 = icmp eq i16 %k, %c104  %1 = add i16 %k, -1105  br i1 %0, label %bb, label %bb1106 107bb:108  tail call void @foo(i16 zeroext %1) nounwind109  ret i16 %1110 111bb1:112  ret i16 %1113}114 115declare void @foo(i16 zeroext)116 117define zeroext i16 @test3(i16 zeroext %c, i16 zeroext %k) nounwind ssp {118; X64-LABEL: test3:119; X64:       ## %bb.0: ## %entry120; X64-NEXT:    movl %esi, %eax121; X64-NEXT:    addl $2, %esi122; X64-NEXT:    cmpw %di, %ax123; X64-NEXT:    jne LBB2_2124; X64-NEXT:  ## %bb.1: ## %bb125; X64-NEXT:    pushq %rbx126; X64-NEXT:    movzwl %si, %ebx127; X64-NEXT:    movl %ebx, %edi128; X64-NEXT:    callq _foo129; X64-NEXT:    movl %ebx, %eax130; X64-NEXT:    popq %rbx131; X64-NEXT:    retq132; X64-NEXT:  LBB2_2: ## %bb1133; X64-NEXT:    movzwl %si, %eax134; X64-NEXT:    retq135;136; X86-LABEL: test3:137; X86:       ## %bb.0: ## %entry138; X86-NEXT:    pushl %esi139; X86-NEXT:    subl $8, %esp140; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax141; X86-NEXT:    movl %eax, %ecx142; X86-NEXT:    addl $2, %eax143; X86-NEXT:    cmpw {{[0-9]+}}(%esp), %cx144; X86-NEXT:    jne LBB2_2145; X86-NEXT:  ## %bb.1: ## %bb146; X86-NEXT:    movzwl %ax, %esi147; X86-NEXT:    movl %esi, (%esp)148; X86-NEXT:    calll _foo149; X86-NEXT:    movl %esi, %eax150; X86-NEXT:    jmp LBB2_3151; X86-NEXT:  LBB2_2: ## %bb1152; X86-NEXT:    movzwl %ax, %eax153; X86-NEXT:  LBB2_3: ## %bb1154; X86-NEXT:    addl $8, %esp155; X86-NEXT:    popl %esi156; X86-NEXT:    retl157entry:158  %0 = add i16 %k, 2159  %1 = icmp eq i16 %k, %c160  br i1 %1, label %bb, label %bb1161 162bb:163  tail call void @foo(i16 zeroext %0) nounwind164  ret i16 %0165 166bb1:167  ret i16 %0168}169 170define zeroext i16 @test4(i16 zeroext %c, i16 zeroext %k) nounwind ssp {171; X64-LABEL: test4:172; X64:       ## %bb.0: ## %entry173; X64-NEXT:    movl %esi, %eax174; X64-NEXT:    addl %edi, %esi175; X64-NEXT:    cmpw %di, %ax176; X64-NEXT:    jne LBB3_2177; X64-NEXT:  ## %bb.1: ## %bb178; X64-NEXT:    pushq %rbx179; X64-NEXT:    movzwl %si, %ebx180; X64-NEXT:    movl %ebx, %edi181; X64-NEXT:    callq _foo182; X64-NEXT:    movl %ebx, %eax183; X64-NEXT:    popq %rbx184; X64-NEXT:    retq185; X64-NEXT:  LBB3_2: ## %bb1186; X64-NEXT:    movzwl %si, %eax187; X64-NEXT:    retq188;189; X86-LABEL: test4:190; X86:       ## %bb.0: ## %entry191; X86-NEXT:    pushl %esi192; X86-NEXT:    subl $8, %esp193; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx194; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax195; X86-NEXT:    movl %eax, %edx196; X86-NEXT:    addl %ecx, %eax197; X86-NEXT:    cmpw %cx, %dx198; X86-NEXT:    jne LBB3_2199; X86-NEXT:  ## %bb.1: ## %bb200; X86-NEXT:    movzwl %ax, %esi201; X86-NEXT:    movl %esi, (%esp)202; X86-NEXT:    calll _foo203; X86-NEXT:    movl %esi, %eax204; X86-NEXT:    jmp LBB3_3205; X86-NEXT:  LBB3_2: ## %bb1206; X86-NEXT:    movzwl %ax, %eax207; X86-NEXT:  LBB3_3: ## %bb1208; X86-NEXT:    addl $8, %esp209; X86-NEXT:    popl %esi210; X86-NEXT:    retl211entry:212  %0 = add i16 %k, %c213  %1 = icmp eq i16 %k, %c214  br i1 %1, label %bb, label %bb1215 216bb:217  tail call void @foo(i16 zeroext %0) nounwind218  ret i16 %0219 220bb1:221  ret i16 %0222}223 224