brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 87ad3a4 Raw
217 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s3 4; Utilize implicit zero-extension on x86-64 to eliminate explicit5; zero-extensions. Shrink 64-bit adds to 32-bit when the high6; 32-bits will be zeroed.7 8define void @bar(i64 %x, i64 %y, ptr %z) nounwind readnone {9; CHECK-LABEL: bar:10; CHECK:       # %bb.0: # %entry11; CHECK-NEXT:    addl %esi, %edi12; CHECK-NEXT:    movq %rdi, (%rdx)13; CHECK-NEXT:    retq14entry:15	%t0 = add i64 %x, %y16	%t1 = and i64 %t0, 429496729517        store i64 %t1, ptr %z18	ret void19}20define void @easy(i32 %x, i32 %y, ptr %z) nounwind readnone {21; CHECK-LABEL: easy:22; CHECK:       # %bb.0: # %entry23; CHECK-NEXT:    # kill: def $edi killed $edi def $rdi24; CHECK-NEXT:    addl %esi, %edi25; CHECK-NEXT:    movq %rdi, (%rdx)26; CHECK-NEXT:    retq27entry:28	%t0 = add i32 %x, %y29        %tn = zext i32 %t0 to i6430	%t1 = and i64 %tn, 429496729531        store i64 %t1, ptr %z32	ret void33}34define void @cola(ptr%x, i64 %y, ptr %z, i64 %u) nounwind readnone {35; CHECK-LABEL: cola:36; CHECK:       # %bb.0: # %entry37; CHECK-NEXT:    addl (%rdi), %esi38; CHECK-NEXT:    xorq %rcx, %rsi39; CHECK-NEXT:    movq %rsi, (%rdx)40; CHECK-NEXT:    retq41entry:42        %p = load i64, ptr %x43	%t0 = add i64 %p, %y44	%t1 = and i64 %t0, 429496729545        %t2 = xor i64 %t1, %u46        store i64 %t2, ptr %z47	ret void48}49define void @yaks(ptr%x, i64 %y, ptr %z, i64 %u) nounwind readnone {50; CHECK-LABEL: yaks:51; CHECK:       # %bb.0: # %entry52; CHECK-NEXT:    addl (%rdi), %esi53; CHECK-NEXT:    xorl %esi, %ecx54; CHECK-NEXT:    movq %rcx, (%rdx)55; CHECK-NEXT:    retq56entry:57        %p = load i64, ptr %x58	%t0 = add i64 %p, %y59        %t1 = xor i64 %t0, %u60	%t2 = and i64 %t1, 429496729561        store i64 %t2, ptr %z62	ret void63}64define void @foo(ptr%x, ptr%y, ptr %z) nounwind readnone {65; CHECK-LABEL: foo:66; CHECK:       # %bb.0: # %entry67; CHECK-NEXT:    movl (%rdi), %eax68; CHECK-NEXT:    addl (%rsi), %eax69; CHECK-NEXT:    movq %rax, (%rdx)70; CHECK-NEXT:    retq71entry:72        %a = load i64, ptr %x73        %b = load i64, ptr %y74	%t0 = add i64 %a, %b75	%t1 = and i64 %t0, 429496729576        store i64 %t1, ptr %z77	ret void78}79define void @avo(i64 %x, ptr %z, i64 %u) nounwind readnone {80; CHECK-LABEL: avo:81; CHECK:       # %bb.0: # %entry82; CHECK-NEXT:    addl $734847, %edi # imm = 0xB367F83; CHECK-NEXT:    xorq %rdx, %rdi84; CHECK-NEXT:    movq %rdi, (%rsi)85; CHECK-NEXT:    retq86entry:87	%t0 = add i64 %x, 73484788	%t1 = and i64 %t0, 429496729589        %t2 = xor i64 %t1, %u90        store i64 %t2, ptr %z91	ret void92}93define void @phe(i64 %x, ptr %z, i64 %u) nounwind readnone {94; CHECK-LABEL: phe:95; CHECK:       # %bb.0: # %entry96; CHECK-NEXT:    addl $734847, %edi # imm = 0xB367F97; CHECK-NEXT:    xorl %edi, %edx98; CHECK-NEXT:    movq %rdx, (%rsi)99; CHECK-NEXT:    retq100entry:101	%t0 = add i64 %x, 734847102        %t1 = xor i64 %t0, %u103	%t2 = and i64 %t1, 4294967295104        store i64 %t2, ptr %z105	ret void106}107define void @oze(i64 %y, ptr %z) nounwind readnone {108; CHECK-LABEL: oze:109; CHECK:       # %bb.0: # %entry110; CHECK-NEXT:    incl %edi111; CHECK-NEXT:    movq %rdi, (%rsi)112; CHECK-NEXT:    retq113entry:114	%t0 = add i64 %y, 1115	%t1 = and i64 %t0, 4294967295116        store i64 %t1, ptr %z117	ret void118}119 120define void @sbar(i64 %x, i64 %y, ptr %z) nounwind readnone {121; CHECK-LABEL: sbar:122; CHECK:       # %bb.0: # %entry123; CHECK-NEXT:    subl %esi, %edi124; CHECK-NEXT:    movq %rdi, (%rdx)125; CHECK-NEXT:    retq126entry:127	%t0 = sub i64 %x, %y128	%t1 = and i64 %t0, 4294967295129        store i64 %t1, ptr %z130	ret void131}132define void @seasy(i32 %x, i32 %y, ptr %z) nounwind readnone {133; CHECK-LABEL: seasy:134; CHECK:       # %bb.0: # %entry135; CHECK-NEXT:    # kill: def $edi killed $edi def $rdi136; CHECK-NEXT:    subl %esi, %edi137; CHECK-NEXT:    movq %rdi, (%rdx)138; CHECK-NEXT:    retq139entry:140	%t0 = sub i32 %x, %y141        %tn = zext i32 %t0 to i64142	%t1 = and i64 %tn, 4294967295143        store i64 %t1, ptr %z144	ret void145}146define void @scola(ptr%x, i64 %y, ptr %z, i64 %u) nounwind readnone {147; CHECK-LABEL: scola:148; CHECK:       # %bb.0: # %entry149; CHECK-NEXT:    movl (%rdi), %eax150; CHECK-NEXT:    subl %esi, %eax151; CHECK-NEXT:    xorq %rcx, %rax152; CHECK-NEXT:    movq %rax, (%rdx)153; CHECK-NEXT:    retq154entry:155        %p = load i64, ptr %x156	%t0 = sub i64 %p, %y157	%t1 = and i64 %t0, 4294967295158        %t2 = xor i64 %t1, %u159        store i64 %t2, ptr %z160	ret void161}162define void @syaks(ptr%x, i64 %y, ptr %z, i64 %u) nounwind readnone {163; CHECK-LABEL: syaks:164; CHECK:       # %bb.0: # %entry165; CHECK-NEXT:    movl (%rdi), %eax166; CHECK-NEXT:    subl %esi, %eax167; CHECK-NEXT:    xorl %eax, %ecx168; CHECK-NEXT:    movq %rcx, (%rdx)169; CHECK-NEXT:    retq170entry:171        %p = load i64, ptr %x172	%t0 = sub i64 %p, %y173        %t1 = xor i64 %t0, %u174	%t2 = and i64 %t1, 4294967295175        store i64 %t2, ptr %z176	ret void177}178define void @sfoo(ptr%x, ptr%y, ptr %z) nounwind readnone {179; CHECK-LABEL: sfoo:180; CHECK:       # %bb.0: # %entry181; CHECK-NEXT:    movl (%rdi), %eax182; CHECK-NEXT:    subl (%rsi), %eax183; CHECK-NEXT:    movq %rax, (%rdx)184; CHECK-NEXT:    retq185entry:186        %a = load i64, ptr %x187        %b = load i64, ptr %y188	%t0 = sub i64 %a, %b189	%t1 = and i64 %t0, 4294967295190        store i64 %t1, ptr %z191	ret void192}193define void @swya(i64 %y, ptr %z) nounwind readnone {194; CHECK-LABEL: swya:195; CHECK:       # %bb.0: # %entry196; CHECK-NEXT:    negl %edi197; CHECK-NEXT:    movq %rdi, (%rsi)198; CHECK-NEXT:    retq199entry:200	%t0 = sub i64 0, %y201	%t1 = and i64 %t0, 4294967295202        store i64 %t1, ptr %z203	ret void204}205define void @soze(i64 %y, ptr %z) nounwind readnone {206; CHECK-LABEL: soze:207; CHECK:       # %bb.0: # %entry208; CHECK-NEXT:    decl %edi209; CHECK-NEXT:    movq %rdi, (%rsi)210; CHECK-NEXT:    retq211entry:212	%t0 = sub i64 %y, 1213	%t1 = and i64 %t0, 4294967295214        store i64 %t1, ptr %z215	ret void216}217