[llvm] r347341 - [x86] add tests for 8-bit multiply with constant; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 20 11:45:54 PST 2018


Author: spatel
Date: Tue Nov 20 11:45:53 2018
New Revision: 347341

URL: http://llvm.org/viewvc/llvm-project?rev=347341&view=rev
Log:
[x86] add tests for 8-bit multiply with constant; NFC

This is based on the existing file for 16-bit. We also already have 32-bit and 64-bit variants.

Added:
    llvm/trunk/test/CodeGen/X86/mul-constant-i8.ll

Added: llvm/trunk/test/CodeGen/X86/mul-constant-i8.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mul-constant-i8.ll?rev=347341&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mul-constant-i8.ll (added)
+++ llvm/trunk/test/CodeGen/X86/mul-constant-i8.ll Tue Nov 20 11:45:53 2018
@@ -0,0 +1,475 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefix=X64
+
+define i8 @test_mul_by_1(i8 %x) {
+; X64-LABEL: test_mul_by_1:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 1
+  ret i8 %m
+}
+
+define i8 @test_mul_by_2(i8 %x) {
+; X64-LABEL: test_mul_by_2:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    addb %al, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 2
+  ret i8 %m
+}
+
+define i8 @test_mul_by_3(i8 %x) {
+; X64-LABEL: test_mul_by_3:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $3, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 3
+  ret i8 %m
+}
+
+define i8 @test_mul_by_4(i8 %x) {
+; X64-LABEL: test_mul_by_4:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shlb $2, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 4
+  ret i8 %m
+}
+
+define i8 @test_mul_by_5(i8 %x) {
+; X64-LABEL: test_mul_by_5:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $5, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 5
+  ret i8 %m
+}
+
+define i8 @test_mul_by_6(i8 %x) {
+; X64-LABEL: test_mul_by_6:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $6, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 6
+  ret i8 %m
+}
+
+define i8 @test_mul_by_7(i8 %x) {
+; X64-LABEL: test_mul_by_7:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $7, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 7
+  ret i8 %m
+}
+
+define i8 @test_mul_by_8(i8 %x) {
+; X64-LABEL: test_mul_by_8:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shlb $3, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 8
+  ret i8 %m
+}
+
+define i8 @test_mul_by_9(i8 %x) {
+; X64-LABEL: test_mul_by_9:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $9, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 9
+  ret i8 %m
+}
+
+define i8 @test_mul_by_10(i8 %x) {
+; X64-LABEL: test_mul_by_10:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $10, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 10
+  ret i8 %m
+}
+
+define i8 @test_mul_by_11(i8 %x) {
+; X64-LABEL: test_mul_by_11:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $11, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 11
+  ret i8 %m
+}
+
+define i8 @test_mul_by_12(i8 %x) {
+; X64-LABEL: test_mul_by_12:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $12, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 12
+  ret i8 %m
+}
+
+define i8 @test_mul_by_13(i8 %x) {
+; X64-LABEL: test_mul_by_13:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $13, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 13
+  ret i8 %m
+}
+
+define i8 @test_mul_by_14(i8 %x) {
+; X64-LABEL: test_mul_by_14:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $14, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 14
+  ret i8 %m
+}
+
+define i8 @test_mul_by_15(i8 %x) {
+; X64-LABEL: test_mul_by_15:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $15, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 15
+  ret i8 %m
+}
+
+define i8 @test_mul_by_16(i8 %x) {
+; X64-LABEL: test_mul_by_16:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shlb $4, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 16
+  ret i8 %m
+}
+
+define i8 @test_mul_by_17(i8 %x) {
+; X64-LABEL: test_mul_by_17:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $17, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 17
+  ret i8 %m
+}
+
+define i8 @test_mul_by_18(i8 %x) {
+; X64-LABEL: test_mul_by_18:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $18, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 18
+  ret i8 %m
+}
+
+define i8 @test_mul_by_19(i8 %x) {
+; X64-LABEL: test_mul_by_19:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $19, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 19
+  ret i8 %m
+}
+
+define i8 @test_mul_by_20(i8 %x) {
+; X64-LABEL: test_mul_by_20:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $20, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 20
+  ret i8 %m
+}
+
+define i8 @test_mul_by_21(i8 %x) {
+; X64-LABEL: test_mul_by_21:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $21, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 21
+  ret i8 %m
+}
+
+define i8 @test_mul_by_22(i8 %x) {
+; X64-LABEL: test_mul_by_22:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $22, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 22
+  ret i8 %m
+}
+
+define i8 @test_mul_by_23(i8 %x) {
+; X64-LABEL: test_mul_by_23:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $23, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 23
+  ret i8 %m
+}
+
+define i8 @test_mul_by_24(i8 %x) {
+; X64-LABEL: test_mul_by_24:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $24, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 24
+  ret i8 %m
+}
+
+define i8 @test_mul_by_25(i8 %x) {
+; X64-LABEL: test_mul_by_25:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $25, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 25
+  ret i8 %m
+}
+
+define i8 @test_mul_by_26(i8 %x) {
+; X64-LABEL: test_mul_by_26:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $26, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 26
+  ret i8 %m
+}
+
+define i8 @test_mul_by_27(i8 %x) {
+; X64-LABEL: test_mul_by_27:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $27, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 27
+  ret i8 %m
+}
+
+define i8 @test_mul_by_28(i8 %x) {
+; X64-LABEL: test_mul_by_28:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $28, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 28
+  ret i8 %m
+}
+
+define i8 @test_mul_by_29(i8 %x) {
+; X64-LABEL: test_mul_by_29:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $29, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 29
+  ret i8 %m
+}
+
+define i8 @test_mul_by_30(i8 %x) {
+; X64-LABEL: test_mul_by_30:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $30, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 30
+  ret i8 %m
+}
+
+define i8 @test_mul_by_31(i8 %x) {
+; X64-LABEL: test_mul_by_31:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $31, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 31
+  ret i8 %m
+}
+
+define i8 @test_mul_by_32(i8 %x) {
+; X64-LABEL: test_mul_by_32:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shlb $5, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 32
+  ret i8 %m
+}
+
+define i8 @test_mul_by_37(i8 %x) {
+; X64-LABEL: test_mul_by_37:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $37, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 37
+  ret i8 %m
+}
+
+define i8 @test_mul_by_41(i8 %x) {
+; X64-LABEL: test_mul_by_41:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $41, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 41
+  ret i8 %m
+}
+
+define i8 @test_mul_by_62(i8 %x) {
+; X64-LABEL: test_mul_by_62:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $62, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 62
+  ret i8 %m
+}
+
+define i8 @test_mul_by_66(i8 %x) {
+; X64-LABEL: test_mul_by_66:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $66, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 66
+  ret i8 %m
+}
+
+define i8 @test_mul_by_73(i8 %x) {
+; X64-LABEL: test_mul_by_73:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $73, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, 73
+  ret i8 %m
+}
+
+define i8 @test_mul_by_520(i8 %x) {
+; X64-LABEL: test_mul_by_520:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shlb $3, %al
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    retq
+  %m = mul i8 %x, 520
+  ret i8 %m
+}
+
+define i8 @test_mul_by_neg10(i8 %x) {
+; X64-LABEL: test_mul_by_neg10:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $-10, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, -10
+  ret i8 %m
+}
+
+define i8 @test_mul_by_neg36(i8 %x) {
+; X64-LABEL: test_mul_by_neg36:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    movb $-36, %cl
+; X64-NEXT:    # kill: def $al killed $al killed $eax
+; X64-NEXT:    mulb %cl
+; X64-NEXT:    retq
+  %m = mul i8 %x, -36
+  ret i8 %m
+}
+




More information about the llvm-commits mailing list