mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 23:51:56 +00:00
Make aliases for shld and shrd match gas. PR12173.
llvm-svn: 152014
This commit is contained in:
parent
2a1b1c68f3
commit
a5a6d6aa8f
@ -1855,20 +1855,20 @@ def : InstAlias<"outl $port", (OUT32ir i8imm:$port)>;
|
||||
// errors, since its encoding is the most compact.
|
||||
def : InstAlias<"sldt $mem", (SLDT16m i16mem:$mem)>;
|
||||
|
||||
// shld/shrd op,op -> shld op, op, 1
|
||||
def : InstAlias<"shldw $r1, $r2", (SHLD16rri8 GR16:$r1, GR16:$r2, 1)>;
|
||||
def : InstAlias<"shldl $r1, $r2", (SHLD32rri8 GR32:$r1, GR32:$r2, 1)>;
|
||||
def : InstAlias<"shldq $r1, $r2", (SHLD64rri8 GR64:$r1, GR64:$r2, 1)>;
|
||||
def : InstAlias<"shrdw $r1, $r2", (SHRD16rri8 GR16:$r1, GR16:$r2, 1)>;
|
||||
def : InstAlias<"shrdl $r1, $r2", (SHRD32rri8 GR32:$r1, GR32:$r2, 1)>;
|
||||
def : InstAlias<"shrdq $r1, $r2", (SHRD64rri8 GR64:$r1, GR64:$r2, 1)>;
|
||||
// shld/shrd op,op -> shld op, op, CL
|
||||
def : InstAlias<"shldw $r1, $r2", (SHLD16rrCL GR16:$r1, GR16:$r2)>;
|
||||
def : InstAlias<"shldl $r1, $r2", (SHLD32rrCL GR32:$r1, GR32:$r2)>;
|
||||
def : InstAlias<"shldq $r1, $r2", (SHLD64rrCL GR64:$r1, GR64:$r2)>;
|
||||
def : InstAlias<"shrdw $r1, $r2", (SHRD16rrCL GR16:$r1, GR16:$r2)>;
|
||||
def : InstAlias<"shrdl $r1, $r2", (SHRD32rrCL GR32:$r1, GR32:$r2)>;
|
||||
def : InstAlias<"shrdq $r1, $r2", (SHRD64rrCL GR64:$r1, GR64:$r2)>;
|
||||
|
||||
def : InstAlias<"shldw $mem, $reg", (SHLD16mri8 i16mem:$mem, GR16:$reg, 1)>;
|
||||
def : InstAlias<"shldl $mem, $reg", (SHLD32mri8 i32mem:$mem, GR32:$reg, 1)>;
|
||||
def : InstAlias<"shldq $mem, $reg", (SHLD64mri8 i64mem:$mem, GR64:$reg, 1)>;
|
||||
def : InstAlias<"shrdw $mem, $reg", (SHRD16mri8 i16mem:$mem, GR16:$reg, 1)>;
|
||||
def : InstAlias<"shrdl $mem, $reg", (SHRD32mri8 i32mem:$mem, GR32:$reg, 1)>;
|
||||
def : InstAlias<"shrdq $mem, $reg", (SHRD64mri8 i64mem:$mem, GR64:$reg, 1)>;
|
||||
def : InstAlias<"shldw $mem, $reg", (SHLD16mrCL i16mem:$mem, GR16:$reg)>;
|
||||
def : InstAlias<"shldl $mem, $reg", (SHLD32mrCL i32mem:$mem, GR32:$reg)>;
|
||||
def : InstAlias<"shldq $mem, $reg", (SHLD64mrCL i64mem:$mem, GR64:$reg)>;
|
||||
def : InstAlias<"shrdw $mem, $reg", (SHRD16mrCL i16mem:$mem, GR16:$reg)>;
|
||||
def : InstAlias<"shrdl $mem, $reg", (SHRD32mrCL i32mem:$mem, GR32:$reg)>;
|
||||
def : InstAlias<"shrdq $mem, $reg", (SHRD64mrCL i64mem:$mem, GR64:$reg)>;
|
||||
|
||||
/* FIXME: This is disabled because the asm matcher is currently incapable of
|
||||
* matching a fixed immediate like $1.
|
||||
|
@ -339,15 +339,20 @@ rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3]
|
||||
rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02]
|
||||
|
||||
// rdar://8418316
|
||||
// PR12173
|
||||
// CHECK: shldw %cl, %bx, %bx
|
||||
// CHECK: shldw %cl, %bx, %bx
|
||||
// CHECK: shldw $1, %bx, %bx
|
||||
// CHECK: shldw $1, %bx, %bx
|
||||
// CHECK: shrdw $1, %bx, %bx
|
||||
// CHECK: shrdw %cl, %bx, %bx
|
||||
// CHECK: shrdw %cl, %bx, %bx
|
||||
// CHECK: shrdw $1, %bx, %bx
|
||||
|
||||
shld %bx,%bx
|
||||
shld $1, %bx,%bx
|
||||
shrd %bx,%bx
|
||||
shrd $1, %bx,%bx
|
||||
shld %bx, %bx
|
||||
shld %cl, %bx, %bx
|
||||
shld $1, %bx, %bx
|
||||
shrd %bx, %bx
|
||||
shrd %cl, %bx, %bx
|
||||
shrd $1, %bx, %bx
|
||||
|
||||
// CHECK: sldtl %ecx
|
||||
// CHECK: encoding: [0x0f,0x00,0xc1]
|
||||
|
Loading…
Reference in New Issue
Block a user