brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 07ee803 Raw
166 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=i386-unknown-linux-gnu -o - %s | FileCheck %s3 4; To match GCC's behavior in assigning 64-bit values to a 32-bit5; register, we bind the a subsequence of 2 registers starting with the6; explicitly given register from the following sequence: EAX, EDX,7; ECX, EBX, ESI, EDI, EBP, ESP, to the value. There is no wrapping8; from the sequence, so this will fail given ESP.9 10define dso_local i64 @test_eax(i64 %in) local_unnamed_addr nounwind {11; CHECK-LABEL: test_eax:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    movl $-1985229329, %eax # imm = 0x89ABCDEF14; CHECK-NEXT:    movl $19088743, %edx # imm = 0x123456715; CHECK-NEXT:    #APP16; CHECK-NEXT:    movl %eax, %eax17; CHECK-NEXT:    #NO_APP18; CHECK-NEXT:    addl $3, %eax19; CHECK-NEXT:    movl %eax, %edx20; CHECK-NEXT:    sarl $31, %edx21; CHECK-NEXT:    retl22entry:23  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{eax},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)24  %conv = trunc i64 %0 to i3225  %add = add nsw i32 %conv, 326  %conv1 = sext i32 %add to i6427  ret i64 %conv128}29 30define dso_local i64 @test_edx(i64 %in) local_unnamed_addr nounwind {31; CHECK-LABEL: test_edx:32; CHECK:       # %bb.0: # %entry33; CHECK-NEXT:    movl $-1985229329, %edx # imm = 0x89ABCDEF34; CHECK-NEXT:    movl $19088743, %ecx # imm = 0x123456735; CHECK-NEXT:    #APP36; CHECK-NEXT:    movl %edx, %eax37; CHECK-NEXT:    #NO_APP38; CHECK-NEXT:    addl $3, %eax39; CHECK-NEXT:    movl %eax, %edx40; CHECK-NEXT:    sarl $31, %edx41; CHECK-NEXT:    retl42entry:43  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{edx},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)44  %conv = trunc i64 %0 to i3245  %add = add nsw i32 %conv, 346  %conv1 = sext i32 %add to i6447  ret i64 %conv148}49 50define dso_local i64 @test_ecx(i64 %in) local_unnamed_addr nounwind {51; CHECK-LABEL: test_ecx:52; CHECK:       # %bb.0: # %entry53; CHECK-NEXT:    pushl %ebx54; CHECK-NEXT:    movl $-1985229329, %ecx # imm = 0x89ABCDEF55; CHECK-NEXT:    movl $19088743, %ebx # imm = 0x123456756; CHECK-NEXT:    #APP57; CHECK-NEXT:    movl %ecx, %eax58; CHECK-NEXT:    #NO_APP59; CHECK-NEXT:    addl $3, %eax60; CHECK-NEXT:    movl %eax, %edx61; CHECK-NEXT:    sarl $31, %edx62; CHECK-NEXT:    popl %ebx63; CHECK-NEXT:    retl64entry:65  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{ecx},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)66  %conv = trunc i64 %0 to i3267  %add = add nsw i32 %conv, 368  %conv1 = sext i32 %add to i6469  ret i64 %conv170}71 72define dso_local i64 @test_ebx(i64 %in) local_unnamed_addr nounwind {73; CHECK-LABEL: test_ebx:74; CHECK:       # %bb.0: # %entry75; CHECK-NEXT:    pushl %ebx76; CHECK-NEXT:    pushl %esi77; CHECK-NEXT:    movl $-1985229329, %ebx # imm = 0x89ABCDEF78; CHECK-NEXT:    movl $19088743, %esi # imm = 0x123456779; CHECK-NEXT:    #APP80; CHECK-NEXT:    movl %ebx, %eax81; CHECK-NEXT:    #NO_APP82; CHECK-NEXT:    addl $3, %eax83; CHECK-NEXT:    movl %eax, %edx84; CHECK-NEXT:    sarl $31, %edx85; CHECK-NEXT:    popl %esi86; CHECK-NEXT:    popl %ebx87; CHECK-NEXT:    retl88entry:89  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{ebx},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)90  %conv = trunc i64 %0 to i3291  %add = add nsw i32 %conv, 392  %conv1 = sext i32 %add to i6493  ret i64 %conv194}95 96define dso_local i64 @test_esi(i64 %in) local_unnamed_addr nounwind {97; CHECK-LABEL: test_esi:98; CHECK:       # %bb.0: # %entry99; CHECK-NEXT:    pushl %edi100; CHECK-NEXT:    pushl %esi101; CHECK-NEXT:    movl $-1985229329, %esi # imm = 0x89ABCDEF102; CHECK-NEXT:    movl $19088743, %edi # imm = 0x1234567103; CHECK-NEXT:    #APP104; CHECK-NEXT:    movl %esi, %eax105; CHECK-NEXT:    #NO_APP106; CHECK-NEXT:    addl $3, %eax107; CHECK-NEXT:    movl %eax, %edx108; CHECK-NEXT:    sarl $31, %edx109; CHECK-NEXT:    popl %esi110; CHECK-NEXT:    popl %edi111; CHECK-NEXT:    retl112entry:113  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{esi},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)114  %conv = trunc i64 %0 to i32115  %add = add nsw i32 %conv, 3116  %conv1 = sext i32 %add to i64117  ret i64 %conv1118}119 120define dso_local i64 @test_edi(i64 %in) local_unnamed_addr nounwind {121; CHECK-LABEL: test_edi:122; CHECK:       # %bb.0: # %entry123; CHECK-NEXT:    pushl %ebp124; CHECK-NEXT:    pushl %edi125; CHECK-NEXT:    movl $-1985229329, %edi # imm = 0x89ABCDEF126; CHECK-NEXT:    movl $19088743, %ebp # imm = 0x1234567127; CHECK-NEXT:    #APP128; CHECK-NEXT:    movl %edi, %eax129; CHECK-NEXT:    #NO_APP130; CHECK-NEXT:    addl $3, %eax131; CHECK-NEXT:    movl %eax, %edx132; CHECK-NEXT:    sarl $31, %edx133; CHECK-NEXT:    popl %edi134; CHECK-NEXT:    popl %ebp135; CHECK-NEXT:    retl136entry:137  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{edi},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)138  %conv = trunc i64 %0 to i32139  %add = add nsw i32 %conv, 3140  %conv1 = sext i32 %add to i64141  ret i64 %conv1142}143 144define dso_local i64 @test_ebp(i64 %in) local_unnamed_addr nounwind {145; CHECK-LABEL: test_ebp:146; CHECK:       # %bb.0: # %entry147; CHECK-NEXT:    pushl %ebp148; CHECK-NEXT:    movl $-1985229329, %ebp # imm = 0x89ABCDEF149; CHECK-NEXT:    movl $19088743, %esp # imm = 0x1234567150; CHECK-NEXT:    #APP151; CHECK-NEXT:    movl %ebp, %eax152; CHECK-NEXT:    #NO_APP153; CHECK-NEXT:    addl $3, %eax154; CHECK-NEXT:    movl %eax, %edx155; CHECK-NEXT:    sarl $31, %edx156; CHECK-NEXT:    popl %ebp157; CHECK-NEXT:    retl158entry:159  %0 = tail call i64 asm sideeffect "mov $1, $0", "=r,{ebp},~{dirflag},~{fpsr},~{flags}"(i64 81985529216486895)160  %conv = trunc i64 %0 to i32161  %add = add nsw i32 %conv, 3162  %conv1 = sext i32 %add to i64163  ret i64 %conv1164}165 166