1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin > %t 2 ; RUN: not grep InlineAsm %t 3 ; RUN: FileCheck %s < %t 4 5 ; CHECK: foo: 6 ; CHECK: bswapq 7 define i64 @foo(i64 %x) nounwind { 8 %asmtmp = tail call i64 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %x) nounwind 9 ret i64 %asmtmp 10 } 11 12 ; CHECK: bar: 13 ; CHECK: bswapq 14 define i64 @bar(i64 %x) nounwind { 15 %asmtmp = tail call i64 asm "bswapq ${0:q}", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %x) nounwind 16 ret i64 %asmtmp 17 } 18 19 ; CHECK: pen: 20 ; CHECK: bswapl 21 define i32 @pen(i32 %x) nounwind { 22 %asmtmp = tail call i32 asm "bswapl ${0:q}", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %x) nounwind 23 ret i32 %asmtmp 24 } 25 26 ; CHECK: s16: 27 ; CHECK: rolw $8, 28 define zeroext i16 @s16(i16 zeroext %x) nounwind { 29 %asmtmp = tail call i16 asm "rorw $$8, ${0:w}", "=r,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i16 %x) nounwind 30 ret i16 %asmtmp 31 } 32 33 ; CHECK: t16: 34 ; CHECK: rolw $8, 35 define zeroext i16 @t16(i16 zeroext %x) nounwind { 36 %asmtmp = tail call i16 asm "rorw $$8, ${0:w}", "=r,0,~{cc},~{dirflag},~{fpsr},~{flags}"(i16 %x) nounwind 37 ret i16 %asmtmp 38 } 39 40 ; CHECK: u16: 41 ; CHECK: rolw $8, 42 define zeroext i16 @u16(i16 zeroext %x) nounwind { 43 %asmtmp = tail call i16 asm "rolw $$8, ${0:w}", "=r,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i16 %x) nounwind 44 ret i16 %asmtmp 45 } 46 47 ; CHECK: v16: 48 ; CHECK: rolw $8, 49 define zeroext i16 @v16(i16 zeroext %x) nounwind { 50 %asmtmp = tail call i16 asm "rolw $$8, ${0:w}", "=r,0,~{cc},~{dirflag},~{fpsr},~{flags}"(i16 %x) nounwind 51 ret i16 %asmtmp 52 } 53 54 ; CHECK: s32: 55 ; CHECK: bswapl 56 define i32 @s32(i32 %x) nounwind { 57 %asmtmp = tail call i32 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %x) nounwind 58 ret i32 %asmtmp 59 } 60 61 ; CHECK: t32: 62 ; CHECK: bswapl 63 define i32 @t32(i32 %x) nounwind { 64 %asmtmp = tail call i32 asm "bswap $0", "=r,0,~{dirflag},~{flags},~{fpsr}"(i32 %x) nounwind 65 ret i32 %asmtmp 66 } 67 68 ; CHECK: u32: 69 ; CHECK: bswapl 70 define i32 @u32(i32 %x) nounwind { 71 %asmtmp = tail call i32 asm "rorw $$8, ${0:w};rorl $$16, $0;rorw $$8, ${0:w}", "=r,0,~{cc},~{dirflag},~{flags},~{fpsr}"(i32 %x) nounwind 72 ret i32 %asmtmp 73 } 74 75 ; CHECK: s64: 76 ; CHECK: bswapq 77 define i64 @s64(i64 %x) nounwind { 78 %asmtmp = tail call i64 asm "bswap ${0:q}", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %x) nounwind 79 ret i64 %asmtmp 80 } 81 82 ; CHECK: t64: 83 ; CHECK: bswapq 84 define i64 @t64(i64 %x) nounwind { 85 %asmtmp = tail call i64 asm "bswap ${0:q}", "=r,0,~{fpsr},~{dirflag},~{flags}"(i64 %x) nounwind 86 ret i64 %asmtmp 87 } 88