brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · d700566 Raw
216 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -fast-isel -mtriple=i686-unknown-unknown -mattr=+tbm | FileCheck %s --check-prefix=X863; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+tbm | FileCheck %s --check-prefix=X644 5; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/tbm-builtins.c6 7define i32 @test__bextri_u32(i32 %a0) {8; X86-LABEL: test__bextri_u32:9; X86:       # %bb.0:10; X86-NEXT:    bextrl $3841, {{[0-9]+}}(%esp), %eax # imm = 0xF0111; X86-NEXT:    retl12;13; X64-LABEL: test__bextri_u32:14; X64:       # %bb.0:15; X64-NEXT:    bextrl $3841, %edi, %eax # imm = 0xF0116; X64-NEXT:    retq17  %1 = call i32 @llvm.x86.tbm.bextri.u32(i32 %a0, i32 3841)18  ret i32 %119}20 21define i32 @test__blcfill_u32(i32 %a0) {22; X86-LABEL: test__blcfill_u32:23; X86:       # %bb.0:24; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx25; X86-NEXT:    leal 1(%ecx), %eax26; X86-NEXT:    andl %ecx, %eax27; X86-NEXT:    retl28;29; X64-LABEL: test__blcfill_u32:30; X64:       # %bb.0:31; X64-NEXT:    # kill: def $edi killed $edi def $rdi32; X64-NEXT:    leal 1(%rdi), %eax33; X64-NEXT:    andl %edi, %eax34; X64-NEXT:    retq35  %1 = add i32 %a0, 136  %2 = and i32 %a0, %137  ret i32 %238}39 40define i32 @test__blci_u32(i32 %a0) {41; X86-LABEL: test__blci_u32:42; X86:       # %bb.0:43; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx44; X86-NEXT:    leal 1(%ecx), %eax45; X86-NEXT:    xorl $-1, %eax46; X86-NEXT:    orl %ecx, %eax47; X86-NEXT:    retl48;49; X64-LABEL: test__blci_u32:50; X64:       # %bb.0:51; X64-NEXT:    # kill: def $edi killed $edi def $rdi52; X64-NEXT:    leal 1(%rdi), %eax53; X64-NEXT:    xorl $-1, %eax54; X64-NEXT:    orl %edi, %eax55; X64-NEXT:    retq56  %1 = add i32 %a0, 157  %2 = xor i32 %1, -158  %3 = or i32 %a0, %259  ret i32 %360}61 62define i32 @test__blcic_u32(i32 %a0) {63; X86-LABEL: test__blcic_u32:64; X86:       # %bb.0:65; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax66; X86-NEXT:    movl %eax, %ecx67; X86-NEXT:    xorl $-1, %ecx68; X86-NEXT:    addl $1, %eax69; X86-NEXT:    andl %ecx, %eax70; X86-NEXT:    retl71;72; X64-LABEL: test__blcic_u32:73; X64:       # %bb.0:74; X64-NEXT:    # kill: def $edi killed $edi def $rdi75; X64-NEXT:    leal 1(%rdi), %eax76; X64-NEXT:    movl %edi, %ecx77; X64-NEXT:    xorl $-1, %ecx78; X64-NEXT:    andl %ecx, %eax79; X64-NEXT:    retq80  %1 = xor i32 %a0, -181  %2 = add i32 %a0, 182  %3 = and i32 %1, %283  ret i32 %384}85 86define i32 @test__blcmsk_u32(i32 %a0) {87; X86-LABEL: test__blcmsk_u32:88; X86:       # %bb.0:89; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx90; X86-NEXT:    leal 1(%ecx), %eax91; X86-NEXT:    xorl %ecx, %eax92; X86-NEXT:    retl93;94; X64-LABEL: test__blcmsk_u32:95; X64:       # %bb.0:96; X64-NEXT:    # kill: def $edi killed $edi def $rdi97; X64-NEXT:    leal 1(%rdi), %eax98; X64-NEXT:    xorl %edi, %eax99; X64-NEXT:    retq100  %1 = add i32 %a0, 1101  %2 = xor i32 %a0, %1102  ret i32 %2103}104 105define i32 @test__blcs_u32(i32 %a0) {106; X86-LABEL: test__blcs_u32:107; X86:       # %bb.0:108; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx109; X86-NEXT:    leal 1(%ecx), %eax110; X86-NEXT:    orl %ecx, %eax111; X86-NEXT:    retl112;113; X64-LABEL: test__blcs_u32:114; X64:       # %bb.0:115; X64-NEXT:    # kill: def $edi killed $edi def $rdi116; X64-NEXT:    leal 1(%rdi), %eax117; X64-NEXT:    orl %edi, %eax118; X64-NEXT:    retq119  %1 = add i32 %a0, 1120  %2 = or i32 %a0, %1121  ret i32 %2122}123 124define i32 @test__blsfill_u32(i32 %a0) {125; X86-LABEL: test__blsfill_u32:126; X86:       # %bb.0:127; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx128; X86-NEXT:    leal -1(%ecx), %eax129; X86-NEXT:    orl %ecx, %eax130; X86-NEXT:    retl131;132; X64-LABEL: test__blsfill_u32:133; X64:       # %bb.0:134; X64-NEXT:    # kill: def $edi killed $edi def $rdi135; X64-NEXT:    leal -1(%rdi), %eax136; X64-NEXT:    orl %edi, %eax137; X64-NEXT:    retq138  %1 = sub i32 %a0, 1139  %2 = or i32 %a0, %1140  ret i32 %2141}142 143define i32 @test__blsic_u32(i32 %a0) {144; X86-LABEL: test__blsic_u32:145; X86:       # %bb.0:146; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax147; X86-NEXT:    movl %eax, %ecx148; X86-NEXT:    xorl $-1, %ecx149; X86-NEXT:    subl $1, %eax150; X86-NEXT:    orl %ecx, %eax151; X86-NEXT:    retl152;153; X64-LABEL: test__blsic_u32:154; X64:       # %bb.0:155; X64-NEXT:    # kill: def $edi killed $edi def $rdi156; X64-NEXT:    leal -1(%rdi), %eax157; X64-NEXT:    movl %edi, %ecx158; X64-NEXT:    xorl $-1, %ecx159; X64-NEXT:    orl %ecx, %eax160; X64-NEXT:    retq161  %1 = xor i32 %a0, -1162  %2 = sub i32 %a0, 1163  %3 = or i32 %1, %2164  ret i32 %3165}166 167define i32 @test__t1mskc_u32(i32 %a0) {168; X86-LABEL: test__t1mskc_u32:169; X86:       # %bb.0:170; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax171; X86-NEXT:    movl %eax, %ecx172; X86-NEXT:    xorl $-1, %ecx173; X86-NEXT:    addl $1, %eax174; X86-NEXT:    orl %ecx, %eax175; X86-NEXT:    retl176;177; X64-LABEL: test__t1mskc_u32:178; X64:       # %bb.0:179; X64-NEXT:    # kill: def $edi killed $edi def $rdi180; X64-NEXT:    leal 1(%rdi), %eax181; X64-NEXT:    movl %edi, %ecx182; X64-NEXT:    xorl $-1, %ecx183; X64-NEXT:    orl %ecx, %eax184; X64-NEXT:    retq185  %1 = xor i32 %a0, -1186  %2 = add i32 %a0, 1187  %3 = or i32 %1, %2188  ret i32 %3189}190 191define i32 @test__tzmsk_u32(i32 %a0) {192; X86-LABEL: test__tzmsk_u32:193; X86:       # %bb.0:194; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax195; X86-NEXT:    movl %eax, %ecx196; X86-NEXT:    xorl $-1, %ecx197; X86-NEXT:    subl $1, %eax198; X86-NEXT:    andl %ecx, %eax199; X86-NEXT:    retl200;201; X64-LABEL: test__tzmsk_u32:202; X64:       # %bb.0:203; X64-NEXT:    # kill: def $edi killed $edi def $rdi204; X64-NEXT:    leal -1(%rdi), %eax205; X64-NEXT:    movl %edi, %ecx206; X64-NEXT:    xorl $-1, %ecx207; X64-NEXT:    andl %ecx, %eax208; X64-NEXT:    retq209  %1 = xor i32 %a0, -1210  %2 = sub i32 %a0, 1211  %3 = and i32 %1, %2212  ret i32 %3213}214 215declare i32 @llvm.x86.tbm.bextri.u32(i32, i32)216