blob: 2b7019371a174888b93a06cb8d249a44df3d5b02 [file] [log] [blame]
Dan Gohman36a09472009-09-08 23:54:48 +00001; RUN: llc < %s -march=x86-64 > %t
Dan Gohmand7356662009-03-17 02:17:27 +00002; RUN: not grep APP %t
Dan Gohman0ef701e2010-03-04 19:58:08 +00003; RUN: FileCheck %s < %t
Dan Gohmand7356662009-03-17 02:17:27 +00004
Dan Gohman0ef701e2010-03-04 19:58:08 +00005; CHECK: foo:
6; CHECK: bswapq
Dan Gohmand7356662009-03-17 02:17:27 +00007define 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}
Dan Gohman0ef701e2010-03-04 19:58:08 +000011
12; CHECK: bar:
13; CHECK: bswapq
Dan Gohmand7356662009-03-17 02:17:27 +000014define 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}
Dan Gohman0ef701e2010-03-04 19:58:08 +000018
19; CHECK: pen:
20; CHECK: bswapl
Dan Gohman96264472009-03-17 02:45:40 +000021define 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}
Dan Gohman0ef701e2010-03-04 19:58:08 +000025
26; CHECK: s16:
27; CHECK: rolw $8,
28define 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,
35define 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,
42define 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,
49define 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
56define 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
63define 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: s64:
69; CHECK: bswapq
70define i64 @s64(i64 %x) nounwind {
71 %asmtmp = tail call i64 asm "bswap ${0:q}", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %x) nounwind
72 ret i64 %asmtmp
73}
74
75; CHECK: t64:
76; CHECK: bswapq
77define i64 @t64(i64 %x) nounwind {
78 %asmtmp = tail call i64 asm "bswap ${0:q}", "=r,0,~{fpsr},~{dirflag},~{flags}"(i64 %x) nounwind
79 ret i64 %asmtmp
80}