Home | History | Annotate | Download | only in X86
      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