72 lines · plain
1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump --no-print-imm-hex -d - | FileCheck %s2 3// Test that we correctly relax these instructions into versions that use4// 16 or 32 bit immediate values.5 6bar:7// CHECK: Disassembly of section imul:8// CHECK-EMPTY:9// CHECK-NEXT: <imul>:10// CHECK-NEXT: 0: 66 69 1d 00 00 00 00 00 00 imulw $0, (%rip), %bx11// CHECK-NEXT: 9: 69 1d 00 00 00 00 00 00 00 00 imull $0, (%rip), %ebx12// CHECK-NEXT: 13: 48 69 1d 00 00 00 00 00 00 00 00 imulq $0, (%rip), %rbx13 .section imul,"x"14 imul $foo, bar(%rip), %bx15 imul $foo, bar(%rip), %ebx16 imul $foo, bar(%rip), %rbx17 18 19// CHECK: <and>:20// CHECK-NEXT: 0: 66 81 25 00 00 00 00 00 00 andw $0, (%rip)21// CHECK-NEXT: 9: 81 25 00 00 00 00 00 00 00 00 andl $0, (%rip)22// CHECK-NEXT: 13: 48 81 25 00 00 00 00 00 00 00 00 andq $0, (%rip)23 .section and,"x"24 andw $foo, bar(%rip)25 andl $foo, bar(%rip)26 andq $foo, bar(%rip)27 28// CHECK: <or>:29// CHECK-NEXT: 0: 66 81 0d 00 00 00 00 00 00 orw $0, (%rip)30// CHECK-NEXT: 9: 81 0d 00 00 00 00 00 00 00 00 orl $0, (%rip)31// CHECK-NEXT: 13: 48 81 0d 00 00 00 00 00 00 00 00 orq $0, (%rip)32 .section or,"x"33 orw $foo, bar(%rip)34 orl $foo, bar(%rip)35 orq $foo, bar(%rip)36 37// CHECK: <xor>:38// CHECK-NEXT: 0: 66 81 35 00 00 00 00 00 00 xorw $0, (%rip)39// CHECK-NEXT: 9: 81 35 00 00 00 00 00 00 00 00 xorl $0, (%rip)40// CHECK-NEXT: 13: 48 81 35 00 00 00 00 00 00 00 00 xorq $0, (%rip)41 .section xor,"x"42 xorw $foo, bar(%rip)43 xorl $foo, bar(%rip)44 xorq $foo, bar(%rip)45 46// CHECK: <add>:47// CHECK-NEXT: 0: 66 81 05 00 00 00 00 00 00 addw $0, (%rip)48// CHECK-NEXT: 9: 81 05 00 00 00 00 00 00 00 00 addl $0, (%rip)49// CHECK-NEXT: 13: 48 81 05 00 00 00 00 00 00 00 00 addq $0, (%rip)50 .section add,"x"51 addw $foo, bar(%rip)52 addl $foo, bar(%rip)53 addq $foo, bar(%rip)54 55// CHECK: <sub>:56// CHECK-NEXT: 0: 66 81 2d 00 00 00 00 00 00 subw $0, (%rip)57// CHECK-NEXT: 9: 81 2d 00 00 00 00 00 00 00 00 subl $0, (%rip)58// CHECK-NEXT: 13: 48 81 2d 00 00 00 00 00 00 00 00 subq $0, (%rip)59 .section sub,"x"60 subw $foo, bar(%rip)61 subl $foo, bar(%rip)62 subq $foo, bar(%rip)63 64// CHECK: <cmp>:65// CHECK-NEXT: 0: 66 81 3d 00 00 00 00 00 00 cmpw $0, (%rip)66// CHECK-NEXT: 9: 81 3d 00 00 00 00 00 00 00 00 cmpl $0, (%rip)67// CHECK-NEXT: 13: 48 81 3d 00 00 00 00 00 00 00 00 cmpq $0, (%rip)68 .section cmp,"x"69 cmpw $foo, bar(%rip)70 cmpl $foo, bar(%rip)71 cmpq $foo, bar(%rip)72