packages feed

llvm-hs-pretty-0.4.0.0: tests/input/inst_bitwise.ll

; --- [ Bitwise instructions ] -------------------------------------------------

; ~~~ [ shl ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @shl_1() {
	; Plain instruction.
	%result = shl i32 21, 1
	ret i32 %result
}

define <2 x i32> @shl_2() {
	; Vector operands.
	%result = shl <2 x i32> <i32 21, i32 42>, <i32 1, i32 0>
	ret <2 x i32> %result
}

define i32 @shl_3() {
	; Overflow flags.
	%result = shl nsw nuw i32 21, 1
	ret i32 %result
}

define i32 @shl_4() {
	; Metadata.
	%result = shl i32 21, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

define i32 @shl_5() {
	; Full instruction.
	%result = shl nsw nuw i32 21, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

; ~~~ [ lshr ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @lshr_1() {
	; Plain instruction.
	%result = lshr i32 84, 1
	ret i32 %result
}

define <2 x i32> @lshr_2() {
	; Vector operands.
	%result = lshr <2 x i32> <i32 84, i32 42>, <i32 1, i32 0>
	ret <2 x i32> %result
}

define i32 @lshr_3() {
	; Exact.
	%result = lshr exact i32 84, 1
	ret i32 %result
}

define i32 @lshr_4() {
	; Metadata.
	%result = lshr i32 84, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

define i32 @lshr_5() {
	; Full instruction.
	%result = lshr exact i32 84, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

; ~~~ [ ashr ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @ashr_1() {
	; Plain instruction.
	%result = ashr i32 84, 1
	ret i32 %result
}

define <2 x i32> @ashr_2() {
	; Vector operands.
	%result = ashr <2 x i32> <i32 84, i32 42>, <i32 1, i32 0>
	ret <2 x i32> %result
}

define i32 @ashr_3() {
	; Exact.
	%result = ashr exact i32 84, 1
	ret i32 %result
}

define i32 @ashr_4() {
	; Metadata.
	%result = ashr i32 84, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

define i32 @ashr_5() {
	; Negative operand.
	%result = ashr i32 -84, 1
	ret i32 %result
}

define i32 @ashr_6() {
	; Full instruction.
	%result = ashr exact i32 84, 1, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

; ~~~ [ and ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @and_1() {
	; Plain instruction.
	%result = and i32 58, 239 ; 0b00111010 & 0b11101111
	ret i32 %result
}

define <2 x i32> @and_2() {
	; Vector operands.
	%result = and <2 x i32> <i32 58, i32 170>, <i32 239, i32 127> ; 0b00111010 & 0b11101111, 0b10101010 & 0b01111111
	ret <2 x i32> %result
}

define i32 @and_3() {
	; Metadata.
	%result = and i32 58, 239, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

; ~~~ [ or ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @or_1() {
	; Plain instruction.
	%result = or i32 10, 32 ; 0b00001010 | 0b0100000
	ret i32 %result
}

define <2 x i32> @or_2() {
	; Vector operands.
	%result = or <2 x i32> <i32 10, i32 40>, <i32 32, i32 2> ; 0b00001010 | 0b0100000, 0b00101000 & 0b00000010
	ret <2 x i32> %result
}

define i32 @or_3() {
	; Metadata.
	%result = or i32 10, 32, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}

; ~~~ [ xor ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

define i32 @xor_1() {
	; Plain instruction.
	%result = xor i32 255, 213 ; 0b11111111 ^ 0b11010101
	ret i32 %result
}

define <2 x i32> @xor_2() {
	; Vector operands.
	%result = xor <2 x i32> <i32 255, i32 123>, <i32 213, i32 81> ; 0b11111111 ^ 0b11010101, 0b01111011 ^ 0b01010001
	ret <2 x i32> %result
}

define i32 @xor_3() {
	; Metadata.
	%result = xor i32 255, 213, !foo !{!"bar"}, !baz !{!"qux"}
	ret i32 %result
}