1 ; RUN: llc -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s 2 3 ; Check that the eon instruction is generated instead of eor,movn 4 define i64 @test1(i64 %a, i64 %b, i64 %c) { 5 ; CHECK-LABEL: test1: 6 ; CHECK: eon 7 ; CHECK: ret 8 entry: 9 %shl = shl i64 %b, 4 10 %neg = xor i64 %a, -1 11 %xor = xor i64 %shl, %neg 12 ret i64 %xor 13 } 14 15 ; Same check with mutliple uses of %neg 16 define i64 @test2(i64 %a, i64 %b, i64 %c) { 17 ; CHECK-LABEL: test2: 18 ; CHECK: eon 19 ; CHECK: eon 20 ; CHECK: lsl 21 ; CHECK: ret 22 entry: 23 %shl = shl i64 %b, 4 24 %neg = xor i64 %shl, -1 25 %xor = xor i64 %neg, %a 26 %xor1 = xor i64 %c, %neg 27 %shl2 = shl i64 %xor, %xor1 28 ret i64 %shl2 29 } 30