diff options
Diffstat (limited to 'llvm/test/CodeGen/X86')
-rw-r--r-- | llvm/test/CodeGen/X86/apx/adc.ll | 227 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/add.ll | 295 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/and.ll | 301 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/or.ll | 297 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/sbb.ll | 216 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/sub.ll | 297 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/apx/xor.ll | 278 |
7 files changed, 1018 insertions, 893 deletions
diff --git a/llvm/test/CodeGen/X86/apx/adc.ll b/llvm/test/CodeGen/X86/apx/adc.ll index af9458e..e8657ac 100644 --- a/llvm/test/CodeGen/X86/apx/adc.ll +++ b/llvm/test/CodeGen/X86/apx/adc.ll @@ -1,12 +1,12 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @adc8rr(i8 %a, i8 %b, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: adcb %sil, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: adcb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x10,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i8 %a, %b %k = icmp ugt i8 %x, %y %z = zext i1 %k to i8 @@ -17,9 +17,9 @@ define i8 @adc8rr(i8 %a, i8 %b, i8 %x, i8 %y) nounwind { define i16 @adc16rr(i16 %a, i16 %b, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: adcw %si, %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: adcw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x11,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i16 %a, %b %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -30,9 +30,9 @@ define i16 @adc16rr(i16 %a, i16 %b, i16 %x, i16 %y) nounwind { define i32 @adc32rr(i32 %a, i32 %b, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: adcl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: adcl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x11,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i32 %a, %b %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -43,9 +43,9 @@ define i32 @adc32rr(i32 %a, i32 %b, i32 %x, i32 %y) nounwind { define i64 @adc64rr(i64 %a, i64 %b, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: adcq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: adcq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x11,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i64 %a, %b %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -56,9 +56,9 @@ define i64 @adc64rr(i64 %a, i64 %b, i64 %x, i64 %y) nounwind { define i8 @adc8rm(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: adcb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: adcb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x12,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = add i8 %a, %b %k = icmp ugt i8 %x, %y @@ -70,9 +70,9 @@ define i8 @adc8rm(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @adc16rm(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: adcw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: adcw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x13,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = add i16 %a, %b %k = icmp ugt i16 %x, %y @@ -84,9 +84,9 @@ define i16 @adc16rm(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @adc32rm(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: adcl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: adcl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x13,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = add i32 %a, %b %k = icmp ugt i32 %x, %y @@ -98,9 +98,9 @@ define i32 @adc32rm(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @adc64rm(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: adcq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: adcq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x13,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = add i64 %a, %b %k = icmp ugt i64 %x, %y @@ -112,11 +112,11 @@ define i64 @adc64rm(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { define i16 @adc16ri8(i16 %a, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: adcw $0, %di, %ax -; CHECK-NEXT: addl $123, %eax +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: adcw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xd7,0x00,0x00] +; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i16 %a, 123 %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -127,9 +127,9 @@ define i16 @adc16ri8(i16 %a, i16 %x, i16 %y) nounwind { define i32 @adc32ri8(i32 %a, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: adcl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: adcl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xd7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i32 %a, 123 %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -140,9 +140,9 @@ define i32 @adc32ri8(i32 %a, i32 %x, i32 %y) nounwind { define i64 @adc64ri8(i64 %a, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: adcq $123, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: adcq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xd7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i64 %a, 123 %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -153,9 +153,9 @@ define i64 @adc64ri8(i64 %a, i64 %x, i64 %y) nounwind { define i8 @adc8ri(i8 %a, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %sil, %dl, %al -; CHECK-NEXT: adcb $123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf2] +; CHECK-NEXT: adcb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xd7,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i8 %a, 123 %k = icmp ugt i8 %x, %y %z = zext i1 %k to i8 @@ -166,11 +166,12 @@ define i8 @adc8ri(i8 %a, i8 %x, i8 %y) nounwind { define i16 @adc16ri(i16 %a, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: adcw $0, %di, %ax -; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: adcw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xd7,0x00,0x00] +; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i16 %a, 1234 %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -181,9 +182,10 @@ define i16 @adc16ri(i16 %a, i16 %x, i16 %y) nounwind { define i32 @adc32ri(i32 %a, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: adcl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: adcl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xd7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i32 %a, 123456 %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -194,9 +196,10 @@ define i32 @adc32ri(i32 %a, i32 %x, i32 %y) nounwind { define i64 @adc64ri(i64 %a, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: adcq $123456, %rdi, %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: adcq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xd7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %s = add i64 %a, 123456 %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -207,9 +210,9 @@ define i64 @adc64ri(i64 %a, i64 %x, i64 %y) nounwind { define i8 @adc8mr(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: adcb %dil, (%rsi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: adcb %dil, (%rsi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x10,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = add i8 %b, %a %k = icmp ugt i8 %x, %y @@ -221,9 +224,9 @@ define i8 @adc8mr(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @adc16mr(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: adcw %di, (%rsi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: adcw %di, (%rsi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = add i16 %b, %a %k = icmp ugt i16 %x, %y @@ -235,9 +238,9 @@ define i16 @adc16mr(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @adc32mr(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: adcl %edi, (%rsi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: adcl %edi, (%rsi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = add i32 %b, %a %k = icmp ugt i32 %x, %y @@ -249,9 +252,9 @@ define i32 @adc32mr(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @adc64mr(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: adcq %rdi, (%rsi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: adcq %rdi, (%rsi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = add i64 %b, %a %k = icmp ugt i64 %x, %y @@ -263,11 +266,11 @@ define i64 @adc64mr(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { define i16 @adc16mi8(ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: adcw $0, (%rdi), %ax -; CHECK-NEXT: addl $123, %eax +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x17,0x00,0x00] +; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %s = add i16 %a, 123 %k = icmp ugt i16 %x, %y @@ -279,9 +282,9 @@ define i16 @adc16mi8(ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @adc32mi8(ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: adcl $123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: adcl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x17,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %s = add i32 %a, 123 %k = icmp ugt i32 %x, %y @@ -293,9 +296,9 @@ define i32 @adc32mi8(ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @adc64mi8(ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: adcq $123, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: adcq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x17,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %s = add i64 %a, 123 %k = icmp ugt i64 %x, %y @@ -307,9 +310,9 @@ define i64 @adc64mi8(ptr %ptr, i64 %x, i64 %y) nounwind { define i8 @adc8mi(ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %sil, %dl, %al -; CHECK-NEXT: adcb $123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf2] +; CHECK-NEXT: adcb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x17,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %s = add i8 %a, 123 %k = icmp ugt i8 %x, %y @@ -321,11 +324,12 @@ define i8 @adc8mi(ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @adc16mi(ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: adcw $0, (%rdi), %ax -; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x17,0x00,0x00] +; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %s = add i16 %a, 1234 %k = icmp ugt i16 %x, %y @@ -337,9 +341,10 @@ define i16 @adc16mi(ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @adc32mi(ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: adcl $123456, (%rdi), %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: adcl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x17,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %s = add i32 %a, 123456 %k = icmp ugt i32 %x, %y @@ -351,9 +356,10 @@ define i32 @adc32mi(ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @adc64mi(ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: adcq $123456, (%rdi), %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: adcq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x17,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %s = add i64 %a, 123456 %k = icmp ugt i64 %x, %y @@ -365,9 +371,9 @@ define i64 @adc64mi(ptr %ptr, i64 %x, i64 %y) nounwind { define void @adc8mr_legacy(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: adcb %dil, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: adcb %dil, (%rsi) # encoding: [0x40,0x10,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = add i8 %b, %a %k = icmp ugt i8 %x, %y @@ -380,9 +386,9 @@ define void @adc8mr_legacy(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define void @adc16mr_legacy(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: adcw %di, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: adcw %di, (%rsi) # encoding: [0x66,0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = add i16 %b, %a %k = icmp ugt i16 %x, %y @@ -395,9 +401,9 @@ define void @adc16mr_legacy(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define void @adc32mr_legacy(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: adcl %edi, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: adcl %edi, (%rsi) # encoding: [0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = add i32 %b, %a %k = icmp ugt i32 %x, %y @@ -410,9 +416,9 @@ define void @adc32mr_legacy(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define void @adc64mr_legacy(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: adcq %rdi, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: adcq %rdi, (%rsi) # encoding: [0x48,0x11,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = add i64 %b, %a %k = icmp ugt i64 %x, %y @@ -425,9 +431,9 @@ define void @adc64mr_legacy(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { define void @adc8mi_legacy(ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: adc8mi_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %sil, %dl, %al -; CHECK-NEXT: adcb $123, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf2] +; CHECK-NEXT: adcb $123, (%rdi) # encoding: [0x80,0x17,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %s = add i8 %a, 123 %k = icmp ugt i8 %x, %y @@ -440,11 +446,12 @@ define void @adc8mi_legacy(ptr %ptr, i8 %x, i8 %y) nounwind { define void @adc16mi_legacy(ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: adc16mi_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: adcw $0, (%rdi), %ax -; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2 -; CHECK-NEXT: movw %ax, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x17,0x00,0x00] +; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: movw %ax, (%rdi) # encoding: [0x66,0x89,0x07] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %s = add i16 %a, 1234 %k = icmp ugt i16 %x, %y @@ -457,9 +464,10 @@ define void @adc16mi_legacy(ptr %ptr, i16 %x, i16 %y) nounwind { define void @adc32mi_legacy(ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: adc32mi_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: adcl $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: adcl $123456, (%rdi) # encoding: [0x81,0x17,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %s = add i32 %a, 123456 %k = icmp ugt i32 %x, %y @@ -472,9 +480,10 @@ define void @adc32mi_legacy(ptr %ptr, i32 %x, i32 %y) nounwind { define void @adc64mi_legacy(ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: adc64mi_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: adcq $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: adcq $123456, (%rdi) # encoding: [0x48,0x81,0x17,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %s = add i64 %a, 123456 %k = icmp ugt i64 %x, %y diff --git a/llvm/test/CodeGen/X86/apx/add.ll b/llvm/test/CodeGen/X86/apx/add.ll index 971ba80..a42f872 100644 --- a/llvm/test/CodeGen/X86/apx/add.ll +++ b/llvm/test/CodeGen/X86/apx/add.ll @@ -1,11 +1,11 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @add8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: add8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb %sil, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i8 %a, %b ret i8 %add @@ -14,9 +14,9 @@ entry: define i16 @add16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: add16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl %esi, %edi, %eax +; CHECK-NEXT: addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i16 %a, %b ret i16 %add @@ -25,8 +25,8 @@ entry: define i32 @add32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: add32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i32 %a, %b ret i32 %add @@ -35,8 +35,8 @@ entry: define i64 @add64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: add64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i64 %a, %b ret i64 %add @@ -45,8 +45,8 @@ entry: define i8 @add8rm(i8 noundef %a, ptr %ptr) { ; CHECK-LABEL: add8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i8, ptr %ptr %add = add i8 %a, %b @@ -56,8 +56,8 @@ entry: define i16 @add16rm(i16 noundef %a, ptr %ptr) { ; CHECK-LABEL: add16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i16, ptr %ptr %add = add i16 %a, %b @@ -67,8 +67,8 @@ entry: define i32 @add32rm(i32 noundef %a, ptr %ptr) { ; CHECK-LABEL: add32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i32, ptr %ptr %add = add i32 %a, %b @@ -78,8 +78,8 @@ entry: define i64 @add64rm(i64 noundef %a, ptr %ptr) { ; CHECK-LABEL: add64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i64, ptr %ptr %add = add i64 %a, %b @@ -89,9 +89,9 @@ entry: define i16 @add16ri8(i16 noundef %a) { ; CHECK-LABEL: add16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123, %edi, %eax +; CHECK-NEXT: addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x7b,0x00,0x00,0x00] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i16 %a, 123 ret i16 %add @@ -100,8 +100,8 @@ entry: define i32 @add32ri8(i32 noundef %a) { ; CHECK-LABEL: add32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i32 %a, 123 ret i32 %add @@ -110,8 +110,8 @@ entry: define i64 @add64ri8(i64 noundef %a) { ; CHECK-LABEL: add64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i64 %a, 123 ret i64 %add @@ -120,8 +120,8 @@ entry: define i8 @add8ri(i8 noundef %a) { ; CHECK-LABEL: add8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i8 %a, 123 ret i8 %add @@ -130,9 +130,10 @@ entry: define i16 @add16ri(i16 noundef %a) { ; CHECK-LABEL: add16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $1234, %edi, %eax # imm = 0x4D2 +; CHECK-NEXT: addl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i16 %a, 1234 ret i16 %add @@ -141,8 +142,9 @@ entry: define i32 @add32ri(i32 noundef %a) { ; CHECK-LABEL: add32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i32 %a, 123456 ret i32 %add @@ -151,8 +153,9 @@ entry: define i64 @add64ri(i64 noundef %a) { ; CHECK-LABEL: add64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123456, %rdi, %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = add i64 %a, 123456 ret i64 %add @@ -161,8 +164,8 @@ entry: define i8 @add8mr(ptr %a, i8 noundef %b) { ; CHECK-LABEL: add8mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb %sil, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb %sil, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %add = add nsw i8 %t, %b @@ -172,8 +175,8 @@ entry: define i16 @add16mr(ptr %a, i16 noundef %b) { ; CHECK-LABEL: add16mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw %si, (%rdi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: addw %si, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %add = add nsw i16 %t, %b @@ -183,8 +186,8 @@ entry: define i32 @add32mr(ptr %a, i32 noundef %b) { ; CHECK-LABEL: add32mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl %esi, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl %esi, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %add = add nsw i32 %t, %b @@ -194,8 +197,8 @@ entry: define i64 @add64mr(ptr %a, i64 noundef %b) { ; CHECK-LABEL: add64mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq %rsi, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq %rsi, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %add = add nsw i64 %t, %b @@ -205,10 +208,10 @@ entry: define i16 @add16mi8(ptr %a) { ; CHECK-LABEL: add16mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: addl $123, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %add = add nsw i16 %t, 123 @@ -218,8 +221,8 @@ entry: define i32 @add32mi8(ptr %a) { ; CHECK-LABEL: add32mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %add = add nsw i32 %t, 123 @@ -229,8 +232,8 @@ entry: define i64 @add64mi8(ptr %a) { ; CHECK-LABEL: add64mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %add = add nsw i64 %t, 123 @@ -240,8 +243,8 @@ entry: define i8 @add8mi(ptr %a) { ; CHECK-LABEL: add8mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x07,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %add = add nsw i8 %t, 123 @@ -251,10 +254,11 @@ entry: define i16 @add16mi(ptr %a) { ; CHECK-LABEL: add16mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %add = add nsw i16 %t, 1234 @@ -264,8 +268,9 @@ entry: define i32 @add32mi(ptr %a) { ; CHECK-LABEL: add32mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123456, (%rdi), %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %add = add nsw i32 %t, 123456 @@ -275,8 +280,9 @@ entry: define i64 @add64mi(ptr %a) { ; CHECK-LABEL: add64mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123456, (%rdi), %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %add = add nsw i64 %t, 123456 @@ -291,12 +297,12 @@ declare i64 @llvm.uadd.sat.i64(i64, i64) define i8 @addflag8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: addflag8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb %sil, %dil, %al -; CHECK-NEXT: movzbl %al, %ecx -; CHECK-NEXT: movl $255, %eax -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7] +; CHECK-NEXT: movzbl %al, %ecx # encoding: [0x0f,0xb6,0xc8] +; CHECK-NEXT: movl $255, %eax # encoding: [0xb8,0xff,0x00,0x00,0x00] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %b) ret i8 %add @@ -305,11 +311,12 @@ entry: define i16 @addflag16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: addflag16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw %si, %di, %cx -; CHECK-NEXT: movl $65535, %eax # imm = 0xFFFF -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addw %si, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x01,0xf7] +; CHECK-NEXT: movl $65535, %eax # encoding: [0xb8,0xff,0xff,0x00,0x00] +; CHECK-NEXT: # imm = 0xFFFF +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %b) ret i16 %add @@ -318,10 +325,10 @@ entry: define i32 @addflag32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: addflag32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl %esi, %edi, %ecx -; CHECK-NEXT: movl $-1, %eax -; CHECK-NEXT: cmovael %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl %esi, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x01,0xf7] +; CHECK-NEXT: movl $-1, %eax # encoding: [0xb8,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %b) ret i32 %add @@ -330,10 +337,10 @@ entry: define i64 @addflag64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: addflag64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq %rsi, %rdi, %rcx -; CHECK-NEXT: movq $-1, %rax -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq %rsi, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x01,0xf7] +; CHECK-NEXT: movq $-1, %rax # encoding: [0x48,0xc7,0xc0,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %b) ret i64 %add @@ -342,12 +349,12 @@ entry: define i8 @addflag8rm(i8 noundef %a, ptr %b) { ; CHECK-LABEL: addflag8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb (%rsi), %dil, %al -; CHECK-NEXT: movzbl %al, %ecx -; CHECK-NEXT: movl $255, %eax -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e] +; CHECK-NEXT: movzbl %al, %ecx # encoding: [0x0f,0xb6,0xc8] +; CHECK-NEXT: movl $255, %eax # encoding: [0xb8,0xff,0x00,0x00,0x00] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i8, ptr %b %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %t) @@ -357,11 +364,12 @@ entry: define i16 @addflag16rm(i16 noundef %a, ptr %b) { ; CHECK-LABEL: addflag16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw (%rsi), %di, %cx -; CHECK-NEXT: movl $65535, %eax # imm = 0xFFFF -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addw (%rsi), %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x03,0x3e] +; CHECK-NEXT: movl $65535, %eax # encoding: [0xb8,0xff,0xff,0x00,0x00] +; CHECK-NEXT: # imm = 0xFFFF +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i16, ptr %b %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %t) @@ -371,10 +379,10 @@ entry: define i32 @addflag32rm(i32 noundef %a, ptr %b) { ; CHECK-LABEL: addflag32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl (%rsi), %edi, %ecx -; CHECK-NEXT: movl $-1, %eax -; CHECK-NEXT: cmovael %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl (%rsi), %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x03,0x3e] +; CHECK-NEXT: movl $-1, %eax # encoding: [0xb8,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i32, ptr %b %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %t) @@ -384,10 +392,10 @@ entry: define i64 @addflag64rm(i64 noundef %a, ptr %b) { ; CHECK-LABEL: addflag64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq (%rsi), %rdi, %rcx -; CHECK-NEXT: movq $-1, %rax -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq (%rsi), %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x03,0x3e] +; CHECK-NEXT: movq $-1, %rax # encoding: [0x48,0xc7,0xc0,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i64, ptr %b %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %t) @@ -397,11 +405,12 @@ entry: define i16 @addflag16ri8(i16 noundef %a) { ; CHECK-LABEL: addflag16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw $123, %di, %cx -; CHECK-NEXT: movl $65535, %eax # imm = 0xFFFF -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addw $123, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xc7,0x7b,0x00] +; CHECK-NEXT: movl $65535, %eax # encoding: [0xb8,0xff,0xff,0x00,0x00] +; CHECK-NEXT: # imm = 0xFFFF +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 123) ret i16 %add @@ -410,10 +419,10 @@ entry: define i32 @addflag32ri8(i32 noundef %a) { ; CHECK-LABEL: addflag32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123, %edi, %ecx -; CHECK-NEXT: movl $-1, %eax -; CHECK-NEXT: cmovael %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xc7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: movl $-1, %eax # encoding: [0xb8,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123) ret i32 %add @@ -422,10 +431,10 @@ entry: define i64 @addflag64ri8(i64 noundef %a) { ; CHECK-LABEL: addflag64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123, %rdi, %rcx -; CHECK-NEXT: movq $-1, %rax -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xc7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: movq $-1, %rax # encoding: [0x48,0xc7,0xc0,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123) ret i64 %add @@ -434,12 +443,12 @@ entry: define i8 @addflag8ri(i8 noundef %a) { ; CHECK-LABEL: addflag8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $123, %dil, %al -; CHECK-NEXT: movzbl %al, %ecx -; CHECK-NEXT: movl $255, %eax -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b] +; CHECK-NEXT: movzbl %al, %ecx # encoding: [0x0f,0xb6,0xc8] +; CHECK-NEXT: movl $255, %eax # encoding: [0xb8,0xff,0x00,0x00,0x00] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 123) ret i8 %add @@ -448,11 +457,13 @@ entry: define i16 @addflag16ri(i16 noundef %a) { ; CHECK-LABEL: addflag16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw $1234, %di, %cx # imm = 0x4D2 -; CHECK-NEXT: movl $65535, %eax # imm = 0xFFFF -; CHECK-NEXT: cmovael %ecx, %eax +; CHECK-NEXT: addw $1234, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xc7,0xd2,0x04] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: movl $65535, %eax # encoding: [0xb8,0xff,0xff,0x00,0x00] +; CHECK-NEXT: # imm = 0xFFFF +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 1234) ret i16 %add @@ -461,10 +472,11 @@ entry: define i32 @addflag32ri(i32 noundef %a) { ; CHECK-LABEL: addflag32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123456, %edi, %ecx # imm = 0x1E240 -; CHECK-NEXT: movl $-1, %eax -; CHECK-NEXT: cmovael %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123456, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: movl $-1, %eax # encoding: [0xb8,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovael %ecx, %eax # encoding: [0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123456) ret i32 %add @@ -473,10 +485,11 @@ entry: define i64 @addflag64ri(i64 noundef %a) { ; CHECK-LABEL: addflag64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123456, %rdi, %rcx # imm = 0x1E240 -; CHECK-NEXT: movq $-1, %rax -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123456, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: movq $-1, %rax # encoding: [0x48,0xc7,0xc0,0xff,0xff,0xff,0xff] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123456) ret i64 %add @@ -488,11 +501,12 @@ define i1 @add64ri_reloc(i16 %k) { ; CHECK-LABEL: add64ri_reloc: ; CHECK: # %bb.0: ; CHECK-NEXT: # kill: def $edi killed $edi def $rdi -; CHECK-NEXT: movswq %di, %rax -; CHECK-NEXT: addq %rax, %rax -; CHECK-NEXT: addq $val, %rax -; CHECK-NEXT: setne %al -; CHECK-NEXT: retq +; CHECK-NEXT: movswq %di, %rax # encoding: [0x48,0x0f,0xbf,0xc7] +; CHECK-NEXT: addq %rax, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x01,0xc0] +; CHECK-NEXT: addq $val, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: val, kind: reloc_signed_4byte +; CHECK-NEXT: setne %al # encoding: [0x0f,0x95,0xc0] +; CHECK-NEXT: retq # encoding: [0xc3] %g = getelementptr inbounds i16, ptr @val, i16 %k %cmp = icmp ne ptr %g, null ret i1 %cmp @@ -501,8 +515,8 @@ define i1 @add64ri_reloc(i16 %k) { define void @add8mr_legacy(ptr %a, i8 noundef %b) { ; CHECK-LABEL: add8mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb %sil, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addb %sil, (%rdi) # encoding: [0x40,0x00,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %add = add i8 %t, %b @@ -513,8 +527,8 @@ entry: define void @add16mr_legacy(ptr %a, i16 noundef %b) { ; CHECK-LABEL: add16mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw %si, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addw %si, (%rdi) # encoding: [0x66,0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %add = add i16 %t, %b @@ -525,8 +539,8 @@ entry: define void @add32mr_legacy(ptr %a, i32 noundef %b) { ; CHECK-LABEL: add32mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl %esi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addl %esi, (%rdi) # encoding: [0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %add = add i32 %t, %b @@ -537,8 +551,8 @@ entry: define void @add64mr_legacy(ptr %a, i64 noundef %b) { ; CHECK-LABEL: add64mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq %rsi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addq %rsi, (%rdi) # encoding: [0x48,0x01,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %add = add i64 %t, %b @@ -549,8 +563,8 @@ entry: define void @add8mi_legacy(ptr %a) { ; CHECK-LABEL: add8mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $123, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addb $123, (%rdi) # encoding: [0x80,0x07,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %add = add nsw i8 %t, 123 @@ -561,8 +575,9 @@ entry: define void @add16mi_legacy(ptr %a) { ; CHECK-LABEL: add16mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw $1234, (%rdi) # imm = 0x4D2 -; CHECK-NEXT: retq +; CHECK-NEXT: addw $1234, (%rdi) # encoding: [0x66,0x81,0x07,0xd2,0x04] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %add = add nsw i16 %t, 1234 @@ -573,8 +588,9 @@ entry: define void @add32mi_legacy(ptr %a) { ; CHECK-LABEL: add32mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $123456, (%rdi) # encoding: [0x81,0x07,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %add = add nsw i32 %t, 123456 @@ -585,8 +601,9 @@ entry: define void @add64mi_legacy(ptr %a) { ; CHECK-LABEL: add64mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $123456, (%rdi) # encoding: [0x48,0x81,0x07,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %add = add nsw i64 %t, 123456 diff --git a/llvm/test/CodeGen/X86/apx/and.ll b/llvm/test/CodeGen/X86/apx/and.ll index 1f7b694..b7c1a85 100644 --- a/llvm/test/CodeGen/X86/apx/and.ll +++ b/llvm/test/CodeGen/X86/apx/and.ll @@ -1,12 +1,12 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @and8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: and8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl %esi, %edi, %eax +; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i8 %a, %b ret i8 %and @@ -15,9 +15,9 @@ entry: define i16 @and16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: and16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl %esi, %edi, %eax +; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i16 %a, %b ret i16 %and @@ -26,8 +26,8 @@ entry: define i32 @and32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: and32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i32 %a, %b ret i32 %and @@ -36,8 +36,8 @@ entry: define i64 @and64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: and64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: andq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x21,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i64 %a, %b ret i64 %and @@ -46,8 +46,8 @@ entry: define i8 @and8rm(i8 noundef %a, ptr %b) { ; CHECK-LABEL: and8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: andb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x22,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i8, ptr %b %and = and i8 %a, %t @@ -57,8 +57,8 @@ entry: define i16 @and16rm(i16 noundef %a, ptr %b) { ; CHECK-LABEL: and16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: andw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x23,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i16, ptr %b %and = and i16 %a, %t @@ -68,8 +68,8 @@ entry: define i32 @and32rm(i32 noundef %a, ptr %b) { ; CHECK-LABEL: and32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x23,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i32, ptr %b %and = and i32 %a, %t @@ -79,8 +79,8 @@ entry: define i64 @and64rm(i64 noundef %a, ptr %b) { ; CHECK-LABEL: and64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: andq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x23,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i64, ptr %b %and = and i64 %a, %t @@ -90,9 +90,9 @@ entry: define i16 @and16ri8(i16 noundef %a) { ; CHECK-LABEL: and16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123, %edi, %eax +; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x7b,0x00,0x00,0x00] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i16 %a, 123 ret i16 %and @@ -101,8 +101,8 @@ entry: define i32 @and32ri8(i32 noundef %a) { ; CHECK-LABEL: and32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i32 %a, 123 ret i32 %and @@ -111,8 +111,8 @@ entry: define i64 @and64ri8(i64 noundef %a) { ; CHECK-LABEL: and64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i64 %a, 123 ret i64 %and @@ -121,8 +121,8 @@ entry: define i8 @and8ri(i8 noundef %a) { ; CHECK-LABEL: and8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb $123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: andb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xe7,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i8 %a, 123 ret i8 %and @@ -131,9 +131,10 @@ entry: define i16 @and16ri(i16 noundef %a) { ; CHECK-LABEL: and16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $1234, %edi, %eax # imm = 0x4D2 +; CHECK-NEXT: andl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i16 %a, 1234 ret i16 %and @@ -142,8 +143,9 @@ entry: define i32 @and32ri(i32 noundef %a) { ; CHECK-LABEL: and32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i32 %a, 123456 ret i32 %and @@ -152,8 +154,9 @@ entry: define i64 @and64ri(i64 noundef %a) { ; CHECK-LABEL: and64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %and = and i64 %a, 123456 ret i64 %and @@ -162,8 +165,8 @@ entry: define i8 @and8mr(ptr %a, i8 noundef %b) { ; CHECK-LABEL: and8mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb %sil, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: andb %sil, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x20,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %and = and i8 %t, %b @@ -173,8 +176,8 @@ entry: define i16 @and16mr(ptr %a, i16 noundef %b) { ; CHECK-LABEL: and16mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andw %si, (%rdi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: andw %si, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %and = and i16 %t, %b @@ -184,8 +187,8 @@ entry: define i32 @and32mr(ptr %a, i32 noundef %b) { ; CHECK-LABEL: and32mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl %esi, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl %esi, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %and = and i32 %t, %b @@ -195,8 +198,8 @@ entry: define i64 @and64mr(ptr %a, i64 noundef %b) { ; CHECK-LABEL: and64mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andq %rsi, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: andq %rsi, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %and = and i64 %t, %b @@ -206,10 +209,10 @@ entry: define i16 @and16mi8(ptr %a) { ; CHECK-LABEL: and16mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: andl $123, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %and = and i16 %t, 123 @@ -219,8 +222,8 @@ entry: define i32 @and32mi8(ptr %a) { ; CHECK-LABEL: and32mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x27,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %and = and i32 %t, 123 @@ -230,9 +233,9 @@ entry: define i64 @and64mi8(ptr %a) { ; CHECK-LABEL: and64mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movq (%rdi), %rax -; CHECK-NEXT: andl $123, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] +; CHECK-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %and = and i64 %t, 123 @@ -242,8 +245,8 @@ entry: define i8 @and8mi(ptr %a) { ; CHECK-LABEL: and8mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb $123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: andb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x27,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %and = and i8 %t, 123 @@ -253,10 +256,11 @@ entry: define i16 @and16mi(ptr %a) { ; CHECK-LABEL: and16mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: andl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: andl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x25,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %and = and i16 %t, 1234 @@ -266,8 +270,9 @@ entry: define i32 @and32mi(ptr %a) { ; CHECK-LABEL: and32mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123456, (%rdi), %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x27,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %and = and i32 %t, 123456 @@ -277,9 +282,10 @@ entry: define i64 @and64mi(ptr %a) { ; CHECK-LABEL: and64mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movq (%rdi), %rax -; CHECK-NEXT: andl $123456, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: movq (%rdi), %rax # encoding: [0x48,0x8b,0x07] +; CHECK-NEXT: andl $123456, %eax # EVEX TO LEGACY Compression encoding: [0x25,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %and = and i64 %t, 123456 @@ -291,11 +297,12 @@ entry: define i1 @andflag8rr(i8 %a, i8 %b) { ; CHECK-LABEL: andflag8rr: ; CHECK: # %bb.0: -; CHECK-NEXT: notb %sil, %al -; CHECK-NEXT: andb %al, %dil, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] +; CHECK-NEXT: andb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x20,0xc7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 %b, -1 %v0 = and i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -306,11 +313,12 @@ define i1 @andflag8rr(i8 %a, i8 %b) { define i1 @andflag16rr(i16 %a, i16 %b) { ; CHECK-LABEL: andflag16rr: ; CHECK: # %bb.0: -; CHECK-NEXT: notl %esi, %eax -; CHECK-NEXT: andw %ax, %di, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6] +; CHECK-NEXT: andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 %b, -1 %v0 = and i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -321,10 +329,11 @@ define i1 @andflag16rr(i16 %a, i16 %b) { define i1 @andflag32rr(i32 %a, i32 %b) { ; CHECK-LABEL: andflag32rr: ; CHECK: # %bb.0: -; CHECK-NEXT: andl %esi, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andl %esi, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x21,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -334,10 +343,11 @@ define i1 @andflag32rr(i32 %a, i32 %b) { define i1 @andflag64rr(i64 %a, i64 %b) { ; CHECK-LABEL: andflag64rr: ; CHECK: # %bb.0: -; CHECK-NEXT: andq %rsi, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andq %rsi, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x21,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -347,11 +357,12 @@ define i1 @andflag64rr(i64 %a, i64 %b) { define i1 @andflag8rm(ptr %ptr, i8 %b) { ; CHECK-LABEL: andflag8rm: ; CHECK: # %bb.0: -; CHECK-NEXT: notb %sil, %al -; CHECK-NEXT: andb (%rdi), %al, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] +; CHECK-NEXT: andb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x22,0x07] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %xor = xor i8 %b, -1 %v0 = and i8 %a, %xor ; 0xff << 50 @@ -363,11 +374,12 @@ define i1 @andflag8rm(ptr %ptr, i8 %b) { define i1 @andflag16rm(ptr %ptr, i16 %b) { ; CHECK-LABEL: andflag16rm: ; CHECK: # %bb.0: -; CHECK-NEXT: notl %esi, %eax -; CHECK-NEXT: andw (%rdi), %ax, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6] +; CHECK-NEXT: andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %xor = xor i16 %b, -1 %v0 = and i16 %a, %xor ; 0xff << 50 @@ -379,10 +391,11 @@ define i1 @andflag16rm(ptr %ptr, i16 %b) { define i1 @andflag32rm(ptr %ptr, i32 %b) { ; CHECK-LABEL: andflag32rm: ; CHECK: # %bb.0: -; CHECK-NEXT: andl (%rdi), %esi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andl (%rdi), %esi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x23,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %v0 = and i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 @@ -393,10 +406,11 @@ define i1 @andflag32rm(ptr %ptr, i32 %b) { define i1 @andflag64rm(ptr %ptr, i64 %b) { ; CHECK-LABEL: andflag64rm: ; CHECK: # %bb.0: -; CHECK-NEXT: andq (%rdi), %rsi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andq (%rdi), %rsi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x23,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %v0 = and i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 @@ -407,10 +421,11 @@ define i1 @andflag64rm(ptr %ptr, i64 %b) { define i1 @andflag8ri(i8 %a) { ; CHECK-LABEL: andflag8ri: ; CHECK: # %bb.0: -; CHECK-NEXT: andb $-124, %dil, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xe7,0x84] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 123, -1 %v0 = and i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -421,10 +436,12 @@ define i1 @andflag8ri(i8 %a) { define i1 @andflag16ri(i16 %a) { ; CHECK-LABEL: andflag16ri: ; CHECK: # %bb.0: -; CHECK-NEXT: andw $-1235, %di, %cx # imm = 0xFB2D -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x2d,0xfb] +; CHECK-NEXT: # imm = 0xFB2D +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 1234, -1 %v0 = and i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -435,10 +452,12 @@ define i1 @andflag16ri(i16 %a) { define i1 @andflag32ri(i32 %a) { ; CHECK-LABEL: andflag32ri: ; CHECK: # %bb.0: -; CHECK-NEXT: andl $123456, %edi, %ecx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123456, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i32 %a, 123456 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -448,10 +467,12 @@ define i1 @andflag32ri(i32 %a) { define i1 @andflag64ri(i64 %a) { ; CHECK-LABEL: andflag64ri: ; CHECK: # %bb.0: -; CHECK-NEXT: andq $123456, %rdi, %rcx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andq $123456, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i64 %a, 123456 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -461,10 +482,11 @@ define i1 @andflag64ri(i64 %a) { define i1 @andflag16ri8(i16 %a) { ; CHECK-LABEL: andflag16ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: andw $-124, %di, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x84,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 123, -1 %v0 = and i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -475,10 +497,11 @@ define i1 @andflag16ri8(i16 %a) { define i1 @andflag32ri8(i32 %a) { ; CHECK-LABEL: andflag32ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: andl $123, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xe7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i32 %a, 123 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -488,10 +511,11 @@ define i1 @andflag32ri8(i32 %a) { define i1 @andflag64ri8(i64 %a) { ; CHECK-LABEL: andflag64ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: andq $123, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: andq $123, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xe7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = and i64 %a, 123 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -501,8 +525,8 @@ define i1 @andflag64ri8(i64 %a) { define void @and8mr_legacy(ptr %a, i8 noundef %b) { ; CHECK-LABEL: and8mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb %sil, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: andb %sil, (%rdi) # encoding: [0x40,0x20,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %and = and i8 %t, %b @@ -513,8 +537,8 @@ entry: define void @and16mr_legacy(ptr %a, i16 noundef %b) { ; CHECK-LABEL: and16mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andw %si, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: andw %si, (%rdi) # encoding: [0x66,0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %and = and i16 %t, %b @@ -525,8 +549,8 @@ entry: define void @and32mr_legacy(ptr %a, i32 noundef %b) { ; CHECK-LABEL: and32mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl %esi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: andl %esi, (%rdi) # encoding: [0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %and = and i32 %t, %b @@ -537,8 +561,8 @@ entry: define void @and64mr_legacy(ptr %a, i64 noundef %b) { ; CHECK-LABEL: and64mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andq %rsi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: andq %rsi, (%rdi) # encoding: [0x48,0x21,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %and = and i64 %t, %b @@ -549,8 +573,8 @@ entry: define void @and8mi_legacy(ptr %a) { ; CHECK-LABEL: and8mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andb $123, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: andb $123, (%rdi) # encoding: [0x80,0x27,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %and = and i8 %t, 123 @@ -561,8 +585,9 @@ entry: define void @and16mi_legacy(ptr %a) { ; CHECK-LABEL: and16mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andw $1234, (%rdi) # imm = 0x4D2 -; CHECK-NEXT: retq +; CHECK-NEXT: andw $1234, (%rdi) # encoding: [0x66,0x81,0x27,0xd2,0x04] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %and = and i16 %t, 1234 @@ -573,8 +598,9 @@ entry: define void @and32mi_legacy(ptr %a) { ; CHECK-LABEL: and32mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andl $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: andl $123456, (%rdi) # encoding: [0x81,0x27,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %and = and i32 %t, 123456 @@ -585,8 +611,9 @@ entry: define void @and64mi_legacy(ptr %a) { ; CHECK-LABEL: and64mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: andq $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: andq $123456, (%rdi) # encoding: [0x48,0x81,0x27,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %and = and i64 %t, 123456 diff --git a/llvm/test/CodeGen/X86/apx/or.ll b/llvm/test/CodeGen/X86/apx/or.ll index abd7405..1219e74 100644 --- a/llvm/test/CodeGen/X86/apx/or.ll +++ b/llvm/test/CodeGen/X86/apx/or.ll @@ -1,12 +1,12 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @or8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: or8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl %esi, %edi, %eax +; CHECK-NEXT: orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i8 %a, %b ret i8 %or @@ -15,9 +15,9 @@ entry: define i16 @or16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: or16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl %esi, %edi, %eax +; CHECK-NEXT: orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i16 %a, %b ret i16 %or @@ -26,8 +26,8 @@ entry: define i32 @or32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: or32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i32 %a, %b ret i32 %or @@ -36,8 +36,8 @@ entry: define i64 @or64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: or64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: orq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x09,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i64 %a, %b ret i64 %or @@ -46,8 +46,8 @@ entry: define i8 @or8rm(i8 noundef %a, ptr %b) { ; CHECK-LABEL: or8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: orb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x0a,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i8, ptr %b %or = or i8 %a, %t @@ -57,8 +57,8 @@ entry: define i16 @or16rm(i16 noundef %a, ptr %b) { ; CHECK-LABEL: or16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: orw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x0b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i16, ptr %b %or = or i16 %a, %t @@ -68,8 +68,8 @@ entry: define i32 @or32rm(i32 noundef %a, ptr %b) { ; CHECK-LABEL: or32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: orl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x0b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i32, ptr %b %or = or i32 %a, %t @@ -79,8 +79,8 @@ entry: define i64 @or64rm(i64 noundef %a, ptr %b) { ; CHECK-LABEL: or64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: orq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x0b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i64, ptr %b %or = or i64 %a, %t @@ -90,9 +90,9 @@ entry: define i16 @or16ri8(i16 noundef %a) { ; CHECK-LABEL: or16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123, %edi, %eax +; CHECK-NEXT: orl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xcf,0x7b,0x00,0x00,0x00] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i16 %a, 123 ret i16 %or @@ -101,8 +101,8 @@ entry: define i32 @or32ri8(i32 noundef %a) { ; CHECK-LABEL: or32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xcf,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i32 %a, 123 ret i32 %or @@ -111,8 +111,8 @@ entry: define i64 @or64ri8(i64 noundef %a) { ; CHECK-LABEL: or64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq $123, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xcf,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i64 %a, 123 ret i64 %or @@ -121,8 +121,8 @@ entry: define i8 @or8ri(i8 noundef %a) { ; CHECK-LABEL: or8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb $123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: orb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xcf,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i8 %a, 123 ret i8 %or @@ -131,9 +131,10 @@ entry: define i16 @or16ri(i16 noundef %a) { ; CHECK-LABEL: or16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $1234, %edi, %eax # imm = 0x4D2 +; CHECK-NEXT: orl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xcf,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i16 %a, 1234 ret i16 %or @@ -142,8 +143,9 @@ entry: define i32 @or32ri(i32 noundef %a) { ; CHECK-LABEL: or32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i32 %a, 123456 ret i32 %or @@ -152,8 +154,9 @@ entry: define i64 @or64ri(i64 noundef %a) { ; CHECK-LABEL: or64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq $123456, %rdi, %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %or = or i64 %a, 123456 ret i64 %or @@ -162,8 +165,8 @@ entry: define i8 @or8mr(ptr %a, i8 noundef %b) { ; CHECK-LABEL: or8mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb %sil, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: orb %sil, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x08,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %or = or i8 %t, %b @@ -173,8 +176,8 @@ entry: define i16 @or16mr(ptr %a, i16 noundef %b) { ; CHECK-LABEL: or16mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orw %si, (%rdi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: orw %si, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %or = or i16 %t, %b @@ -184,8 +187,8 @@ entry: define i32 @or32mr(ptr %a, i32 noundef %b) { ; CHECK-LABEL: or32mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl %esi, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: orl %esi, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %or = or i32 %t, %b @@ -195,8 +198,8 @@ entry: define i64 @or64mr(ptr %a, i64 noundef %b) { ; CHECK-LABEL: or64mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq %rsi, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: orq %rsi, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %or = or i64 %t, %b @@ -206,10 +209,10 @@ entry: define i16 @or16mi8(ptr %a) { ; CHECK-LABEL: or16mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: orl $123, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: orl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc8,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %or = or i16 %t, 123 @@ -219,8 +222,8 @@ entry: define i32 @or32mi8(ptr %a) { ; CHECK-LABEL: or32mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x0f,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %or = or i32 %t, 123 @@ -230,8 +233,8 @@ entry: define i64 @or64mi8(ptr %a) { ; CHECK-LABEL: or64mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq $123, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x0f,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %or = or i64 %t, 123 @@ -241,8 +244,8 @@ entry: define i8 @or8mi(ptr %a) { ; CHECK-LABEL: or8mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb $123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: orb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x0f,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %or = or i8 %t, 123 @@ -252,10 +255,11 @@ entry: define i16 @or16mi(ptr %a) { ; CHECK-LABEL: or16mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: orl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: orl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x0d,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %or = or i16 %t, 1234 @@ -265,8 +269,9 @@ entry: define i32 @or32mi(ptr %a) { ; CHECK-LABEL: or32mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123456, (%rdi), %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x0f,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %or = or i32 %t, 123456 @@ -276,8 +281,9 @@ entry: define i64 @or64mi(ptr %a) { ; CHECK-LABEL: or64mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq $123456, (%rdi), %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x0f,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %or = or i64 %t, 123456 @@ -289,11 +295,12 @@ entry: define i1 @orflag8rr(i8 %a, i8 %b) { ; CHECK-LABEL: orflag8rr: ; CHECK: # %bb.0: -; CHECK-NEXT: notb %sil, %al -; CHECK-NEXT: orb %al, %dil, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] +; CHECK-NEXT: orb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x08,0xc7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 %b, -1 %v0 = or i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -304,11 +311,12 @@ define i1 @orflag8rr(i8 %a, i8 %b) { define i1 @orflag16rr(i16 %a, i16 %b) { ; CHECK-LABEL: orflag16rr: ; CHECK: # %bb.0: -; CHECK-NEXT: notl %esi, %eax -; CHECK-NEXT: orw %ax, %di, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6] +; CHECK-NEXT: orw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x09,0xc7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 %b, -1 %v0 = or i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -319,10 +327,11 @@ define i1 @orflag16rr(i16 %a, i16 %b) { define i1 @orflag32rr(i32 %a, i32 %b) { ; CHECK-LABEL: orflag32rr: ; CHECK: # %bb.0: -; CHECK-NEXT: orl %esi, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orl %esi, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x09,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -332,10 +341,11 @@ define i1 @orflag32rr(i32 %a, i32 %b) { define i1 @orflag64rr(i64 %a, i64 %b) { ; CHECK-LABEL: orflag64rr: ; CHECK: # %bb.0: -; CHECK-NEXT: orq %rsi, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orq %rsi, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x09,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -345,11 +355,12 @@ define i1 @orflag64rr(i64 %a, i64 %b) { define i1 @orflag8rm(ptr %ptr, i8 %b) { ; CHECK-LABEL: orflag8rm: ; CHECK: # %bb.0: -; CHECK-NEXT: notb %sil, %al -; CHECK-NEXT: orb (%rdi), %al, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6] +; CHECK-NEXT: orb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x0a,0x07] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %xor = xor i8 %b, -1 %v0 = or i8 %a, %xor ; 0xff << 50 @@ -361,11 +372,12 @@ define i1 @orflag8rm(ptr %ptr, i8 %b) { define i1 @orflag16rm(ptr %ptr, i16 %b) { ; CHECK-LABEL: orflag16rm: ; CHECK: # %bb.0: -; CHECK-NEXT: notl %esi, %eax -; CHECK-NEXT: orw (%rdi), %ax, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6] +; CHECK-NEXT: orw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x0b,0x07] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %xor = xor i16 %b, -1 %v0 = or i16 %a, %xor ; 0xff << 50 @@ -377,10 +389,11 @@ define i1 @orflag16rm(ptr %ptr, i16 %b) { define i1 @orflag32rm(ptr %ptr, i32 %b) { ; CHECK-LABEL: orflag32rm: ; CHECK: # %bb.0: -; CHECK-NEXT: orl (%rdi), %esi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orl (%rdi), %esi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x0b,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %v0 = or i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 @@ -391,10 +404,11 @@ define i1 @orflag32rm(ptr %ptr, i32 %b) { define i1 @orflag64rm(ptr %ptr, i64 %b) { ; CHECK-LABEL: orflag64rm: ; CHECK: # %bb.0: -; CHECK-NEXT: orq (%rdi), %rsi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orq (%rdi), %rsi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x0b,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %v0 = or i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 @@ -405,10 +419,11 @@ define i1 @orflag64rm(ptr %ptr, i64 %b) { define i1 @orflag8ri(i8 %a) { ; CHECK-LABEL: orflag8ri: ; CHECK: # %bb.0: -; CHECK-NEXT: orb $-124, %dil, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xcf,0x84] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 123, -1 %v0 = or i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -419,10 +434,12 @@ define i1 @orflag8ri(i8 %a) { define i1 @orflag16ri(i16 %a) { ; CHECK-LABEL: orflag16ri: ; CHECK: # %bb.0: -; CHECK-NEXT: orw $-1235, %di, %cx # imm = 0xFB2D -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xcf,0x2d,0xfb] +; CHECK-NEXT: # imm = 0xFB2D +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 1234, -1 %v0 = or i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -433,10 +450,12 @@ define i1 @orflag16ri(i16 %a) { define i1 @orflag32ri(i32 %a) { ; CHECK-LABEL: orflag32ri: ; CHECK: # %bb.0: -; CHECK-NEXT: orl $123456, %edi, %ecx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123456, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i32 %a, 123456 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -446,10 +465,12 @@ define i1 @orflag32ri(i32 %a) { define i1 @orflag64ri(i64 %a) { ; CHECK-LABEL: orflag64ri: ; CHECK: # %bb.0: -; CHECK-NEXT: orq $123456, %rdi, %rcx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123456, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i64 %a, 123456 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -459,10 +480,11 @@ define i1 @orflag64ri(i64 %a) { define i1 @orflag16ri8(i16 %a) { ; CHECK-LABEL: orflag16ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: orw $-124, %di, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xcf,0x84,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 123, -1 %v0 = or i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -473,10 +495,11 @@ define i1 @orflag16ri8(i16 %a) { define i1 @orflag32ri8(i32 %a) { ; CHECK-LABEL: orflag32ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: orl $123, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xcf,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i32 %a, 123 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -486,10 +509,11 @@ define i1 @orflag32ri8(i32 %a) { define i1 @orflag64ri8(i64 %a) { ; CHECK-LABEL: orflag64ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: orq $123, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xcf,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = or i64 %a, 123 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -499,8 +523,8 @@ define i1 @orflag64ri8(i64 %a) { define void @or8mr_legacy(ptr %a, i8 noundef %b) { ; CHECK-LABEL: or8mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb %sil, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: orb %sil, (%rdi) # encoding: [0x40,0x08,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %or = or i8 %t, %b @@ -511,8 +535,8 @@ entry: define void @or16mr_legacy(ptr %a, i16 noundef %b) { ; CHECK-LABEL: or16mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orw %si, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: orw %si, (%rdi) # encoding: [0x66,0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %or = or i16 %t, %b @@ -523,8 +547,8 @@ entry: define void @or32mr_legacy(ptr %a, i32 noundef %b) { ; CHECK-LABEL: or32mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl %esi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: orl %esi, (%rdi) # encoding: [0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %or = or i32 %t, %b @@ -535,8 +559,8 @@ entry: define void @or64mr_legacy(ptr %a, i64 noundef %b) { ; CHECK-LABEL: or64mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq %rsi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: orq %rsi, (%rdi) # encoding: [0x48,0x09,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %or = or i64 %t, %b @@ -547,8 +571,8 @@ entry: define void @or8mi_legacy(ptr %a) { ; CHECK-LABEL: or8mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orb $123, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: orb $123, (%rdi) # encoding: [0x80,0x0f,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %or = or i8 %t, 123 @@ -559,8 +583,9 @@ entry: define void @or16mi_legacy(ptr %a) { ; CHECK-LABEL: or16mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orw $1234, (%rdi) # imm = 0x4D2 -; CHECK-NEXT: retq +; CHECK-NEXT: orw $1234, (%rdi) # encoding: [0x66,0x81,0x0f,0xd2,0x04] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %or = or i16 %t, 1234 @@ -571,8 +596,9 @@ entry: define void @or32mi_legacy(ptr %a) { ; CHECK-LABEL: or32mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orl $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orl $123456, (%rdi) # encoding: [0x81,0x0f,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %or = or i32 %t, 123456 @@ -583,8 +609,9 @@ entry: define void @or64mi_legacy(ptr %a) { ; CHECK-LABEL: or64mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: orq $123456, (%rdi) # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: orq $123456, (%rdi) # encoding: [0x48,0x81,0x0f,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %or = or i64 %t, 123456 diff --git a/llvm/test/CodeGen/X86/apx/sbb.ll b/llvm/test/CodeGen/X86/apx/sbb.ll index 256a1c7..7551935 100644 --- a/llvm/test/CodeGen/X86/apx/sbb.ll +++ b/llvm/test/CodeGen/X86/apx/sbb.ll @@ -1,12 +1,12 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @sbb8rr(i8 %a, i8 %b, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: sbbb %sil, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: sbbb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x18,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i8 %a, %b %k = icmp ugt i8 %x, %y %z = zext i1 %k to i8 @@ -17,9 +17,9 @@ define i8 @sbb8rr(i8 %a, i8 %b, i8 %x, i8 %y) nounwind { define i16 @sbb16rr(i16 %a, i16 %b, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: sbbw %si, %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: sbbw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x19,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i16 %a, %b %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -30,9 +30,9 @@ define i16 @sbb16rr(i16 %a, i16 %b, i16 %x, i16 %y) nounwind { define i32 @sbb32rr(i32 %a, i32 %b, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: sbbl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: sbbl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x19,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i32 %a, %b %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -43,9 +43,9 @@ define i32 @sbb32rr(i32 %a, i32 %b, i32 %x, i32 %y) nounwind { define i64 @sbb64rr(i64 %a, i64 %b, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64rr: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: sbbq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: sbbq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x19,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i64 %a, %b %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -56,9 +56,9 @@ define i64 @sbb64rr(i64 %a, i64 %b, i64 %x, i64 %y) nounwind { define i8 @sbb8rm(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: sbbb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: sbbb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x1a,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = sub i8 %a, %b %k = icmp ugt i8 %x, %y @@ -70,9 +70,9 @@ define i8 @sbb8rm(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @sbb16rm(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: sbbw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: sbbw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x1b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = sub i16 %a, %b %k = icmp ugt i16 %x, %y @@ -84,9 +84,9 @@ define i16 @sbb16rm(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @sbb32rm(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: sbbl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: sbbl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x1b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = sub i32 %a, %b %k = icmp ugt i32 %x, %y @@ -98,9 +98,9 @@ define i32 @sbb32rm(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @sbb64rm(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64rm: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: sbbq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: sbbq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x1b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = sub i64 %a, %b %k = icmp ugt i64 %x, %y @@ -112,11 +112,11 @@ define i64 @sbb64rm(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { define i16 @sbb16ri8(i16 %a, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: sbbw $0, %di, %ax -; CHECK-NEXT: addl $-123, %eax +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: sbbw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xdf,0x00,0x00] +; CHECK-NEXT: addl $-123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x85] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i16 %a, 123 %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -127,10 +127,10 @@ define i16 @sbb16ri8(i16 %a, i16 %x, i16 %y) nounwind { define i32 @sbb32ri8(i32 %a, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: sbbl $0, %edi, %eax -; CHECK-NEXT: addl $-123, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: sbbl $0, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xdf,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addl $-123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i32 %a, 123 %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -141,10 +141,10 @@ define i32 @sbb32ri8(i32 %a, i32 %x, i32 %y) nounwind { define i64 @sbb64ri8(i64 %a, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: sbbq $0, %rdi, %rax -; CHECK-NEXT: addq $-123, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: sbbq $0, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xdf,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addq $-123, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xc0,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i64 %a, 123 %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -155,10 +155,10 @@ define i64 @sbb64ri8(i64 %a, i64 %x, i64 %y) nounwind { define i8 @sbb8ri(i8 %a, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %sil, %dl, %al -; CHECK-NEXT: sbbb $0, %dil, %al -; CHECK-NEXT: addb $-123, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf2] +; CHECK-NEXT: sbbb $0, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xdf,0x00] +; CHECK-NEXT: addb $-123, %al # EVEX TO LEGACY Compression encoding: [0x04,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i8 %a, 123 %k = icmp ugt i8 %x, %y %z = zext i1 %k to i8 @@ -169,11 +169,12 @@ define i8 @sbb8ri(i8 %a, i8 %x, i8 %y) nounwind { define i16 @sbb16ri(i16 %a, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: sbbw $0, %di, %ax -; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: sbbw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xdf,0x00,0x00] +; CHECK-NEXT: addl $-1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0x2e,0xfb,0xff,0xff] +; CHECK-NEXT: # imm = 0xFB2E ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i16 %a, 1234 %k = icmp ugt i16 %x, %y %z = zext i1 %k to i16 @@ -184,10 +185,11 @@ define i16 @sbb16ri(i16 %a, i16 %x, i16 %y) nounwind { define i32 @sbb32ri(i32 %a, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: sbbl $0, %edi, %eax -; CHECK-NEXT: addl $-123456, %eax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: sbbl $0, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xdf,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addl $-123456, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i32 %a, 123456 %k = icmp ugt i32 %x, %y %z = zext i1 %k to i32 @@ -198,10 +200,11 @@ define i32 @sbb32ri(i32 %a, i32 %x, i32 %y) nounwind { define i64 @sbb64ri(i64 %a, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64ri: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: sbbq $0, %rdi, %rax -; CHECK-NEXT: addq $-123456, %rax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: sbbq $0, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xdf,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addq $-123456, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] %s = sub i64 %a, 123456 %k = icmp ugt i64 %x, %y %z = zext i1 %k to i64 @@ -212,9 +215,9 @@ define i64 @sbb64ri(i64 %a, i64 %x, i64 %y) nounwind { define i8 @sbb8mr(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: sbbb %dil, (%rsi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: sbbb %dil, (%rsi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x18,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = sub i8 %b, %a %k = icmp ugt i8 %x, %y @@ -226,9 +229,9 @@ define i8 @sbb8mr(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @sbb16mr(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: sbbw %di, (%rsi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: sbbw %di, (%rsi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = sub i16 %b, %a %k = icmp ugt i16 %x, %y @@ -240,9 +243,9 @@ define i16 @sbb16mr(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @sbb32mr(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: sbbl %edi, (%rsi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: sbbl %edi, (%rsi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = sub i32 %b, %a %k = icmp ugt i32 %x, %y @@ -254,9 +257,9 @@ define i32 @sbb32mr(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @sbb64mr(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64mr: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: sbbq %rdi, (%rsi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: sbbq %rdi, (%rsi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = sub i64 %b, %a %k = icmp ugt i64 %x, %y @@ -268,11 +271,11 @@ define i64 @sbb64mr(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { define i16 @sbb16mi8(ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: sbbw $0, (%rdi), %ax -; CHECK-NEXT: addl $-123, %eax +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: sbbw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x1f,0x00,0x00] +; CHECK-NEXT: addl $-123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x85] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %s = sub i16 %a, 123 %k = icmp ugt i16 %x, %y @@ -284,10 +287,10 @@ define i16 @sbb16mi8(ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @sbb32mi8(ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: sbbl $0, (%rdi), %eax -; CHECK-NEXT: addl $-123, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: sbbl $0, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x1f,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addl $-123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %s = sub i32 %a, 123 %k = icmp ugt i32 %x, %y @@ -299,10 +302,10 @@ define i32 @sbb32mi8(ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @sbb64mi8(ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64mi8: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: sbbq $0, (%rdi), %rax -; CHECK-NEXT: addq $-123, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: sbbq $0, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x1f,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addq $-123, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xc0,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %s = sub i64 %a, 123 %k = icmp ugt i64 %x, %y @@ -314,10 +317,10 @@ define i64 @sbb64mi8(ptr %ptr, i64 %x, i64 %y) nounwind { define i8 @sbb8mi(ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %sil, %dl, %al -; CHECK-NEXT: sbbb $0, (%rdi), %al -; CHECK-NEXT: addb $-123, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf2] +; CHECK-NEXT: sbbb $0, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x1f,0x00] +; CHECK-NEXT: addb $-123, %al # EVEX TO LEGACY Compression encoding: [0x04,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %s = sub i8 %a, 123 %k = icmp ugt i8 %x, %y @@ -329,11 +332,12 @@ define i8 @sbb8mi(ptr %ptr, i8 %x, i8 %y) nounwind { define i16 @sbb16mi(ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %si, %dx, %ax -; CHECK-NEXT: sbbw $0, (%rdi), %ax -; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E +; CHECK-NEXT: subw %si, %dx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf2] +; CHECK-NEXT: sbbw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x1f,0x00,0x00] +; CHECK-NEXT: addl $-1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0x2e,0xfb,0xff,0xff] +; CHECK-NEXT: # imm = 0xFB2E ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %s = sub i16 %a, 1234 %k = icmp ugt i16 %x, %y @@ -345,10 +349,11 @@ define i16 @sbb16mi(ptr %ptr, i16 %x, i16 %y) nounwind { define i32 @sbb32mi(ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %esi, %edx, %eax -; CHECK-NEXT: sbbl $0, (%rdi), %eax -; CHECK-NEXT: addl $-123456, %eax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf2] +; CHECK-NEXT: sbbl $0, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x1f,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addl $-123456, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %s = sub i32 %a, 123456 %k = icmp ugt i32 %x, %y @@ -360,10 +365,11 @@ define i32 @sbb32mi(ptr %ptr, i32 %x, i32 %y) nounwind { define i64 @sbb64mi(ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64mi: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rsi, %rdx, %rax -; CHECK-NEXT: sbbq $0, (%rdi), %rax -; CHECK-NEXT: addq $-123456, %rax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf2] +; CHECK-NEXT: sbbq $0, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x1f,0x00,0x00,0x00,0x00] +; CHECK-NEXT: addq $-123456, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %s = sub i64 %a, 123456 %k = icmp ugt i64 %x, %y @@ -375,9 +381,9 @@ define i64 @sbb64mi(ptr %ptr, i64 %x, i64 %y) nounwind { define void @sbb8mr_legacy(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { ; CHECK-LABEL: sbb8mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subb %dl, %cl, %al -; CHECK-NEXT: sbbb %dil, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subb %dl, %cl, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xd1] +; CHECK-NEXT: sbbb %dil, (%rsi) # encoding: [0x40,0x18,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i8, ptr %ptr %s = sub i8 %b, %a %k = icmp ugt i8 %x, %y @@ -390,9 +396,9 @@ define void @sbb8mr_legacy(i8 %a, ptr %ptr, i8 %x, i8 %y) nounwind { define void @sbb16mr_legacy(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { ; CHECK-LABEL: sbb16mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subw %dx, %cx, %ax -; CHECK-NEXT: sbbw %di, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subw %dx, %cx, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xd1] +; CHECK-NEXT: sbbw %di, (%rsi) # encoding: [0x66,0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i16, ptr %ptr %s = sub i16 %b, %a %k = icmp ugt i16 %x, %y @@ -405,9 +411,9 @@ define void @sbb16mr_legacy(i16 %a, ptr %ptr, i16 %x, i16 %y) nounwind { define void @sbb32mr_legacy(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { ; CHECK-LABEL: sbb32mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subl %edx, %ecx, %eax -; CHECK-NEXT: sbbl %edi, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subl %edx, %ecx, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xd1] +; CHECK-NEXT: sbbl %edi, (%rsi) # encoding: [0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i32, ptr %ptr %s = sub i32 %b, %a %k = icmp ugt i32 %x, %y @@ -420,9 +426,9 @@ define void @sbb32mr_legacy(i32 %a, ptr %ptr, i32 %x, i32 %y) nounwind { define void @sbb64mr_legacy(i64 %a, ptr %ptr, i64 %x, i64 %y) nounwind { ; CHECK-LABEL: sbb64mr_legacy: ; CHECK: # %bb.0: -; CHECK-NEXT: subq %rdx, %rcx, %rax -; CHECK-NEXT: sbbq %rdi, (%rsi) -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rdx, %rcx, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xd1] +; CHECK-NEXT: sbbq %rdi, (%rsi) # encoding: [0x48,0x19,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] %b = load i64, ptr %ptr %s = sub i64 %b, %a %k = icmp ugt i64 %x, %y diff --git a/llvm/test/CodeGen/X86/apx/sub.ll b/llvm/test/CodeGen/X86/apx/sub.ll index 862d17a..aaf45c6 100644 --- a/llvm/test/CodeGen/X86/apx/sub.ll +++ b/llvm/test/CodeGen/X86/apx/sub.ll @@ -1,11 +1,11 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @sub8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: sub8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subb %sil, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i8 %a, %b ret i8 %sub @@ -14,9 +14,9 @@ entry: define i16 @sub16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: sub16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subl %esi, %edi, %eax +; CHECK-NEXT: subl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf7] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i16 %a, %b ret i16 %sub @@ -25,8 +25,8 @@ entry: define i32 @sub32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: sub32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i32 %a, %b ret i32 %sub @@ -35,8 +35,8 @@ entry: define i64 @sub64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: sub64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i64 %a, %b ret i64 %sub @@ -45,8 +45,8 @@ entry: define i8 @sub8rm(i8 noundef %a, ptr %ptr) { ; CHECK-LABEL: sub8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x2a,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i8, ptr %ptr %sub = sub i8 %a, %b @@ -56,8 +56,8 @@ entry: define i16 @sub16rm(i16 noundef %a, ptr %ptr) { ; CHECK-LABEL: sub16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: subw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x2b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i16, ptr %ptr %sub = sub i16 %a, %b @@ -67,8 +67,8 @@ entry: define i32 @sub32rm(i32 noundef %a, ptr %ptr) { ; CHECK-LABEL: sub32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x2b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i32, ptr %ptr %sub = sub i32 %a, %b @@ -78,8 +78,8 @@ entry: define i64 @sub64rm(i64 noundef %a, ptr %ptr) { ; CHECK-LABEL: sub64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x2b,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %b = load i64, ptr %ptr %sub = sub i64 %a, %b @@ -89,9 +89,9 @@ entry: define i16 @sub16ri8(i16 noundef %a) { ; CHECK-LABEL: sub16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123, %edi, %eax +; CHECK-NEXT: addl $-123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x85,0xff,0xff,0xff] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i16 %a, 123 ret i16 %sub @@ -100,8 +100,8 @@ entry: define i32 @sub32ri8(i32 noundef %a) { ; CHECK-LABEL: sub32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $-123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x85,0xff,0xff,0xff] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i32 %a, 123 ret i32 %sub @@ -110,8 +110,8 @@ entry: define i64 @sub64ri8(i64 noundef %a) { ; CHECK-LABEL: sub64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $-123, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $-123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x85,0xff,0xff,0xff] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i64 %a, 123 ret i64 %sub @@ -120,8 +120,8 @@ entry: define i8 @sub8ri(i8 noundef %a) { ; CHECK-LABEL: sub8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $-123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb $-123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i8 %a, 123 ret i8 %sub @@ -130,9 +130,10 @@ entry: define i16 @sub16ri(i16 noundef %a) { ; CHECK-LABEL: sub16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-1234, %edi, %eax # imm = 0xFB2E +; CHECK-NEXT: addl $-1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x2e,0xfb,0xff,0xff] +; CHECK-NEXT: # imm = 0xFB2E ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i16 %a, 1234 ret i16 %sub @@ -141,8 +142,9 @@ entry: define i32 @sub32ri(i32 noundef %a) { ; CHECK-LABEL: sub32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123456, %edi, %eax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $-123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i32 %a, 123456 ret i32 %sub @@ -151,8 +153,9 @@ entry: define i64 @sub64ri(i64 noundef %a) { ; CHECK-LABEL: sub64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $-123456, %rdi, %rax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $-123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = sub i64 %a, 123456 ret i64 %sub @@ -161,8 +164,8 @@ entry: define i8 @sub8mr(ptr %a, i8 noundef %b) { ; CHECK-LABEL: sub8mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subb %sil, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %sub = sub nsw i8 %t, %b @@ -172,10 +175,10 @@ entry: define i16 @sub16mr(ptr %a, i16 noundef %b) { ; CHECK-LABEL: sub16mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: subl %esi, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: subl %esi, %eax # EVEX TO LEGACY Compression encoding: [0x29,0xf0] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %sub = sub nsw i16 %t, %b @@ -185,8 +188,8 @@ entry: define i32 @sub32mr(ptr %a, i32 noundef %b) { ; CHECK-LABEL: sub32mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subl %esi, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %sub = sub nsw i32 %t, %b @@ -196,8 +199,8 @@ entry: define i64 @sub64mr(ptr %a, i64 noundef %b) { ; CHECK-LABEL: sub64mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subq %rsi, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %sub = sub nsw i64 %t, %b @@ -207,10 +210,10 @@ entry: define i16 @sub16mi8(ptr %a) { ; CHECK-LABEL: sub16mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: addl $-123, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: addl $-123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x85] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %sub = sub nsw i16 %t, 123 @@ -220,8 +223,8 @@ entry: define i32 @sub32mi8(ptr %a) { ; CHECK-LABEL: sub32mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: addl $-123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0x85,0xff,0xff,0xff] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %sub = sub nsw i32 %t, 123 @@ -231,8 +234,8 @@ entry: define i64 @sub64mi8(ptr %a) { ; CHECK-LABEL: sub64mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $-123, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: addq $-123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0x85,0xff,0xff,0xff] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %sub = sub nsw i64 %t, 123 @@ -242,8 +245,8 @@ entry: define i8 @sub8mi(ptr %a) { ; CHECK-LABEL: sub8mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $-123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: addb $-123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x07,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %sub = sub nsw i8 %t, 123 @@ -253,10 +256,11 @@ entry: define i16 @sub16mi(ptr %a) { ; CHECK-LABEL: sub16mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: addl $-1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0x2e,0xfb,0xff,0xff] +; CHECK-NEXT: # imm = 0xFB2E ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %sub = sub nsw i16 %t, 1234 @@ -266,8 +270,9 @@ entry: define i32 @sub32mi(ptr %a) { ; CHECK-LABEL: sub32mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123456, (%rdi), %eax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $-123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %sub = sub nsw i32 %t, 123456 @@ -277,8 +282,9 @@ entry: define i64 @sub64mi(ptr %a) { ; CHECK-LABEL: sub64mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $-123456, (%rdi), %rax # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $-123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %sub = sub nsw i64 %t, 123456 @@ -293,12 +299,12 @@ declare i64 @llvm.usub.sat.i64(i64, i64) define i8 @subflag8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: subflag8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subb %sil, %dil, %al -; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x28,0xf7] +; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i8 @llvm.usub.sat.i8(i8 %a, i8 %b) ret i8 %sub @@ -307,11 +313,11 @@ entry: define i16 @subflag16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: subflag16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subw %si, %di, %ax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x29,0xf7] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i16 @llvm.usub.sat.i16(i16 %a, i16 %b) ret i16 %sub @@ -320,10 +326,10 @@ entry: define i32 @subflag32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: subflag32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subl %esi, %edi, %eax -; CHECK-NEXT: cmovbl %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x29,0xf7] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i32 @llvm.usub.sat.i32(i32 %a, i32 %b) ret i32 %sub @@ -332,10 +338,10 @@ entry: define i64 @subflag64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: subflag64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: subq %rsi, %rdi, %rcx -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0] +; CHECK-NEXT: subq %rsi, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x29,0xf7] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i64 @llvm.usub.sat.i64(i64 %a, i64 %b) ret i64 %sub @@ -344,12 +350,12 @@ entry: define i8 @subflag8rm(i8 noundef %a, ptr %b) { ; CHECK-LABEL: subflag8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subb (%rsi), %dil, %al -; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x2a,0x3e] +; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i8, ptr %b %sub = call i8 @llvm.usub.sat.i8(i8 %a, i8 %t) @@ -359,11 +365,11 @@ entry: define i16 @subflag16rm(i16 noundef %a, ptr %b) { ; CHECK-LABEL: subflag16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subw (%rsi), %di, %ax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x2b,0x3e] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i16, ptr %b %sub = call i16 @llvm.usub.sat.i16(i16 %a, i16 %t) @@ -373,10 +379,10 @@ entry: define i32 @subflag32rm(i32 noundef %a, ptr %b) { ; CHECK-LABEL: subflag32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subl (%rsi), %edi, %eax -; CHECK-NEXT: cmovbl %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x2b,0x3e] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i32, ptr %b %sub = call i32 @llvm.usub.sat.i32(i32 %a, i32 %t) @@ -386,10 +392,10 @@ entry: define i64 @subflag64rm(i64 noundef %a, ptr %b) { ; CHECK-LABEL: subflag64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: subq (%rsi), %rdi, %rcx -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0] +; CHECK-NEXT: subq (%rsi), %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x2b,0x3e] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i64, ptr %b %sub = call i64 @llvm.usub.sat.i64(i64 %a, i64 %t) @@ -399,11 +405,11 @@ entry: define i16 @subflag16ri8(i16 noundef %a) { ; CHECK-LABEL: subflag16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subw $123, %di, %ax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xef,0x7b,0x00] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i16 @llvm.usub.sat.i16(i16 %a, i16 123) ret i16 %sub @@ -412,10 +418,10 @@ entry: define i32 @subflag32ri8(i32 noundef %a) { ; CHECK-LABEL: subflag32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subl $123, %edi, %eax -; CHECK-NEXT: cmovbl %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xef,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i32 @llvm.usub.sat.i32(i32 %a, i32 123) ret i32 %sub @@ -424,10 +430,10 @@ entry: define i64 @subflag64ri8(i64 noundef %a) { ; CHECK-LABEL: subflag64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: subq $123, %rdi, %rcx -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0] +; CHECK-NEXT: subq $123, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xef,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i64 @llvm.usub.sat.i64(i64 %a, i64 123) ret i64 %sub @@ -436,12 +442,12 @@ entry: define i8 @subflag8ri(i8 noundef %a) { ; CHECK-LABEL: subflag8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subb $123, %dil, %al -; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xef,0x7b] +; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0] +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i8 @llvm.usub.sat.i8(i8 %a, i8 123) ret i8 %sub @@ -450,11 +456,12 @@ entry: define i16 @subflag16ri(i16 noundef %a) { ; CHECK-LABEL: subflag16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subw $1234, %di, %ax # imm = 0x4D2 -; CHECK-NEXT: cmovbl %ecx, %eax +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xef,0xd2,0x04] +; CHECK-NEXT: # imm = 0x4D2 +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i16 @llvm.usub.sat.i16(i16 %a, i16 1234) ret i16 %sub @@ -463,10 +470,11 @@ entry: define i32 @subflag32ri(i32 noundef %a) { ; CHECK-LABEL: subflag32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %ecx, %ecx -; CHECK-NEXT: subl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: cmovbl %ecx, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9] +; CHECK-NEXT: subl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xef,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: cmovbl %ecx, %eax # encoding: [0x0f,0x42,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i32 @llvm.usub.sat.i32(i32 %a, i32 123456) ret i32 %sub @@ -475,10 +483,11 @@ entry: define i64 @subflag64ri(i64 noundef %a) { ; CHECK-LABEL: subflag64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: subq $123456, %rdi, %rcx # imm = 0x1E240 -; CHECK-NEXT: cmovaeq %rcx, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0] +; CHECK-NEXT: subq $123456, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xef,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: cmovaeq %rcx, %rax # encoding: [0x48,0x0f,0x43,0xc1] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %sub = call i64 @llvm.usub.sat.i64(i64 %a, i64 123456) ret i64 %sub @@ -491,16 +500,19 @@ declare void @f() define void @sub64ri_reloc(i64 %val) { ; CHECK-LABEL: sub64ri_reloc: ; CHECK: # %bb.0: -; CHECK-NEXT: subq $val, %rdi, %rax -; CHECK-NEXT: jbe .LBB41_2 +; CHECK-NEXT: subq $val, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xef,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 6, value: val, kind: reloc_signed_4byte +; CHECK-NEXT: jbe .LBB41_2 # encoding: [0x76,A] +; CHECK-NEXT: # fixup A - offset: 1, value: .LBB41_2-1, kind: FK_PCRel_1 ; CHECK-NEXT: # %bb.1: # %t -; CHECK-NEXT: pushq %rax +; CHECK-NEXT: pushq %rax # encoding: [0x50] ; CHECK-NEXT: .cfi_def_cfa_offset 16 -; CHECK-NEXT: callq f@PLT -; CHECK-NEXT: popq %rax +; CHECK-NEXT: callq f@PLT # encoding: [0xe8,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 1, value: f@PLT-4, kind: FK_PCRel_4 +; CHECK-NEXT: popq %rax # encoding: [0x58] ; CHECK-NEXT: .cfi_def_cfa_offset 8 ; CHECK-NEXT: .LBB41_2: # %f -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] %cmp = icmp ugt i64 %val, ptrtoint (ptr @val to i64) br i1 %cmp, label %t, label %f @@ -515,8 +527,8 @@ f: define void @sub8mr_legacy(ptr %a, i8 noundef %b) { ; CHECK-LABEL: sub8mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subb %sil, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subb %sil, (%rdi) # encoding: [0x40,0x28,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %sub = sub i8 %t, %b @@ -527,8 +539,8 @@ entry: define void @sub16mr_legacy(ptr %a, i16 noundef %b) { ; CHECK-LABEL: sub16mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subw %si, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subw %si, (%rdi) # encoding: [0x66,0x29,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %sub = sub i16 %t, %b @@ -539,8 +551,8 @@ entry: define void @sub32mr_legacy(ptr %a, i32 noundef %b) { ; CHECK-LABEL: sub32mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subl %esi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subl %esi, (%rdi) # encoding: [0x29,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %sub = sub i32 %t, %b @@ -551,8 +563,8 @@ entry: define void @sub64mr_legacy(ptr %a, i64 noundef %b) { ; CHECK-LABEL: sub64mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: subq %rsi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: subq %rsi, (%rdi) # encoding: [0x48,0x29,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %sub = sub i64 %t, %b @@ -563,8 +575,8 @@ entry: define void @sub8mi_legacy(ptr %a) { ; CHECK-LABEL: sub8mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addb $-123, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: addb $-123, (%rdi) # encoding: [0x80,0x07,0x85] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %sub = sub nsw i8 %t, 123 @@ -575,8 +587,9 @@ entry: define void @sub16mi_legacy(ptr %a) { ; CHECK-LABEL: sub16mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addw $-1234, (%rdi) # imm = 0xFB2E -; CHECK-NEXT: retq +; CHECK-NEXT: addw $-1234, (%rdi) # encoding: [0x66,0x81,0x07,0x2e,0xfb] +; CHECK-NEXT: # imm = 0xFB2E +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %sub = sub nsw i16 %t, 1234 @@ -587,8 +600,9 @@ entry: define void @sub32mi_legacy(ptr %a) { ; CHECK-LABEL: sub32mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addl $-123456, (%rdi) # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addl $-123456, (%rdi) # encoding: [0x81,0x07,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %sub = sub nsw i32 %t, 123456 @@ -599,8 +613,9 @@ entry: define void @sub64mi_legacy(ptr %a) { ; CHECK-LABEL: sub64mi_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addq $-123456, (%rdi) # imm = 0xFFFE1DC0 -; CHECK-NEXT: retq +; CHECK-NEXT: addq $-123456, (%rdi) # encoding: [0x48,0x81,0x07,0xc0,0x1d,0xfe,0xff] +; CHECK-NEXT: # imm = 0xFFFE1DC0 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %sub = sub nsw i64 %t, 123456 diff --git a/llvm/test/CodeGen/X86/apx/xor.ll b/llvm/test/CodeGen/X86/apx/xor.ll index 980119c..d75f9f3 100644 --- a/llvm/test/CodeGen/X86/apx/xor.ll +++ b/llvm/test/CodeGen/X86/apx/xor.ll @@ -1,12 +1,12 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s define i8 @xor8rr(i8 noundef %a, i8 noundef %b) { ; CHECK-LABEL: xor8rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %esi, %edi, %eax +; CHECK-NEXT: xorl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0xf7] ; CHECK-NEXT: # kill: def $al killed $al killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i8 %a, %b ret i8 %xor @@ -15,9 +15,9 @@ entry: define i16 @xor16rr(i16 noundef %a, i16 noundef %b) { ; CHECK-LABEL: xor16rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %esi, %edi, %eax +; CHECK-NEXT: xorl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0xf7] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i16 %a, %b ret i16 %xor @@ -26,8 +26,8 @@ entry: define i32 @xor32rr(i32 noundef %a, i32 noundef %b) { ; CHECK-LABEL: xor32rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %esi, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i32 %a, %b ret i32 %xor @@ -36,8 +36,8 @@ entry: define i64 @xor64rr(i64 noundef %a, i64 noundef %b) { ; CHECK-LABEL: xor64rr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq %rsi, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x31,0xf7] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i64 %a, %b ret i64 %xor @@ -46,8 +46,8 @@ entry: define i8 @xor8rm(i8 noundef %a, ptr %b) { ; CHECK-LABEL: xor8rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorb (%rsi), %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: xorb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x32,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i8, ptr %b %xor = xor i8 %a, %t @@ -57,8 +57,8 @@ entry: define i16 @xor16rm(i16 noundef %a, ptr %b) { ; CHECK-LABEL: xor16rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorw (%rsi), %di, %ax -; CHECK-NEXT: retq +; CHECK-NEXT: xorw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x33,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i16, ptr %b %xor = xor i16 %a, %t @@ -68,8 +68,8 @@ entry: define i32 @xor32rm(i32 noundef %a, ptr %b) { ; CHECK-LABEL: xor32rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl (%rsi), %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x33,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i32, ptr %b %xor = xor i32 %a, %t @@ -79,8 +79,8 @@ entry: define i64 @xor64rm(i64 noundef %a, ptr %b) { ; CHECK-LABEL: xor64rm: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq (%rsi), %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x33,0x3e] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t = load i64, ptr %b %xor = xor i64 %a, %t @@ -90,9 +90,9 @@ entry: define i16 @xor16ri8(i16 noundef %a) { ; CHECK-LABEL: xor16ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $123, %edi, %eax +; CHECK-NEXT: xorl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xf7,0x7b,0x00,0x00,0x00] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i16 %a, 123 ret i16 %xor @@ -101,8 +101,8 @@ entry: define i32 @xor32ri8(i32 noundef %a) { ; CHECK-LABEL: xor32ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $123, %edi, %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xf7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i32 %a, 123 ret i32 %xor @@ -111,8 +111,8 @@ entry: define i64 @xor64ri8(i64 noundef %a) { ; CHECK-LABEL: xor64ri8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq $123, %rdi, %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xf7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i64 %a, 123 ret i64 %xor @@ -121,8 +121,8 @@ entry: define i8 @xor8ri(i8 noundef %a) { ; CHECK-LABEL: xor8ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorb $123, %dil, %al -; CHECK-NEXT: retq +; CHECK-NEXT: xorb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xf7,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i8 %a, 123 ret i8 %xor @@ -131,9 +131,10 @@ entry: define i16 @xor16ri(i16 noundef %a) { ; CHECK-LABEL: xor16ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $1234, %edi, %eax # imm = 0x4D2 +; CHECK-NEXT: xorl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xf7,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i16 %a, 1234 ret i16 %xor @@ -142,8 +143,9 @@ entry: define i32 @xor32ri(i32 noundef %a) { ; CHECK-LABEL: xor32ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $123456, %edi, %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xf7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i32 %a, 123456 ret i32 %xor @@ -152,8 +154,9 @@ entry: define i64 @xor64ri(i64 noundef %a) { ; CHECK-LABEL: xor64ri: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq $123456, %rdi, %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xf7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %xor = xor i64 %a, 123456 ret i64 %xor @@ -162,8 +165,8 @@ entry: define i8 @xor8mr(ptr %a, i8 noundef %b) { ; CHECK-LABEL: xor8mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorb %sil, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: xorb %sil, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x30,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %xor = xor i8 %t, %b @@ -173,8 +176,8 @@ entry: define i16 @xor16mr(ptr %a, i16 noundef %b) { ; CHECK-LABEL: xor16mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorw %si, (%rdi), %ax -; CHECK-NEXT: retq +; CHECK-NEXT: xorw %si, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %xor = xor i16 %t, %b @@ -184,8 +187,8 @@ entry: define i32 @xor32mr(ptr %a, i32 noundef %b) { ; CHECK-LABEL: xor32mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %esi, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %esi, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %xor = xor i32 %t, %b @@ -195,8 +198,8 @@ entry: define i64 @xor64mr(ptr %a, i64 noundef %b) { ; CHECK-LABEL: xor64mr: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq %rsi, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorq %rsi, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %xor = xor i64 %t, %b @@ -206,10 +209,10 @@ entry: define i16 @xor16mi8(ptr %a) { ; CHECK-LABEL: xor16mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: xorl $123, %eax +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: xorl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xf0,0x7b] ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %xor = xor i16 %t, 123 @@ -219,8 +222,8 @@ entry: define i32 @xor32mi8(ptr %a) { ; CHECK-LABEL: xor32mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $123, (%rdi), %eax -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x37,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %xor = xor i32 %t, 123 @@ -230,8 +233,8 @@ entry: define i64 @xor64mi8(ptr %a) { ; CHECK-LABEL: xor64mi8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq $123, (%rdi), %rax -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x37,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %xor = xor i64 %t, 123 @@ -241,8 +244,8 @@ entry: define i8 @xor8mi(ptr %a) { ; CHECK-LABEL: xor8mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorb $123, (%rdi), %al -; CHECK-NEXT: retq +; CHECK-NEXT: xorb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x37,0x7b] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %xor = xor i8 %t, 123 @@ -252,10 +255,11 @@ entry: define i16 @xor16mi(ptr %a) { ; CHECK-LABEL: xor16mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: movzwl (%rdi), %eax -; CHECK-NEXT: xorl $1234, %eax # imm = 0x4D2 +; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07] +; CHECK-NEXT: xorl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x35,0xd2,0x04,0x00,0x00] +; CHECK-NEXT: # imm = 0x4D2 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax -; CHECK-NEXT: retq +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %xor = xor i16 %t, 1234 @@ -265,8 +269,9 @@ entry: define i32 @xor32mi(ptr %a) { ; CHECK-LABEL: xor32mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl $123456, (%rdi), %eax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x37,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %xor = xor i32 %t, 123456 @@ -276,8 +281,9 @@ entry: define i64 @xor64mi(ptr %a) { ; CHECK-LABEL: xor64mi: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq $123456, (%rdi), %rax # imm = 0x1E240 -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x37,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %xor = xor i64 %t, 123456 @@ -289,11 +295,12 @@ entry: define i1 @xorflag8rr(i8 %a, i8 %b) { ; CHECK-LABEL: xorflag8rr: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl %edi, %esi, %eax -; CHECK-NEXT: xorb $-1, %al, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %edi, %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0xfe] +; CHECK-NEXT: xorb $-1, %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xf0,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 %b, -1 %v0 = xor i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -304,11 +311,12 @@ define i1 @xorflag8rr(i8 %a, i8 %b) { define i1 @xorflag16rr(i16 %a, i16 %b) { ; CHECK-LABEL: xorflag16rr: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl %edi, %esi, %eax -; CHECK-NEXT: xorw $-1, %ax, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %edi, %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x31,0xfe] +; CHECK-NEXT: xorw $-1, %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xf0,0xff,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 %b, -1 %v0 = xor i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -319,10 +327,11 @@ define i1 @xorflag16rr(i16 %a, i16 %b) { define i1 @xorflag32rr(i32 %a, i32 %b) { ; CHECK-LABEL: xorflag32rr: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl %esi, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %esi, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x31,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -332,10 +341,11 @@ define i1 @xorflag32rr(i32 %a, i32 %b) { define i1 @xorflag64rr(i64 %a, i64 %b) { ; CHECK-LABEL: xorflag64rr: ; CHECK: # %bb.0: -; CHECK-NEXT: xorq %rsi, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorq %rsi, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x31,0xf7] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -345,11 +355,12 @@ define i1 @xorflag64rr(i64 %a, i64 %b) { define i1 @xorflag8rm(ptr %ptr, i8 %b) { ; CHECK-LABEL: xorflag8rm: ; CHECK: # %bb.0: -; CHECK-NEXT: xorb (%rdi), %sil, %al -; CHECK-NEXT: xorb $-1, %al, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x32,0x37] +; CHECK-NEXT: xorb $-1, %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xf0,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i8, ptr %ptr %xor = xor i8 %b, -1 %v0 = xor i8 %a, %xor ; 0xff << 50 @@ -361,11 +372,12 @@ define i1 @xorflag8rm(ptr %ptr, i8 %b) { define i1 @xorflag16rm(ptr %ptr, i16 %b) { ; CHECK-LABEL: xorflag16rm: ; CHECK: # %bb.0: -; CHECK-NEXT: xorw (%rdi), %si, %ax -; CHECK-NEXT: xorw $-1, %ax, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x33,0x37] +; CHECK-NEXT: xorw $-1, %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xf0,0xff,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i16, ptr %ptr %xor = xor i16 %b, -1 %v0 = xor i16 %a, %xor ; 0xff << 50 @@ -377,10 +389,11 @@ define i1 @xorflag16rm(ptr %ptr, i16 %b) { define i1 @xorflag32rm(ptr %ptr, i32 %b) { ; CHECK-LABEL: xorflag32rm: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl (%rdi), %esi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl (%rdi), %esi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x33,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i32, ptr %ptr %v0 = xor i32 %a, %b ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 @@ -391,10 +404,11 @@ define i1 @xorflag32rm(ptr %ptr, i32 %b) { define i1 @xorflag64rm(ptr %ptr, i64 %b) { ; CHECK-LABEL: xorflag64rm: ; CHECK: # %bb.0: -; CHECK-NEXT: xorq (%rdi), %rsi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorq (%rdi), %rsi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x33,0x37] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %a = load i64, ptr %ptr %v0 = xor i64 %a, %b ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 @@ -405,10 +419,11 @@ define i1 @xorflag64rm(ptr %ptr, i64 %b) { define i1 @xorflag8ri(i8 %a) { ; CHECK-LABEL: xorflag8ri: ; CHECK: # %bb.0: -; CHECK-NEXT: xorb $-124, %dil, %cl -; CHECK-NEXT: sete %al -; CHECK-NEXT: movb %cl, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xf7,0x84] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i8 123, -1 %v0 = xor i8 %a, %xor ; 0xff << 50 %v1 = icmp eq i8 %v0, 0 @@ -419,10 +434,12 @@ define i1 @xorflag8ri(i8 %a) { define i1 @xorflag16ri(i16 %a) { ; CHECK-LABEL: xorflag16ri: ; CHECK: # %bb.0: -; CHECK-NEXT: xorw $-1235, %di, %cx # imm = 0xFB2D -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xf7,0x2d,0xfb] +; CHECK-NEXT: # imm = 0xFB2D +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 1234, -1 %v0 = xor i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -433,10 +450,12 @@ define i1 @xorflag16ri(i16 %a) { define i1 @xorflag32ri(i32 %a) { ; CHECK-LABEL: xorflag32ri: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl $123456, %edi, %ecx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123456, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xf7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i32 %a, 123456 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -446,10 +465,12 @@ define i1 @xorflag32ri(i32 %a) { define i1 @xorflag64ri(i64 %a) { ; CHECK-LABEL: xorflag64ri: ; CHECK: # %bb.0: -; CHECK-NEXT: xorq $123456, %rdi, %rcx # imm = 0x1E240 -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123456, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xf7,0x40,0xe2,0x01,0x00] +; CHECK-NEXT: # imm = 0x1E240 +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i64 %a, 123456 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -459,10 +480,11 @@ define i1 @xorflag64ri(i64 %a) { define i1 @xorflag16ri8(i16 %a) { ; CHECK-LABEL: xorflag16ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: xorw $-124, %di, %cx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movw %cx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xf7,0x84,0xff] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %xor = xor i16 123, -1 %v0 = xor i16 %a, %xor ; 0xff << 50 %v1 = icmp eq i16 %v0, 0 @@ -473,10 +495,11 @@ define i1 @xorflag16ri8(i16 %a) { define i1 @xorflag32ri8(i32 %a) { ; CHECK-LABEL: xorflag32ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: xorl $123, %edi, %ecx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movl %ecx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl $123, %edi, %ecx # encoding: [0x62,0xf4,0x74,0x18,0x81,0xf7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movl %ecx, d64(%rip) # encoding: [0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i32 %a, 123 ; 0xff << 50 %v1 = icmp eq i32 %v0, 0 store i32 %v0, ptr @d64 @@ -486,10 +509,11 @@ define i1 @xorflag32ri8(i32 %a) { define i1 @xorflag64ri8(i64 %a) { ; CHECK-LABEL: xorflag64ri8: ; CHECK: # %bb.0: -; CHECK-NEXT: xorq $123, %rdi, %rcx -; CHECK-NEXT: sete %al -; CHECK-NEXT: movq %rcx, d64(%rip) -; CHECK-NEXT: retq +; CHECK-NEXT: xorq $123, %rdi, %rcx # encoding: [0x62,0xf4,0xf4,0x18,0x81,0xf7,0x7b,0x00,0x00,0x00] +; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0] +; CHECK-NEXT: movq %rcx, d64(%rip) # encoding: [0x48,0x89,0x0d,A,A,A,A] +; CHECK-NEXT: # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte +; CHECK-NEXT: retq # encoding: [0xc3] %v0 = xor i64 %a, 123 ; 0xff << 50 %v1 = icmp eq i64 %v0, 0 store i64 %v0, ptr @d64 @@ -499,8 +523,8 @@ define i1 @xorflag64ri8(i64 %a) { define void @xor8mr_legacy(ptr %a, i8 noundef %b) { ; CHECK-LABEL: xor8mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorb %sil, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: xorb %sil, (%rdi) # encoding: [0x40,0x30,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i8, ptr %a %xor = xor i8 %t, %b @@ -511,8 +535,8 @@ entry: define void @xor16mr_legacy(ptr %a, i16 noundef %b) { ; CHECK-LABEL: xor16mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorw %si, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: xorw %si, (%rdi) # encoding: [0x66,0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i16, ptr %a %xor = xor i16 %t, %b @@ -523,8 +547,8 @@ entry: define void @xor32mr_legacy(ptr %a, i32 noundef %b) { ; CHECK-LABEL: xor32mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorl %esi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: xorl %esi, (%rdi) # encoding: [0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i32, ptr %a %xor = xor i32 %t, %b @@ -535,8 +559,8 @@ entry: define void @xor64mr_legacy(ptr %a, i64 noundef %b) { ; CHECK-LABEL: xor64mr_legacy: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xorq %rsi, (%rdi) -; CHECK-NEXT: retq +; CHECK-NEXT: xorq %rsi, (%rdi) # encoding: [0x48,0x31,0x37] +; CHECK-NEXT: retq # encoding: [0xc3] entry: %t= load i64, ptr %a %xor = xor i64 %t, %b |