; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | \ | |
; RUN: grep shld | count 1 | |
; | |
; Check that the isel does not fold the shld, which already folds a load | |
; and has two uses, into a store. | |
%A = external global uint | |
uint %test5(uint %B, ubyte %C) { | |
%tmp.1 = load uint *%A; | |
%tmp.2 = shl uint %tmp.1, ubyte %C | |
%tmp.3 = sub ubyte 32, %C | |
%tmp.4 = shr uint %B, ubyte %tmp.3 | |
%tmp.5 = or uint %tmp.4, %tmp.2 | |
store uint %tmp.5, uint* %A | |
ret uint %tmp.5 | |
} |