; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | \ ; RUN: grep {stwbrx\\|lwbrx\\|sthbrx\\|lhbrx} | count 4 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep rlwinm ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep rlwimi ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc64 | \ ; RUN: grep {stwbrx\\|lwbrx\\|sthbrx\\|lhbrx} | count 4 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc64 | not grep rlwinm ; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc64 | not grep rlwimi void %STWBRX(uint %i, sbyte* %ptr, int %off) { %tmp1 = getelementptr sbyte* %ptr, int %off %tmp1 = cast sbyte* %tmp1 to uint* %tmp13 = tail call uint %llvm.bswap.i32(uint %i) store uint %tmp13, uint* %tmp1 ret void } uint %LWBRX(sbyte* %ptr, int %off) { %tmp1 = getelementptr sbyte* %ptr, int %off %tmp1 = cast sbyte* %tmp1 to uint* %tmp = load uint* %tmp1 %tmp14 = tail call uint %llvm.bswap.i32( uint %tmp ) ret uint %tmp14 } void %STHBRX(ushort %s, sbyte* %ptr, int %off) { %tmp1 = getelementptr sbyte* %ptr, int %off %tmp1 = cast sbyte* %tmp1 to ushort* %tmp5 = call ushort %llvm.bswap.i16( ushort %s ) store ushort %tmp5, ushort* %tmp1 ret void } ushort %LHBRX(sbyte* %ptr, int %off) { %tmp1 = getelementptr sbyte* %ptr, int %off %tmp1 = cast sbyte* %tmp1 to ushort* %tmp = load ushort* %tmp1 %tmp6 = call ushort %llvm.bswap.i16(ushort %tmp) ret ushort %tmp6 } declare uint %llvm.bswap.i32(uint) declare ushort %llvm.bswap.i16(ushort)