forked from OSchip/llvm-project
[NFC][CodeGen][X86][AArch64] Bit extract: add nounwind attr to drop .cfi noise
Forgot about that. llvm-svn: 349999
This commit is contained in:
parent
29d8af283a
commit
c90611db06
|
@ -411,7 +411,7 @@ define i64 @bextr64_b4_commutative(i64 %val, i64 %numskipbits, i64 %numlowbits)
|
||||||
; 64-bit, but with 32-bit output
|
; 64-bit, but with 32-bit output
|
||||||
|
|
||||||
; Everything done in 64-bit, truncation happens last.
|
; Everything done in 64-bit, truncation happens last.
|
||||||
define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; CHECK-LABEL: bextr64_32_b0:
|
; CHECK-LABEL: bextr64_32_b0:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: mov x9, #-1
|
; CHECK-NEXT: mov x9, #-1
|
||||||
|
@ -430,7 +430,7 @@ define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Shifting happens in 64-bit, then truncation. Masking is 32-bit.
|
; Shifting happens in 64-bit, then truncation. Masking is 32-bit.
|
||||||
define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; CHECK-LABEL: bextr64_32_b1:
|
; CHECK-LABEL: bextr64_32_b1:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: mov w9, #-1
|
; CHECK-NEXT: mov w9, #-1
|
||||||
|
@ -450,7 +450,7 @@ define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
|
|
||||||
; Shifting happens in 64-bit. Mask is 32-bit, but extended to 64-bit.
|
; Shifting happens in 64-bit. Mask is 32-bit, but extended to 64-bit.
|
||||||
; Masking is 64-bit. Then truncation.
|
; Masking is 64-bit. Then truncation.
|
||||||
define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; CHECK-LABEL: bextr64_32_b2:
|
; CHECK-LABEL: bextr64_32_b2:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: mov w9, #-1
|
; CHECK-NEXT: mov w9, #-1
|
||||||
|
@ -814,7 +814,7 @@ define i64 @bextr64_d3_load_indexzext(i64* %w, i8 %numskipbits, i8 %numlowbits)
|
||||||
; ---------------------------------------------------------------------------- ;
|
; ---------------------------------------------------------------------------- ;
|
||||||
|
|
||||||
; https://bugs.llvm.org/show_bug.cgi?id=38938
|
; https://bugs.llvm.org/show_bug.cgi?id=38938
|
||||||
define void @pr38938(i32* %a0, i64* %a1) {
|
define void @pr38938(i32* %a0, i64* %a1) nounwind {
|
||||||
; CHECK-LABEL: pr38938:
|
; CHECK-LABEL: pr38938:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ldr x8, [x1]
|
; CHECK-NEXT: ldr x8, [x1]
|
||||||
|
@ -835,7 +835,7 @@ define void @pr38938(i32* %a0, i64* %a1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define i32 @c0_i32(i32 %arg) {
|
define i32 @c0_i32(i32 %arg) nounwind {
|
||||||
; CHECK-LABEL: c0_i32:
|
; CHECK-LABEL: c0_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx w0, w0, #19, #10
|
; CHECK-NEXT: ubfx w0, w0, #19, #10
|
||||||
|
@ -846,7 +846,7 @@ define i32 @c0_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define i32 @c1_i32(i32 %arg) {
|
define i32 @c1_i32(i32 %arg) nounwind {
|
||||||
; CHECK-LABEL: c1_i32:
|
; CHECK-LABEL: c1_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: lsr w8, w0, #19
|
; CHECK-NEXT: lsr w8, w0, #19
|
||||||
|
@ -858,7 +858,7 @@ define i32 @c1_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define i32 @c2_i32(i32 %arg) {
|
define i32 @c2_i32(i32 %arg) nounwind {
|
||||||
; CHECK-LABEL: c2_i32:
|
; CHECK-LABEL: c2_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
||||||
|
@ -871,7 +871,7 @@ define i32 @c2_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The mask covers newly shifted-in bit
|
; The mask covers newly shifted-in bit
|
||||||
define i32 @c4_i32_bad(i32 %arg) {
|
define i32 @c4_i32_bad(i32 %arg) nounwind {
|
||||||
; CHECK-LABEL: c4_i32_bad:
|
; CHECK-LABEL: c4_i32_bad:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: lsr w8, w0, #19
|
; CHECK-NEXT: lsr w8, w0, #19
|
||||||
|
@ -885,7 +885,7 @@ define i32 @c4_i32_bad(i32 %arg) {
|
||||||
; i64
|
; i64
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define i64 @c0_i64(i64 %arg) {
|
define i64 @c0_i64(i64 %arg) nounwind {
|
||||||
; CHECK-LABEL: c0_i64:
|
; CHECK-LABEL: c0_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx x0, x0, #51, #10
|
; CHECK-NEXT: ubfx x0, x0, #51, #10
|
||||||
|
@ -896,7 +896,7 @@ define i64 @c0_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define i64 @c1_i64(i64 %arg) {
|
define i64 @c1_i64(i64 %arg) nounwind {
|
||||||
; CHECK-LABEL: c1_i64:
|
; CHECK-LABEL: c1_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: lsr x8, x0, #51
|
; CHECK-NEXT: lsr x8, x0, #51
|
||||||
|
@ -908,7 +908,7 @@ define i64 @c1_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define i64 @c2_i64(i64 %arg) {
|
define i64 @c2_i64(i64 %arg) nounwind {
|
||||||
; CHECK-LABEL: c2_i64:
|
; CHECK-LABEL: c2_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
||||||
|
@ -921,7 +921,7 @@ define i64 @c2_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The mask covers newly shifted-in bit
|
; The mask covers newly shifted-in bit
|
||||||
define i64 @c4_i64_bad(i64 %arg) {
|
define i64 @c4_i64_bad(i64 %arg) nounwind {
|
||||||
; CHECK-LABEL: c4_i64_bad:
|
; CHECK-LABEL: c4_i64_bad:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: lsr x8, x0, #51
|
; CHECK-NEXT: lsr x8, x0, #51
|
||||||
|
@ -939,7 +939,7 @@ define i64 @c4_i64_bad(i64 %arg) {
|
||||||
; i32
|
; i32
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define void @c5_i32(i32 %arg, i32* %ptr) {
|
define void @c5_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c5_i32:
|
; CHECK-LABEL: c5_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
||||||
|
@ -952,7 +952,7 @@ define void @c5_i32(i32 %arg, i32* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define void @c6_i32(i32 %arg, i32* %ptr) {
|
define void @c6_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c6_i32:
|
; CHECK-LABEL: c6_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx w8, w0, #19, #12
|
; CHECK-NEXT: ubfx w8, w0, #19, #12
|
||||||
|
@ -965,7 +965,7 @@ define void @c6_i32(i32 %arg, i32* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define void @c7_i32(i32 %arg, i32* %ptr) {
|
define void @c7_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c7_i32:
|
; CHECK-LABEL: c7_i32:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
; CHECK-NEXT: ubfx w8, w0, #19, #10
|
||||||
|
@ -982,7 +982,7 @@ define void @c7_i32(i32 %arg, i32* %ptr) {
|
||||||
; i64
|
; i64
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define void @c5_i64(i64 %arg, i64* %ptr) {
|
define void @c5_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c5_i64:
|
; CHECK-LABEL: c5_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
||||||
|
@ -995,7 +995,7 @@ define void @c5_i64(i64 %arg, i64* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define void @c6_i64(i64 %arg, i64* %ptr) {
|
define void @c6_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c6_i64:
|
; CHECK-LABEL: c6_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx x8, x0, #51, #12
|
; CHECK-NEXT: ubfx x8, x0, #51, #12
|
||||||
|
@ -1008,7 +1008,7 @@ define void @c6_i64(i64 %arg, i64* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define void @c7_i64(i64 %arg, i64* %ptr) {
|
define void @c7_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; CHECK-LABEL: c7_i64:
|
; CHECK-LABEL: c7_i64:
|
||||||
; CHECK: // %bb.0:
|
; CHECK: // %bb.0:
|
||||||
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
; CHECK-NEXT: ubfx x8, x0, #51, #10
|
||||||
|
|
|
@ -2972,15 +2972,11 @@ define i64 @bextr64_b5_skipextrauses(i64 %val, i64 %numskipbits, i64 %numlowbits
|
||||||
; 64-bit, but with 32-bit output
|
; 64-bit, but with 32-bit output
|
||||||
|
|
||||||
; Everything done in 64-bit, truncation happens last.
|
; Everything done in 64-bit, truncation happens last.
|
||||||
define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; X86-NOBMI-LABEL: bextr64_32_b0:
|
; X86-NOBMI-LABEL: bextr64_32_b0:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: pushl %edi
|
; X86-NOBMI-NEXT: pushl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: pushl %esi
|
; X86-NOBMI-NEXT: pushl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %esi
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %esi
|
||||||
|
@ -3005,19 +3001,13 @@ define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-NOBMI-NEXT: notl %ecx
|
; X86-NOBMI-NEXT: notl %ecx
|
||||||
; X86-NOBMI-NEXT: andl %ecx, %eax
|
; X86-NOBMI-NEXT: andl %ecx, %eax
|
||||||
; X86-NOBMI-NEXT: popl %esi
|
; X86-NOBMI-NEXT: popl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: popl %edi
|
; X86-NOBMI-NEXT: popl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-NOBMI-NEXT: retl
|
; X86-NOBMI-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1NOTBM-LABEL: bextr64_32_b0:
|
; X86-BMI1NOTBM-LABEL: bextr64_32_b0:
|
||||||
; X86-BMI1NOTBM: # %bb.0:
|
; X86-BMI1NOTBM: # %bb.0:
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %edi
|
; X86-BMI1NOTBM-NEXT: pushl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %esi
|
; X86-BMI1NOTBM-NEXT: pushl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
||||||
|
@ -3041,16 +3031,12 @@ define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1NOTBM-NEXT: .LBB26_4:
|
; X86-BMI1NOTBM-NEXT: .LBB26_4:
|
||||||
; X86-BMI1NOTBM-NEXT: andnl %edx, %ecx, %eax
|
; X86-BMI1NOTBM-NEXT: andnl %edx, %ecx, %eax
|
||||||
; X86-BMI1NOTBM-NEXT: popl %esi
|
; X86-BMI1NOTBM-NEXT: popl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: popl %edi
|
; X86-BMI1NOTBM-NEXT: popl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1NOTBM-NEXT: retl
|
; X86-BMI1NOTBM-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1BMI2-LABEL: bextr64_32_b0:
|
; X86-BMI1BMI2-LABEL: bextr64_32_b0:
|
||||||
; X86-BMI1BMI2: # %bb.0:
|
; X86-BMI1BMI2: # %bb.0:
|
||||||
; X86-BMI1BMI2-NEXT: pushl %esi
|
; X86-BMI1BMI2-NEXT: pushl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_offset %esi, -8
|
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
||||||
|
@ -3070,7 +3056,6 @@ define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1BMI2-NEXT: .LBB26_4:
|
; X86-BMI1BMI2-NEXT: .LBB26_4:
|
||||||
; X86-BMI1BMI2-NEXT: andnl %edx, %ecx, %eax
|
; X86-BMI1BMI2-NEXT: andnl %edx, %ecx, %eax
|
||||||
; X86-BMI1BMI2-NEXT: popl %esi
|
; X86-BMI1BMI2-NEXT: popl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1BMI2-NEXT: retl
|
; X86-BMI1BMI2-NEXT: retl
|
||||||
;
|
;
|
||||||
; X64-NOBMI-LABEL: bextr64_32_b0:
|
; X64-NOBMI-LABEL: bextr64_32_b0:
|
||||||
|
@ -3115,15 +3100,11 @@ define i32 @bextr64_32_b0(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Shifting happens in 64-bit, then truncation. Masking is 32-bit.
|
; Shifting happens in 64-bit, then truncation. Masking is 32-bit.
|
||||||
define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; X86-NOBMI-LABEL: bextr64_32_b1:
|
; X86-NOBMI-LABEL: bextr64_32_b1:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: pushl %edi
|
; X86-NOBMI-NEXT: pushl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: pushl %esi
|
; X86-NOBMI-NEXT: pushl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -3142,19 +3123,13 @@ define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-NOBMI-NEXT: notl %eax
|
; X86-NOBMI-NEXT: notl %eax
|
||||||
; X86-NOBMI-NEXT: andl %esi, %eax
|
; X86-NOBMI-NEXT: andl %esi, %eax
|
||||||
; X86-NOBMI-NEXT: popl %esi
|
; X86-NOBMI-NEXT: popl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: popl %edi
|
; X86-NOBMI-NEXT: popl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-NOBMI-NEXT: retl
|
; X86-NOBMI-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1NOTBM-LABEL: bextr64_32_b1:
|
; X86-BMI1NOTBM-LABEL: bextr64_32_b1:
|
||||||
; X86-BMI1NOTBM: # %bb.0:
|
; X86-BMI1NOTBM: # %bb.0:
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %edi
|
; X86-BMI1NOTBM-NEXT: pushl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %esi
|
; X86-BMI1NOTBM-NEXT: pushl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
||||||
|
@ -3170,16 +3145,12 @@ define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1NOTBM-NEXT: shll $8, %eax
|
; X86-BMI1NOTBM-NEXT: shll $8, %eax
|
||||||
; X86-BMI1NOTBM-NEXT: bextrl %eax, %edx, %eax
|
; X86-BMI1NOTBM-NEXT: bextrl %eax, %edx, %eax
|
||||||
; X86-BMI1NOTBM-NEXT: popl %esi
|
; X86-BMI1NOTBM-NEXT: popl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: popl %edi
|
; X86-BMI1NOTBM-NEXT: popl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1NOTBM-NEXT: retl
|
; X86-BMI1NOTBM-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1BMI2-LABEL: bextr64_32_b1:
|
; X86-BMI1BMI2-LABEL: bextr64_32_b1:
|
||||||
; X86-BMI1BMI2: # %bb.0:
|
; X86-BMI1BMI2: # %bb.0:
|
||||||
; X86-BMI1BMI2-NEXT: pushl %esi
|
; X86-BMI1BMI2-NEXT: pushl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_offset %esi, -8
|
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
||||||
|
@ -3192,7 +3163,6 @@ define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1BMI2-NEXT: .LBB27_2:
|
; X86-BMI1BMI2-NEXT: .LBB27_2:
|
||||||
; X86-BMI1BMI2-NEXT: bzhil %eax, %edx, %eax
|
; X86-BMI1BMI2-NEXT: bzhil %eax, %edx, %eax
|
||||||
; X86-BMI1BMI2-NEXT: popl %esi
|
; X86-BMI1BMI2-NEXT: popl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1BMI2-NEXT: retl
|
; X86-BMI1BMI2-NEXT: retl
|
||||||
;
|
;
|
||||||
; X64-NOBMI-LABEL: bextr64_32_b1:
|
; X64-NOBMI-LABEL: bextr64_32_b1:
|
||||||
|
@ -3232,15 +3202,11 @@ define i32 @bextr64_32_b1(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
|
|
||||||
; Shifting happens in 64-bit. Mask is 32-bit, but extended to 64-bit.
|
; Shifting happens in 64-bit. Mask is 32-bit, but extended to 64-bit.
|
||||||
; Masking is 64-bit. Then truncation.
|
; Masking is 64-bit. Then truncation.
|
||||||
define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) nounwind {
|
||||||
; X86-NOBMI-LABEL: bextr64_32_b2:
|
; X86-NOBMI-LABEL: bextr64_32_b2:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: pushl %edi
|
; X86-NOBMI-NEXT: pushl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: pushl %esi
|
; X86-NOBMI-NEXT: pushl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-NOBMI-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %dl
|
||||||
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-NOBMI-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -3259,19 +3225,13 @@ define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-NOBMI-NEXT: notl %eax
|
; X86-NOBMI-NEXT: notl %eax
|
||||||
; X86-NOBMI-NEXT: andl %esi, %eax
|
; X86-NOBMI-NEXT: andl %esi, %eax
|
||||||
; X86-NOBMI-NEXT: popl %esi
|
; X86-NOBMI-NEXT: popl %esi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-NOBMI-NEXT: popl %edi
|
; X86-NOBMI-NEXT: popl %edi
|
||||||
; X86-NOBMI-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-NOBMI-NEXT: retl
|
; X86-NOBMI-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1NOTBM-LABEL: bextr64_32_b2:
|
; X86-BMI1NOTBM-LABEL: bextr64_32_b2:
|
||||||
; X86-BMI1NOTBM: # %bb.0:
|
; X86-BMI1NOTBM: # %bb.0:
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %edi
|
; X86-BMI1NOTBM-NEXT: pushl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: pushl %esi
|
; X86-BMI1NOTBM-NEXT: pushl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %esi, -12
|
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_offset %edi, -8
|
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1NOTBM-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
; X86-BMI1NOTBM-NEXT: movl {{[0-9]+}}(%esp), %esi
|
||||||
|
@ -3287,16 +3247,12 @@ define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1NOTBM-NEXT: shll $8, %eax
|
; X86-BMI1NOTBM-NEXT: shll $8, %eax
|
||||||
; X86-BMI1NOTBM-NEXT: bextrl %eax, %edx, %eax
|
; X86-BMI1NOTBM-NEXT: bextrl %eax, %edx, %eax
|
||||||
; X86-BMI1NOTBM-NEXT: popl %esi
|
; X86-BMI1NOTBM-NEXT: popl %esi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1NOTBM-NEXT: popl %edi
|
; X86-BMI1NOTBM-NEXT: popl %edi
|
||||||
; X86-BMI1NOTBM-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1NOTBM-NEXT: retl
|
; X86-BMI1NOTBM-NEXT: retl
|
||||||
;
|
;
|
||||||
; X86-BMI1BMI2-LABEL: bextr64_32_b2:
|
; X86-BMI1BMI2-LABEL: bextr64_32_b2:
|
||||||
; X86-BMI1BMI2: # %bb.0:
|
; X86-BMI1BMI2: # %bb.0:
|
||||||
; X86-BMI1BMI2-NEXT: pushl %esi
|
; X86-BMI1BMI2-NEXT: pushl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 8
|
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_offset %esi, -8
|
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
|
||||||
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
; X86-BMI1BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||||
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
; X86-BMI1BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
|
||||||
|
@ -3309,7 +3265,6 @@ define i32 @bextr64_32_b2(i64 %val, i64 %numskipbits, i8 %numlowbits) {
|
||||||
; X86-BMI1BMI2-NEXT: .LBB28_2:
|
; X86-BMI1BMI2-NEXT: .LBB28_2:
|
||||||
; X86-BMI1BMI2-NEXT: bzhil %eax, %edx, %eax
|
; X86-BMI1BMI2-NEXT: bzhil %eax, %edx, %eax
|
||||||
; X86-BMI1BMI2-NEXT: popl %esi
|
; X86-BMI1BMI2-NEXT: popl %esi
|
||||||
; X86-BMI1BMI2-NEXT: .cfi_def_cfa_offset 4
|
|
||||||
; X86-BMI1BMI2-NEXT: retl
|
; X86-BMI1BMI2-NEXT: retl
|
||||||
;
|
;
|
||||||
; X64-NOBMI-LABEL: bextr64_32_b2:
|
; X64-NOBMI-LABEL: bextr64_32_b2:
|
||||||
|
@ -6777,7 +6732,7 @@ define i64 @bextr64_d5_skipextrauses(i64 %val, i64 %numskipbits, i64 %numlowbits
|
||||||
; ---------------------------------------------------------------------------- ;
|
; ---------------------------------------------------------------------------- ;
|
||||||
|
|
||||||
; https://bugs.llvm.org/show_bug.cgi?id=38938
|
; https://bugs.llvm.org/show_bug.cgi?id=38938
|
||||||
define void @pr38938(i32* %a0, i64* %a1) {
|
define void @pr38938(i32* %a0, i64* %a1) nounwind {
|
||||||
; X86-NOBMI-LABEL: pr38938:
|
; X86-NOBMI-LABEL: pr38938:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -6852,7 +6807,7 @@ define void @pr38938(i32* %a0, i64* %a1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define i32 @c0_i32(i32 %arg) {
|
define i32 @c0_i32(i32 %arg) nounwind {
|
||||||
; X86-NOBMI-LABEL: c0_i32:
|
; X86-NOBMI-LABEL: c0_i32:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -6906,7 +6861,7 @@ define i32 @c0_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define i32 @c1_i32(i32 %arg) {
|
define i32 @c1_i32(i32 %arg) nounwind {
|
||||||
; X86-LABEL: c1_i32:
|
; X86-LABEL: c1_i32:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -6926,7 +6881,7 @@ define i32 @c1_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define i32 @c2_i32(i32 %arg) {
|
define i32 @c2_i32(i32 %arg) nounwind {
|
||||||
; X86-LABEL: c2_i32:
|
; X86-LABEL: c2_i32:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -6947,7 +6902,7 @@ define i32 @c2_i32(i32 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The mask covers newly shifted-in bit
|
; The mask covers newly shifted-in bit
|
||||||
define i32 @c4_i32_bad(i32 %arg) {
|
define i32 @c4_i32_bad(i32 %arg) nounwind {
|
||||||
; X86-LABEL: c4_i32_bad:
|
; X86-LABEL: c4_i32_bad:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -6969,7 +6924,7 @@ define i32 @c4_i32_bad(i32 %arg) {
|
||||||
; i64
|
; i64
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define i64 @c0_i64(i64 %arg) {
|
define i64 @c0_i64(i64 %arg) nounwind {
|
||||||
; X86-NOBMI-LABEL: c0_i64:
|
; X86-NOBMI-LABEL: c0_i64:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7027,7 +6982,7 @@ define i64 @c0_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define i64 @c1_i64(i64 %arg) {
|
define i64 @c1_i64(i64 %arg) nounwind {
|
||||||
; X86-LABEL: c1_i64:
|
; X86-LABEL: c1_i64:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7048,7 +7003,7 @@ define i64 @c1_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define i64 @c2_i64(i64 %arg) {
|
define i64 @c2_i64(i64 %arg) nounwind {
|
||||||
; X86-LABEL: c2_i64:
|
; X86-LABEL: c2_i64:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7070,7 +7025,7 @@ define i64 @c2_i64(i64 %arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; The mask covers newly shifted-in bit
|
; The mask covers newly shifted-in bit
|
||||||
define i64 @c4_i64_bad(i64 %arg) {
|
define i64 @c4_i64_bad(i64 %arg) nounwind {
|
||||||
; X86-LABEL: c4_i64_bad:
|
; X86-LABEL: c4_i64_bad:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7097,7 +7052,7 @@ define i64 @c4_i64_bad(i64 %arg) {
|
||||||
; i32
|
; i32
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define void @c5_i32(i32 %arg, i32* %ptr) {
|
define void @c5_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; X86-NOBMI-LABEL: c5_i32:
|
; X86-NOBMI-LABEL: c5_i32:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7163,7 +7118,7 @@ define void @c5_i32(i32 %arg, i32* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define void @c6_i32(i32 %arg, i32* %ptr) {
|
define void @c6_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; X86-NOBMI-LABEL: c6_i32:
|
; X86-NOBMI-LABEL: c6_i32:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7229,7 +7184,7 @@ define void @c6_i32(i32 %arg, i32* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define void @c7_i32(i32 %arg, i32* %ptr) {
|
define void @c7_i32(i32 %arg, i32* %ptr) nounwind {
|
||||||
; X86-LABEL: c7_i32:
|
; X86-LABEL: c7_i32:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7255,7 +7210,7 @@ define void @c7_i32(i32 %arg, i32* %ptr) {
|
||||||
; i64
|
; i64
|
||||||
|
|
||||||
; The most canonical variant
|
; The most canonical variant
|
||||||
define void @c5_i64(i64 %arg, i64* %ptr) {
|
define void @c5_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; X86-NOBMI-LABEL: c5_i64:
|
; X86-NOBMI-LABEL: c5_i64:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7325,7 +7280,7 @@ define void @c5_i64(i64 %arg, i64* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the mask is shifted
|
; Should be still fine, but the mask is shifted
|
||||||
define void @c6_i64(i64 %arg, i64* %ptr) {
|
define void @c6_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; X86-NOBMI-LABEL: c6_i64:
|
; X86-NOBMI-LABEL: c6_i64:
|
||||||
; X86-NOBMI: # %bb.0:
|
; X86-NOBMI: # %bb.0:
|
||||||
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NOBMI-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
@ -7395,7 +7350,7 @@ define void @c6_i64(i64 %arg, i64* %ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
; Should be still fine, but the result is shifted left afterwards
|
; Should be still fine, but the result is shifted left afterwards
|
||||||
define void @c7_i64(i64 %arg, i64* %ptr) {
|
define void @c7_i64(i64 %arg, i64* %ptr) nounwind {
|
||||||
; X86-LABEL: c7_i64:
|
; X86-LABEL: c7_i64:
|
||||||
; X86: # %bb.0:
|
; X86: # %bb.0:
|
||||||
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||||
|
|
Loading…
Reference in New Issue