brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · a980351 Raw
93 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux-gnu -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X643; RUN: llc -mtriple=i686-linux-gnu -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X864 5define i8 @test_mul_i8(i8 %arg1, i8 %arg2) nounwind {6; X64-LABEL: test_mul_i8:7; X64:       # %bb.0:8; X64-NEXT:    movsbl %dil, %eax9; X64-NEXT:    imulb %sil10; X64-NEXT:    retq11;12; X86-LABEL: test_mul_i8:13; X86:       # %bb.0:14; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax15; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx16; X86-NEXT:    cbtw17; X86-NEXT:    imulb %cl18; X86-NEXT:    retl19  %ret = mul i8 %arg1, %arg220  ret i8 %ret21}22 23define i16 @test_mul_i16(i16 %arg1, i16 %arg2) nounwind {24; X64-LABEL: test_mul_i16:25; X64:       # %bb.0:26; X64-NEXT:    movl %esi, %eax27; X64-NEXT:    imulw %di, %ax28; X64-NEXT:    # kill: def $ax killed $ax killed $eax29; X64-NEXT:    retq30;31; X86-LABEL: test_mul_i16:32; X86:       # %bb.0:33; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx34; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax35; X86-NEXT:    imulw %cx, %ax36; X86-NEXT:    # kill: def $ax killed $ax killed $eax37; X86-NEXT:    retl38  %ret = mul i16 %arg1, %arg239  ret i16 %ret40}41 42define i32 @test_mul_i32(i32 %arg1, i32 %arg2) nounwind {43; X64-LABEL: test_mul_i32:44; X64:       # %bb.0:45; X64-NEXT:    movl %esi, %eax46; X64-NEXT:    imull %edi, %eax47; X64-NEXT:    retq48;49; X86-LABEL: test_mul_i32:50; X86:       # %bb.0:51; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax52; X86-NEXT:    imull {{[0-9]+}}(%esp), %eax53; X86-NEXT:    retl54  %ret = mul i32 %arg1, %arg255  ret i32 %ret56}57 58define i64 @test_mul_i64(i64 %arg1, i64 %arg2) nounwind {59; X64-LABEL: test_mul_i64:60; X64:       # %bb.0:61; X64-NEXT:    movq %rsi, %rax62; X64-NEXT:    imulq %rdi, %rax63; X64-NEXT:    retq64;65; X86-LABEL: test_mul_i64:66; X86:       # %bb.0:67; X86-NEXT:    pushl %edi68; X86-NEXT:    pushl %esi69; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax70; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx71; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi72; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx73; X86-NEXT:    imull %edx, %ecx74; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi75; X86-NEXT:    imull %edx, %edi76; X86-NEXT:    imull {{[0-9]+}}(%esp), %esi77; X86-NEXT:    addl %edi, %esi78; X86-NEXT:    mull %edx79; X86-NEXT:    addl %esi, %edx80; X86-NEXT:    movl %ecx, %eax81; X86-NEXT:    popl %esi82; X86-NEXT:    popl %edi83; X86-NEXT:    retl84  %ret = mul i64 %arg1, %arg285  ret i64 %ret86}87 88;TODO: instruction selection not supported yet89;define i128 @test_mul_i128(i128 %arg1, i128 %arg2) nounwind {90;  %ret = mul i128 %arg1, %arg291;  ret i128 %ret92;}93