File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -38,6 +38,27 @@ define i32 @bzhi32_load(i32* %x, i32 %y) {
38
38
ret i32 %tmp
39
39
}
40
40
41
+ ; FIXME: PR48768 - 'bzhi' clears the overflow flag, so we don't need a separate 'test'.
42
+ define i1 @bzhi32_overflow (i32 %x , i32 %y ) {
43
+ ; X86-LABEL: bzhi32_overflow:
44
+ ; X86: # %bb.0:
45
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
46
+ ; X86-NEXT: bzhil %eax, {{[0-9]+}}(%esp), %eax
47
+ ; X86-NEXT: testl %eax, %eax
48
+ ; X86-NEXT: setle %al
49
+ ; X86-NEXT: retl
50
+ ;
51
+ ; X64-LABEL: bzhi32_overflow:
52
+ ; X64: # %bb.0:
53
+ ; X64-NEXT: bzhil %esi, %edi, %eax
54
+ ; X64-NEXT: testl %eax, %eax
55
+ ; X64-NEXT: setle %al
56
+ ; X64-NEXT: retq
57
+ %tmp = tail call i32 @llvm.x86.bmi.bzhi.32 (i32 %x , i32 %y )
58
+ %cmp = icmp slt i32 %tmp , 1
59
+ ret i1 %cmp
60
+ }
61
+
41
62
declare i32 @llvm.x86.bmi.bzhi.32 (i32 , i32 )
42
63
43
64
define i32 @pdep32 (i32 %x , i32 %y ) {
You can’t perform that action at this time.
0 commit comments